As I mentioned in my previous couple of posts, I’ve been playing around with Java and libGDX. For my March 1GAM project, I’m working on a game that I’m calling “One-Way Warrior”. I haven’t actually implemented any real “game play” yet. Here’s my progress:
Splash screen. This image fades in, pauses for 2 seconds, and then fades out. I was wanting to play with libGDX’s tween engine for this but it turned out to be more complex than just handling the logic myself.
Loaded using images
This is the original title screen. Each of the text fields were images. ”PRESS ENTER” flashed and pressing enter would take you to the “Game” screen (which is currently just a black screen).
Loaded using text (bitmap fonts)
I decided that I wasn’t really happy with the title screen and I wanted it to have more functionality. I also wanted to play around with writing text to the screen as opposed to only drawing images. For testing, I justified all of the text to the left of the screen (centered vertically). I actually kinda liked it so I ran with it.
Still working on this
Now I’ve been working on adding some title screen art but I’m still not happy with it. I’ll probably just remove the art for now and proceed with the actual game play. I was hoping to be further along with this but work has been crazy this week and I’ve been having some stomach issues (likely related to work stress). On top of that Bit.Trip Runner 2 came out on Feb 26th and I’ve been playing the hell out of that. Crazy good game!
My goal for this week is to get some basic structure going for the game screen and get a basic map drawn to the screen. I’ve decided that I’m going to make my own basic level editor this time around. In the past I’ve just used tiled and parsed the XML. After reading this article I’m more convinced that the level creation/map parsing process would be much easier if the map editor is specialized to the game.
That’s all I’ve got for now!
I’ll get this out of the way first: I have officially abandoned Poopsmith. It just doesn’t seem worth the effort to rewrite a good portion of the code when I’m already planning to write another engine anyway. I feel pretty bad about it since I wanted this to be the project that I actually “finish” and it was coming along so well. I wish that I had sat down and actually thought about my game design a bit more before laying down all of my incorrect groundwork. I guess that’s all a part of learning.
I’ve spent the last couple of weeks mostly reading Starting Out With Java: From Control Structures through Objects by Tony Gaddis. It’s a relatively unknown book but it’s the only recent Java book that I had in my possession (I had purchased it for a CS course that I ended up dropping a few years ago). I’m on 12th chapter (Exceptions & Error Handling) of the book’s 15. I’ll probably skip chapter 14 as it deals with more GUI stuff that I’m not terribly concerned about. I may skip chapter 15 as well as it deals with recursion and I’m already familiar with that. Aside from the Java syntax and some more advanced OOP concepts, this book has mostly been review. I can’t say that it has been a bad book… but it’s a bit repetitive and clearly geared toward “intro CS” students but there was some pretty good information in it. If I had it to do over again, I probably would have purchased Head First Java by Kathy Sierra since it’s highly regarded as one of the best introductory Java texts.
Long story short, I am now more well-versed in Java. I feel that I’ve learned a sufficient amount about the language to move forward and start looking at libraries & frameworks for game development. The two that I’ve been investigating the most have been libgdx and slick2D. I was initially leaning toward slick2D just because it seemed more simple but after playing with libgdx this weekend, it seems pretty great too.
Next month (March) I’d like to start participating in 1GAM. I was hoping to use Poopsmith as my February entry but now that’s down the tubes. I’ve already got a cool idea for my March 1GAM entry. It’s called “One Way Warrior”. Basically you’re a hero trying to rescue your lady friend from an evil supervillain. It will be from a top-down perspective, the movement will be tile-based (when you move left, you move a full tile to the left), and it is intended to be a puzzle game. It sounds pretty typical so far but there is a slight twist – the hero can only touch each passable tile once. I have a few sprites drawn and a couple of mock-up images thrown together but for brevity’s sake, I’ll save them for my next post!
It had been a little over a week since my last post. Unfortunately I haven’t had much time to work on Poopsmith. I spent most of my weekday free-time reading and my entire weekend was monopolized by a trip to Kentucky to visit family. The 3.5 hour drive gave me plenty of time to think about what I want Poopsmith to become (and listen to game-dev podcasts). I’ve really spent a good portion of time thinking about how I could approach the Poopsmith game engine differently. I tried to design the engine to be as modular as possible. Images are all loaded in one spot numerically (aside from player images), physics can be applied to objects, collision detection can kinda be applied to anything, etc… The problem is… the engine still doesn’t feel very modular. It would still take a significant amount of work to turn this into a different game. My goal for Poopsmith was to create a fairly generic game engine that would make prototyping game ideas much easier. Poopsmith just isn’t doing that with its current design.
Another big problem are assets (images, maps, etc…). The assets are all loaded in one placed and passed around to the objects that need them. Realistically, they’re being passed by reference so it’s not like there are multiple copies of the assets floating around in memory. I still don’t really care for the approach that I’m taking.
Honestly I’ve hit a brick wall. I cannot decide if I should rewrite a good portion of Poopsmith or abandon the project in favor of starting to work on a real engine. I wanted Poopsmith to grow into a useful prototyping engine for myself and others. It has certainly been a great learning process but in its current state, I’m just not sure that it would be faster (for prototyping) than starting from the ground-up.