LibGDX game jam first weekend

This weekend have I set up the project, I have started to use Artemis. This is my first time so I’m little lost how big every component should be and how big every system should be. You can find all the code on my GitHub page, and you can find all my planing on trello. I don’t have any direkt graphics yet. But it is the next thing for me.

Main core class

I like to be able to change screen very easy so in my main class I add all my screens as public and then in the constractor on every screen I addÂ my main core class. I also have some objects that all the screens need. I have the viewport/camera and batch public also for easy access.

// One batch
public SpriteBatch batch;
// One camera, orthographic to handle 2d, and a viewport
public Camera camera;
public Viewport viewport;
// Arthemis gameworld
public World arthWorld;
// Screens
public SplashScreen splashScreen;
public GameScreen gameScreen;
// Handle all assets
public AssetManager assetManager;

All the creation of objects are stright forward. I create all my screens, easy to add more. I add my camera and move it so 0,0 are in the bottom left corner and not center screen. I haven’t decided what viewport I should use yet so I use a streatched viewport to start with.
In the config for artemis I’m adding my own invocation strategy class. This is so I can keep a steady update on all my logic systems and run as fast as I can on my other systems (render for example). The number in my systems (should be a private final value) are the FPS I want to simulate everything in, in my case 20 FPS. I’m thinking if I have time to make it a network game and then I don’t want the logic to be to fast but Still have the render look smooth.

For my render system I did a general sorting system that make it able to sort all my assets on the Z value. This make it easyer to display things in the correct order. I wanted to send a Comparable argument into the constructor but I couldn’t get that to work. So I had to make a setComparator method. It’s not as elegant but it works.

Nothing strange with the other systems. They have a small task on there hand. At the moment I’m thinking how I should get the input system to work in a good way. I’m little confused how I should do it. I have a kinda working solution. It’s easy to change othervise.