Code Monkey home page Code Monkey logo

plasma's Introduction

Plasma

CI

A CMake-based fork of the GPLv3-licensed CyanWorlds.com Engine (Headspin/Plasma), with a focus on bug-fixes, cross-platform compatibility, and enhanced features.

For more information on Myst Online, see http://mystonline.com/developers/

Related Projects

  • dirtsand - An open-source Plasma-compatible server project.
  • moul-assets - MOUL game assets repository.

Library Dependencies

Plasma currently requires the following third-party libraries:

The following libraries are optional:

All required libraries are available as vcpkg ports or can be built using their individual build instructions.

Compiling & Running Instructions

The Plasma development site includes steps for compiling and running the client.

You can also download pre-built artifacts from our last successful automated build on GitHub.

Additional Information

There are lots of opportunities to get involved! Find out how you can get involved and help improve Uru for everyone.

About Non-Free Libraries

This software uses some non-free libraries for which exceptions appear in the source code license inserts. It is suggested that anyone who thinks of doing substantial further work on this program should first free it from dependence on the non-free libraries so that it does the same job without the non-free libraries. Further introduction of non-free libraries likely would require a revised license and thus permission from all contributors to the codebase. That being problematic, any additional non-free libraries are unlikely to be accepted by Cyan Worlds or the development community.

Acknowledgements

OPENSSL

This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/). This product includes cryptographic software written by Eric A. Young ([email protected]). This product includes software written by Tim J. Hudson ([email protected]).

Independent JPEG Group (IJG) JPEG Library

This software is based in part on the work of the Independent JPEG Group.

plasma's People

Contributors

abigailbuccaneer avatar ametist365 avatar boq avatar branan avatar christophers avatar colincornaby avatar cwalther avatar deledrius avatar dgelessus avatar diafero avatar doobesuru avatar dpogue avatar durinmephit avatar ehrencg avatar estherbolik avatar filtik avatar hazado avatar hoikas avatar jfmherokiller avatar lunanne avatar lyrositor avatar michellacoste avatar mystler avatar nadnerbd avatar patmauro avatar philippelatulippe avatar skoader avatar v1nc3ntm avatar zarothye avatar zrax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plasma's Issues

Proper linking framework

Linking in Uru is a pure mess, and being able to do it via Python or using a responder doesn't make things better. In the end, everything needed to link to an age should be the age filename, the spawn point name, and optionally a GUID if a specific instance is desired. The rest should then be done automatically and safe (so invalid linking requests are aborted, no vault issues).
For Offline KI, I implemented a system that does this, except for the GUID - but since that essentially just disables some age finding automatisms, it should be easy to add. From all I learned, linking did not change very much for MOUL. This xLinkMgr relies on a configuration file (that could easily be embedded into the code though) to know which ages exist, what they are properly called, which linking rule they need (including sub-age relations), which spawn points exist (name and title) and what the default spawn point is. This information can then also be used to fill the Nexus, provide consistent age names in the KI and so on.

So, I suggest to include xLinkMgror an equivalent system into MOUL Python - and find some way to also sanitize links through plResponders. Is it possible to pass that through Python as well?

Re-enable Localization

There are XML files to handle L10n, but it's all hardcoded in the executable at the moment.

Combined with OHB's ULP project, we could add support for a number of languages.

Hg -> Git pull mangling file contents

Thanks Zrax for getting my cursors branch into Git!

I noticed however that some things in the added files appear to have gotten mangled in the process: e.g.

--- CWE-hg/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/res/making of cursors/blackwhite2rgba.py    2011-04-23 10:15:51.000000000 +0200
+++ CWE-git/Sources/Plasma/Apps/plClient/res/making of cursors/blackwhite2rgba.py   2011-04-23 10:24:36.000000000 +0200
@@ -3,7 +3,7 @@
 # Christian Walther 2011-04-21
 # Public Domain

-# blackwhite2rgba.py <imageonblack> <imageonwhite> <factor> <output>
+# blackwhite2rgba.py <imageonblack><imageonwhite><factor><output>
 #
 # - Read two opaque image files that have the same picture composited onto a
 #   black background and a white background.

or tabs being replaced by spaces.

