(March 2018) Monthly WIP & Screenshot thread

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 also incorporated

buildscript {
    repositories {
    dependencies {
        // Replace $version with the current version
        classpath "com.smokejumperit.gradle.license:Gradle-License-Report:0.0.2"
apply plugin:'license-report'

to get all licenses for the libraries I use in my game in a neat report:


Continuing to work on morph animation.
This one was a challenge : bone animation + 53 different morph targets and up to 44 simultaneous morph.

Works nicely.

Source https://sketchfab.com/models/9fea6ffd67b840cb970f5b4570794709


I’m currently working on a multiplayer FPS engine (aiming to be like the Source engine but in Java :slight_smile: ). 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.


Hi fellow monkeys,

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.

and here some pictures:

all together:


Oh hey it’s Atlantis!

But seriously, awesome job on that terrain shader. It looks amazing.

Impressive! This should be in the next engine showcase to show what it is capable of :slight_smile:
Just like many of the other nice things posted in these awesome threads…

1 Like

You probably would have been better served with GoldMonkey

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 :slight_smile:


It has often been promised. Now it is there. You can find the video of papaspace here, I hope that you enjoy it:

Before I forget: The video has been produced on a Dell XPS 15 (2017) with a Nvidia 960m GPU in full resolution.

Additionally, I launched a website on http://papaspace.at. It is only a draft, but some basic information is already there.


Wow there are really stunning visuals in this video.
Very nice work. The scattering is really really good.

Thank you. Maybe that is why it took so long to get it right.


ok, but you said

While GoldMonkey is already implemented.

Light armor pants (and obvious lack of physics & gravity)

Heavy helmets


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:


Done a few things. First, a short-ish footage video (no sound):

Then, I spent a bit of time implementing the Totality library and you can now use a smartphone as game controller:

This is how it looks right now:


This look super addictive! Count me in when it gets released.

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.

1 Like

Yeah but I personally, am lazy.

Also the easiest way to get someone to tell the proper way to do something is to write something wrong on the internet. :smiley:

Works for stackoverflow answers as well.


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. :slight_smile: