I'm about to begin on the engine for the game I am making. However, I am quite uncertain how I should design it. I have heard lots about threaded games, component and asynchronous systems. I'm wondering which design will give the best performance using the LWJGL with a 2D game. I know that how I build it will greatly impact the performance. I just want to know what direction I should go in for the engine based on what has worked for others.
LWJGL is a tight wrapper around OpenGL. This means that best-practices, techniques and designs are rougly the same as any other language.
You have 2 options here:
- Write your own 2D engine with OpenGL
- Use a library for LWJGL like Slick. It will give you the basics like simple texture loading, font drawing and more.
If you are new to Java in general, it's a good idea to use a library, as you can focus more on the general Java programming instead of the OpenGL syntax. If you are completely new to Java though it's probably a better idea to do some normal Java programming first. Making a game is not a simple thing, especially if you are going to make the engine yourself. You will need to use alot of OOP, and you definitely need programming experience.
A good video tutorial series about Slick 2D: EddieVanHalen98 (youtube).
The exact techniques and designs depend on the type of game, and the scale of it. Your question is too broad for this site. As Sean said, start with your code, profile your code, and come back here for more specific questions.