h-uru / plasma Goto Github PK
View Code? Open in Web Editor NEWCyan Worlds's Plasma game engine
Home Page: http://h-uru.github.io/Plasma/
License: GNU General Public License v3.0
Cyan Worlds's Plasma game engine
Home Page: http://h-uru.github.io/Plasma/
License: GNU General Public License v3.0
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.
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.
Encrypting config files is just stupid, and it makes switching between internal and external clients painful.
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
This includes windows, GUIs, and input. Probably some other stuff too.
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:
I ran cppcheck -f through the entire Plasma project, and there were several small things that it picked up.
`[./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.
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.
afxres.h and pnglibconf.h are missing. They are needed to compile the client.
This likely requires changing almost every function to verify that it will work properly when compiled in 64-bit.
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.
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.
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)
The Uru Live version of graphics.ini is referenced. Do we really want this?
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.
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.
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.
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.
Both internal and external clients will crash if resource.dat is missing. Some sort of error dialog should be shown in this case.
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
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?
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.
An OpenGL pipeline implementation is one of the first steps towards porting the engine to other operating systems.
As mentioned.. since forever in the usual channels, I'd like to see:
Myst V style shader rendering support
custom shaders per hsGMaterial
The Scene Viewer functionality needs to be restored in the 3ds Max Plasma Plugin.
As reported at http://forum.guildofwriters.org/viewtopic.php?f=93&t=5447
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.
The Age Description Manager functionality needs to be restored in the 3ds Max Plasma Plugin.
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.
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.
Bullet is cross-platform and has a license compatible with Cyan's GPLV3. I also have experience with it.
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
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.
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.
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.
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.
All shadows for a single light source should be combined into a single texture so that they do not stack onto each other.
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.
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.
Python 2.3 is ANCIENT :(
ptMatrix44.getData() casts matrix fields to integer values - loss of data. ptMatrix44.setData() accepts only float values, throws error on integers.
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.
This will also allow generation of Makefiles, XCode projects, and MinGW makefiles.
International players would certainly appreciate the ability to type accented characters into chat without getting error messages.
important for synch
Stuff like HS_BUILD_FOR_WIN32 and HS_BUILD_FOR_UNIX should be automatically set via CMake.
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?
Another one of those cross-platform things
plUnifiedTime has been updated to use a 64-bit time value internally (when available), but its wire protocol is still 32-bit. At some point before 2038 the wire protocol should be updated.
Paradox already said he'd do this, this is just here so we can add it to a milestone
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.