Mentor Needed!

Well, good on you for getting things regularly updated on Github. Consider adding a graphic image / snapshot to the README and a clear link to the executable JAR file. As mentioned consider opening a WIP post as that is the best place to provide ongoing advice / critique.

I’m certainly not against Java2D as likely what is actually required for a passing grade by this effort (smaller tech demo) can be fulfilled with it. It’ll be easy when keeping things orthographic and more involved to go isometric, but still possible. Libgdx and going the GL route you’ll likely have up to a 3 month learning curve though using libgdx takes a lot of the rough edges off over a bespoke GL effort shortening the switch considerably.

It seems like you are hand rolling maps currently? Switching to Tiled / TMX is a next step and don’t overlook libtiled-java for loading TMX files and some other basic structure. After that figuring out how to store collision data as a meta layer in Tiled is pertinent. An article about the approach while Cocos2D oriented for code snippets explains the gist of how to approach things with Tiled.

There are various optimizations and other useful comments on the code you have currently posted, but make a WIP thread.

Regarding OO design I’m sure there is a bit to pick up there. Traps galore so to speak, but it’s worth fighting through or learning how things get difficult. This applies to any OO entity hierarchy and quest or inventory system; re: for now Entity and EntityPlayer is simple. A fun video that describes the situation you will encounter is this one; the code solution is for Javascript, but the description of the problem is good. Just remember the scenario described and keep that in mind as you go down the traditional OO route.

Good luck with your project/thesis!

By the way I’m going well with JavaFX, it’s a standard Java library, it’s faster than Swing/Java2D and capable of basic 3D and multimedia (clips, audio etc.)

I don’t actually like LibGDX, because it’s very bad to learn programming since everything is built-in. And isn’t it better to being able to say “I wrote this from scratch” than “look, that’s my game – I made it using Libgdx :persecutioncomplex:”

First, to the OP, I wish I was good enough that I could offer assistance, but I’m still a relative noob.

So, good luck in your venture.

I disagree with you here; when I got into game programming, I started building an engine as I was building simple games (think tetris, breakout, pac-man)… While I was building tools along side games, there was a lengthy process involved where not only was I troubleshooting game logic, but I had to troubleshoot and debug the tools I was making to make the game possible.

Instead, with tools and platforms like libgdx, or unity, or whichever engine you decide is best for you. There’s no need to spend the weeks, months and years involved in getting the tools, not only useful for the specific project being worked on, but generic enough to be useful for the next project…

You have a point about learning basic programming, the tools won’t be much help, but it is a pretty common recommendations particularly on this site and sites like badlogic (libgdx site) that people start with simple projects and then develop larger and larger projects until there’s the skill base required to tackle the larger problems.

I can’t really speak to other tools beyond libgdx since libgdx was the tool that had everything that I was working on, except already developed and generically useful, and was multi-platform (specifically android), but, as you use the tools it’s a frequent thing that in order to properly use the tools involves reading the code created for you to learn and understand how it works… without requiring the extra time to figure out and debug the algorithms for yourself.

Ultimately, when the goal is to make games, you want to focus on things like gameplay, graphics, sound, etc… you don’t necessarily want to focus on how SAT algorithms work, when you can just pull up a function that already works using that algorithm and apply it to the purpose of making the game.