For future Hg -> Git imports, is there anything you can do against that? If not, is there anything you can do to make it clear that the files you have in Git now are not my original files from Mercurial, but have been modified? Perhaps by making the modification in a separate changeset, or by noting it in the commit messages? The current state where the commit metadata is exactly my original one (except for the date), but the file contents are not, feels like a misrepresentation to me.

I’m OK with the modifications to my modifications in the files that I didn’t add but just modified (e.g. plPlates.cpp), since for those it is clear that what you did was not a straight pull but more like a rebase. Although perhaps in the big picture doing a pull (unmodified) and merge would have been clearer than a rebase.

Unusual behavior with shift+WASD or jumping

Using shift+w to run, you stop running after a moment. If capslock is on, shift+w to walk causes you to start running after a moment. Shift+arrow keys works fine.

If using shift to run, with either WASD or the arrow keys, if you jump, you will stop running upon landing if you still have space pressed down. Using capslock to run, having it pressed down doesn't matter, you continue running.

AVI glitch

Hi:
I'm new to GitHub, so bear with me if I do this wrong. This is a "down the road" issue that I might look into. It is a wish list/client issue. I noticed the internal client has a "AVIWrite" command which does not work, it would be great if I or someone more experienced could get it working. Then someone could make a Ki command to record movies in game! We would no longer have to rely on external tools.
-Jamie

Feature: Tab-completing names in chat

It would be useful to be able to tab-complete the names of other Age Players.

At the very least, it would be useful it tab didn't insert tab characters into the chat line.

Logs moved to C:\log

Somewhere between 53d8f4d and a7dbe3f, logs moved from _C:\Users\CWalther\AppData\Local\Uru Live\Log_ to _C:\log_. Was this intentional?

I suspect the cause is the following change in e2d4b12 (at least I seem to be able to restore the previous location by undoing it):

diff --git a/Sources/Plasma/PubUtilLib/plStatusLog/plStatusLog.cpp b/Sources/Plasma/PubUtilLib/plStatusLog/plStatusLog.cpp
index 501868c..096d419 100644
--- a/Sources/Plasma/PubUtilLib/plStatusLog/plStatusLog.cpp
+++ b/Sources/Plasma/PubUtilLib/plStatusLog/plStatusLog.cpp
@@ -91,7 +90,8 @@ plStatusLogMgr::plStatusLogMgr()
     fDrawer = nil;
     fLastLogChangeTime = 0;

-    PathGetLogDirectory(fBasePath, arrsize(fBasePath));
+    plFileUtils::ConcatFileName(fBasePath, L"log");
+    plFileUtils::EnsureFilePathExists(fBasePath);
 }

 plStatusLogMgr::~plStatusLogMgr()

fBasePath is "" before this, so it ends up as "\log".

I don’t have time right now to figure out what the proper solution is (maybe adding a non-Windows implementation of PathGetLogDirectory()?), so I’m just bringing it up for now.

I also just noticed that all log lines in the files (not those in the in-game log viewer) appear to be truncated to their first 4 characters after the timestamp, but I don’t have time to investigate that now.

Unimplemented VaultClientAPIs

There are a lot of "eric, implement me" and "eric, port me" assertions in plVaultClientApi. We should really implement these because (in some cases) pfPython uses some of this unimplemented functionality. When implementing them, we should really try not to block. Already entirely too much of the vault API blocks, which is responsible for most of the freezes in the client.

graphics.ini

The Uru Live version of graphics.ini is referenced. Do we really want this?

Support loading server keys from a file

Right now the server public keys are hardcoded, making it difficult to have a single build that can connect to multiple servers.

PlasmaClient has a mechanism for loading keys from a file, which branan has expressed an interest in porting over.

Use LZMA compression for downloading from FileSrv

I believe right now it uses .gz files with plZlibStream. 7zip offers better compression, especially if we can combine multiple files into a single archive.

Future ideas based on this support:

  • Compression of Python and SDL downloaded from server. Download a single archive that unpacks to the required multiple files.
  • Manifest-based archives. Rather than downloading each file, you could download all the files for an Age as a single archive.

Exiting Teledahn Elevator

