Hi jhonnystene,
I took a quick look at your engine, and got some feedback. Some of it based on your README:
At the end of doTick(), you need to put window.finishedDrawing = true; to tell the renderer that the frame is ready.
-
It would be better to make a function to do this functionality, something like “readyToRedraw()”, which internally does the same functionality. The reason for this being, in the future you might need to add some extra functionality, and it will automate to all games made with it. I suspect this will happen when physics are added (from what I can see you don’t have physics yet), as they sometimes run on a different rate than the rest of the game.
-
I noticed in your
World.java
file, you seem to assume a World will always have items and pickups. Wouldn’t it be better to let each World individually handle that? Or better yet create a new class that handles items and pickups, and let each user add that to their world or not. -
I also noticed on the same file, each world defines a backdrop with a constant width and height to 4096 which is always drawn on the screen. Is this intentional? That seems quite heavy, especially for low-end devices with small screen. It would be better to let each world decide if it needs a backdrop or not.
-
I like the organization of the docs, but it might be useful to also include the API of each object. For example on the Sprite documentation, it would be useful to have the functions needed to create a sprite, load an image into it, and interact with it. Users using your engine won’t be looking at the source code for that (most likely).
-
Unless I’ve missed it, it would be nice to have documentation which is complete instead of separated in files. I’ve used in the past texinfo which can compile to html, and be uploaded on a site.
This is very easy. If you’re using Eclipse or IntelliJ (which you really should be!) you just need to drag the “net” folder into the source folder for your game and import whatever packages you need.
- Assuming you want your engine to reach as many people as possible, this will be an obstacle. Some people like to use different tools and might still be interested in your engine.
Apart from these, I think the best way to find out what you engine needs, is to start making games with it. While making the game you might come up with ideas like “This took me a while to do, I want to improve it so its faster next time”, or “This object is too complicated to use, it might be better simplified”.
I hope these suggestions might help. I wouldn’t say these are needed before the first stable release, it’s difficult to define what a stable release is. If you mean a version that other people can use, the things that you definitely need are, clear documentation of how to use your engine, and make your engine ridiculously easy to use. The rest are just features that can be slowly added.
Good luck with your engine, hope it becomes big. Cheers from a fellow engine maker :)