The XIONUM engine is developed in Java, currently for OpenJDK 11. All visual components consist of adapted swing components. This keeps the engine lightweight and lean. To render the output image i use six Layers, four of them can edited with the editor.
The layers are:
- Background Layer 1
- Background Layer 2
- Background Layer 3
- Sprites / Items
- Foreground Layer 1
The Sprite- and Itemlayer can only be used from the renderer to put gameobjects in the output image. Event handling is managed at the action layer. If the player wants to interact with an object, the action layer knows what role the object has and will do the necessary actions.
When programming, I pay close attention to performance. So it happens from time to time that I replace or reject whole program parts if I am not satisfied with my implementation. So I set myself benchmarks for certain things. For example, a game tick cannot last longer than 20 milliseconds. If it lasts longer, it must either be broken down into small tasks or optimized.
In order to benefit from current multi-core processors, I rely heavily on concurrency.
In this way, processes run completely independently, but they will be monitored and killed if they start to do weird things.