This is my first fully-functional game built with JMonkeyEngine, JGoldRunner!
Dowload from here (at the releases):
Would have released this much, much sooner except for some browser issues that have plagued me the last year kept me from releasing. So this code is at least a year old now, and I have since moved on to other projects.
I wasn’t able to connect my local git repository to github (some issue with the firewall), so I have manually released the sources until I can resolve the issue.
I think there might be a bug in “Tutorial: Training 8”. Every time I try to play the level, I get a “Fatal Error” dialog that says “The level cannot be escaped from!”
A ladder is probably missing at the top of the level, making it impossible to beat the level. This can be easily fixed by editing the level to include that ladder.
May 04, 2023 1:08:41 PM com.jme3.app.LegacyApplication handleError
SEVERE: Uncaught exception thrown in Thread[jME3 Main,5,main]
java.lang.AssertionError
at com.jme3.scene.Spatial.updateWorldLightList(Spatial.java:589)
at com.jme3.scene.Node.updateGeometricState(Node.java:250)
at codex.goldrunner.editor.LevelEditorState.update(LevelEditorState.java:165)
at com.jme3.app.state.AppStateManager.update(AppStateManager.java:371)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:258)
at com.jme3.system.lwjgl.LwjglWindow.runLoop(LwjglWindow.java:622)
at com.jme3.system.lwjgl.LwjglWindow.run(LwjglWindow.java:711)
at java.base/java.lang.Thread.run(Thread.java:829)
Note: I built the app using JME 3.6.0-stable, so this is the failing assertion:
This game is cool. I also remember the days when I played this game for hours.
I love the game speed of this game. Most people make games too slow but this one is just right.
Well done.
Tentitive windows release.
It mostly involved including the File.seperator constant in all my File instances.
I finally got a pushing issue figured out, so the GitHub repository now contains the source code and assets. A proxy server was blocking the push, and it took longer than I expected to fix it.
Just a note: “/” works on all platforms, including windows. “\” only works on Windows.
I think I haven’t used the File.separator constant since the last time I let a user specify file paths (and then only when trying to compare one path to another). For everything else, “/” will work.
That is because the zip file separator is a part of the Unix file system specification, the forward slash won’t work with windows file systems outside zip files.
Not sure if this is correct. Are you certain about this?
From an Oracle blog post:
As a side note, in literal path strings, forward slashes (UNIX style) work properly on Microsoft Windows–based JVMs, but backslashes (Windows style) fail on UNIX-based JVMs. The flexibility on Windows JVMs is possible because a forward slash is not a legal character at the operating system level in Windows paths or filenames. Therefore, if the JVM sees the forward slash, it can safely swap that character for a backslash before handing the path to the Windows system. But if a backslash shows up in a literal path string in UNIX, it’s a legal—if rather odd—character in a UNIX pathname, so simply swapping would change a valid meaning.
Yes, the issue on jme3-alloc was original because of using the Unix File separator to construct an absolute file path on the Windows file system, the native code of jme3-alloc-logger also required me to use an escaped backslash as a file separator.
Maybe this statement means within JVM only (such as jar files and command line tools).
Cases where File.separator come up are when you are trying to do things like subtract or split paths from canonical files/paths… because of course that will be using native file separators.
Show me a case otherwise and I’ll show you how you misinterpreted it.
Yes, it’s a split path use-case, but that split-path use-case works fine with “/” for zip entries, but it didn’t for regular files on windows file systems.