Long time since I posted any update on my game development. But I have made progress lately and wanted to share it. It hasn’t been on the client-side, but rather I have worked on the server side on refactoring my project into three project:
Core (parent)
Interface (sub)
Modules (sub)
Assets (sub)
Jar/class files in a ‘modules’ folder below the Core-folder, gets loaded runtime if of the right type.
I then set up the various dependencies (Core depending on Interface, Modules depending on Interface), and when I build, I make sure to build the modules project and export it into the correct folder when building:
distributions {
main {
contents {
from(serverStartScript) {
into "bin"
}
into("bin/modules") {
from { project(':modules').jar }
}
}
}
}
When running the Core by itself, it provides an empty game world, based on Physics, Health, Attacks, Powerups etc. Very little happens. I moved several classes into ‘Interface’ in order for external developers to author modules against these classes only, with no core code in there. They only need to extend a class (BaseGameModule from the Interface project, extends AbstractGameSystem), hook onto events (from the interface project) if they want (SiO2 EventBus) and then create anything they want with basic Factories.
I also spent time implementing Ini4j, to be able to load settings via ini-files, as such:
I’m currently working on a multiplayer FPS engine (aiming to be like the Source engine but in Java ). Here’s a screen recording of me running two clients on one PC, of a game I created with it called Undercover Agent:-
Currently I’ve got authoratative server, lag-compensation, position interpolation, etc… I’m just creating games with it now to put it through it’s paces.
it has been a long time and i mostly was working improving my terrain shader and actually it went quite well. Additonally to that i achieved the following:
I implemented a static sky box and a dynamic version of it (Thanks to the environment camera).
I was forking the tonegod gui code and fixed a lot of issues and even nan while scrolling with scrollbar (not visible in images)
i made a pbr moon which relates niceley with sun state and correctly shows the configured moon direction and it even renders the shadow by the sun light.
I was able to get the texture array version of the height based and terrain lighting shader with pbr working and it shows a lot of benefit by a little cost of ~1-2% performance in comparison to regular version. One of the benefits is that i now create just one texture array and reuse this for all my terrains and just index with an offset (That was a lot of bit shoving to achieve that, but quite fun)
I was adding a nice variation to the textures of my terrains and it even switches between different tiling on close and distant view.
Impressive! This should be in the next engine showcase to show what it is capable of
Just like many of the other nice things posted in these awesome threads…
The game I am porting had ini files already, so I opted for Ini4j to make progress quickly. Can’t really see the big difference. You have tagging, but in the inifile, I can just do variable_tag and just parse those - perhaps you can enlighten me of the business case for me so I can be persuaded to switch
I’ve been pretty busy with bug fixes lately, but I spent some time to add a new spell modifier to Spoxel. You can now cause projectiles to bounce off the terrain:
Noice. I like that the black and white camera upgrades to a full color one. Perhaps an infrared camera as well? It would take some creative filtering though.
P.S. The easiest way to modify lemur’s default look is to open up the jar and replace the source textures, then edit the groovy definition for colors.
Eek… the easiest and best long-term way is to cut-paste the style files into your own style and just change the textures, fonts, whatever, there. Most of them inherit the background image from the same one or two definitions.
Then just load that style and set it as the default instead of the build in glass style.
Edit: glass style for core:
Add on styling for the lemur proto stuff:
For your own, you can merge them into one file if you use lemur proto.
Yes, my day job boss treats this as a real strategy to the point where he encourages other team mates to give bad answers to our questions just to stoke the fires.