Exiting the elevator on the second level of the shroom in Teledahn causes the avatar to fall through the floor and land on the roof of the spawn hut. Possibly related to a bad subworld exit region. This bug was observed on Cyan's MOULa Shard.

Remove pnUtils

pnUtils is some sort of crazy collection of crap that eap made just for MOUL. Much of his code duplicates already existing functionality in either the CoreLib or the C standard library. Furthermore, a good portion of it is Win32 only. We should work to remove of this duplicate, non-crossplatform code. In cases where he actually wrote something useful, the code should be most likely moved into CoreLib or another appropriate location.

Run mutiple clients

I would like to see a way to run multiple clients on the same computer for testing. If you comment out the code that prevents you from starting more then one client the game still crashes when you try and log in(choose an avatar) the second time. (there seems to be a resource conflict)

Small Resource leak

I ran cppcheck -f through the entire Plasma project, and there were several small things that it picked up.

plGImage

`[./Sources/Plasma/PubUtilLib/plGImage/plFont.cpp:1916]: (error) Resource leak: fp
The fp resource leak is caused by a return in a catch-all (...) statement, so the file resource was never freed(it was verified to exist before the try).

I looked through the 20ish reports that it came up with, but that one is the only definite one, where the others were mostly false alarms for when memory allocation fails.

Crash in PlasmaMax's GUIDialogComponent

To duplicate: create a GUI Dialog Component in PlasmaMax, attach it to one or more items, then view the details in the Component Util panel. Navigating away from the component's panel in any way will crash Max. It appears to happen while tearing down the dialog, leaving only the Color Scheme sub-panel visible during the mandatory program close.

Debugger reports an unhandled System.AccessViolationException.

Proper Unicode support

International players would certainly appreciate the ability to type accented characters into chat without getting error messages.

Artist Controlled Shader Support

As mentioned.. since forever in the usual channels, I'd like to see:

  1. Myst V style shader rendering support

  2. custom shaders per hsGMaterial

Re-license under modified GPLv3 + exceptions

For starters, please read http://forums.openuru.org/viewtopic.php?f=92&t=642 which is a post from Cyan Worlds's Mark DeForest, and contains the new licence text.
You can also read the full proposed licence text at https://gist.github.com/1290594

We believe that this re-licensing is a good thing and that it is essential to the continued development of open-source Plasma. In particular, this modified licence would allow us to distribute builds that link against PhysX and distribute updated versions of the 3DS Max plugin.

In order to go ahead with this, we need permission from everyone listed on https://github.com/H-uru/Plasma/contributors to relicense their code under the new licence.
Please respond below with a statement _clearly_ indicating if you will allow your code to be relicensed.

H-uru and OpenUru.org repositories are incompatible

Following the discussion in issue #21, I did some experiments and came to the conclusion that Hg-Git is a reliable way (possibly the only one) of losslessly moving commits back and forth between Mercurial and Git, i.e. without losing commit identity and getting duplicates. So far, so good.

So I set out, as an exercise, to merge my cursors branch from my clone of the OpenUru.org Mercurial repository into a clone of the H-uru Git repository – only to find that it doesn’t work. It doesn’t work because the two repositories share no history, they are completely independent from a version control point of view. Their first 7 revisions should be the same, but they aren’t. The difference is that the OpenUru.org one has a .hgignore file and the H-uru one doesn’t. This means that pulling from one into the other will pull in “duplicates” of these revisions, and branches based on one set can’t be merged with branches based on the other set because there is no common ancestor (more precisely, they conflict on every change to either side because the first common ancestor is the empty repository).

This is quite an unfortunate situation, I think. In a way, it means that what I always feared would happen sooner or later, that the H-uru Plasma repository would eventually turn into a permanent fork (in the traditional sense) without any hope of ever being able to share code with upstream again, has already happened from the outset.

The only way I can think of of fixing this is pulling (the original version of) these 7 revisions in again and rebasing everything else on them. I have succeeded in that at https://github.com/cwalther/Plasma (I think). However, an upstream rebase is quite an inconvenience to everyone who already has clones of the repository (with unmerged changes) and should not be done lightly.

Does anyone have a better idea?

MaxPlasmaLights crash on exit

MaxPlasmaLights.dlo crashes with a "pure virtual function call" error when 3ds Max closes. Sometimes the error dialog doesn't get displayed though. This error causes the 3dsmax.exe process to linger in the background like a creeper, only it doesn't explode. The call stack is deep inside the MSVC runtime, so it's pretty nasty.

Get rid of plUruLauncher

The starting phase of CWE with two binaries working together is needlessly complicated, not to mention all the duplicated code. The self-patching ability and the plClientPatcher should be moved to plClient and launched before showing the login dialogue (so that nothing changes for the user). Then we can also get rid of these hard-coded .exe filenames in the sources, I see no reason why we should not be able to call the executable the way we want without even recompiling.
The internal client can get a command-line option to skip the patching, to replicate the behaviour of directly calling plClient.

plDXPipeline assertion during start-up

When starting an internal debug client with the dat and sfx folders from current MOULa, the Python and SDL from moul-scripts/Python27, and DirtSand on the other side, I get an assertion during startup:
"plPipeline/plDXPipeline:4363
Allocation non-managed resource with managed resources alloc'd"
I can continue by clicking "Ignore", but obviously something is going wrong somewhere.

Improve shadow results

All shadows for a single light source should be combined into a single texture so that they do not stack onto each other.

Rewrite python glue code in C

The glue code at the bottom of all Python files is identical. This can be rewritten in C embedded in the executable to make Python development slightly less of a hassle for age scripters.

Write plGLPipeline

An OpenGL pipeline implementation is one of the first steps towards porting the engine to other operating systems.

Proper widescreen and multi-screen support

Right now plasma's widescreen resolution support is flakey at best. Would be nice to support multiple screen displays, too.

For example, FOV, along with KI-shot taking on 1080p is downright awful.

cmake-generated nmake file is missing jpeg.lib when linking plClient

I currently have the latest from this repository. After running cmake -G "NMake Makefiles" . in the root of the project, I end up with a broken build.make for plClient. It is missing the path to jpeg.lib in the section "Linking CXX executable plClient.exe". Adding the path to build.make manually works.

I have checked CMakeLists.txt, and it seems to be fine: target_link_libraries(plClient ${JPEG_LIBRARY})

In my CMakeCache.txt, JPEG_LIBRARY is properly defined.

The broken file in question: Plasma/Sources/Plasma/Apps/plClient/CMakeFiles/plClient.dir/build.make

The CmakeLists.txt which is used to generate it: Plasma/Sources/Plasma/Apps/plClient/CMakeLists.txt

I am using cmake 2.8.4 for windows.

Scene Viewer Broken

The Scene Viewer functionality needs to be restored in the 3ds Max Plasma Plugin.

Fix the 16:9 sqished issue

When using 16:9 resolutions game objects that are supposed to be square appear to be rectangles. They are longer then they are taller, the journey cloths are one example of this. I'm not sure who the best person to work on this is.

Make Plasma 64-bit compliant

This likely requires changing almost every function to verify that it will work properly when compiled in 64-bit.

Plasma Export Dialog Missing

It looks like with the GUI changes in newer versions of Max (read: 2011) the Max-7-style Plasma Export file menu option has been nuked from the plugin. Age creators can still export plasma files properly, but it is non-intuitive to use the standard Max Export dialog and select Plasma 2.0 as file type. Modifying the code to make the original Plasma Export Dialog accessible would greatly enhance the usability of the plugin.

console documentation is wrong

The console doc writer does not remove subcategories before appending a new category. This leads to incorrect documentation:

Graphics.Show.Bounds - Toggle object bounds display 
Graphics.Show.Renderer.ToggleRenderRequests - Toggles processing of pre- and post-render requests 

The correct documentation would be:

Graphics.Show.Bounds - Toggle object bounds display 
Graphics.Renderer.ToggleRenderRequests - Toggles processing of pre- and post-render requests 

Improve shadow efficiency

There is some DrawableSpan caching that can happen, rather than calculating spans on every frame, but there are probably a lot of other changes that can improve the efficiency of shadows.

Crash as logon

not sure if any one has this but on external build of the client will crash at logon if you check the save password box but runs fine if you leave it unchecked

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.