I’m not dead

For anyone still checking back here, I’m not dead.  Just been pulled in 50 different directions lately.

I pulled up my simple storm level editor the other day and really felt proud of it, I’m glad to know it’s there waiting for me when I’m ready to make my next game.  It’s fluid and clean and ready to jump into whichever console I want to develop for next.

Anyways, I’ve made a bunch of video tutorials for those who know absolutely nothing about programming and want to learn how to make games, programming in C.

Here they are

First one:

Most recent one (find others in the related sidebar):

 

Background Noise

Various setbacks over the last two weeks have slowed down my progress on this project.  Finding time to work on it during weekdays is tough.

One thing I notice about me is that my “obsession” with programming seems to come in waves.  Three to four weeks of endless coding followed by a three to four week break when I’m more sociable and “in the real world”.  One thing that’s obvious is that going against the grain doesn’t work out so well.  It’s difficult for me to focus and work on game development when I am in a “social mode”, and I never want to go out and be sociable when I’m in a “introverted programmer mode”.  Most people seem to be permanently in one mode or the other, so I’m happy for both and I’ll go with the flow in the meantime.

I hope to pick things back up soon and post an update next week.  Once I push past the monotonous coding for saving and loading of physics properties, I’ll move onto something more creative such as hashing out the tentative “level 1″ from my previous designs.

Linux stuff

In keeping with the multi-platform spirit, finally did a test build on Linux tonight.  Apart from some major annoyances related to case sensitivity, building wasn’t too bad.  Ubuntu has made it really easy to install all necessary dependencies (clang, xorg-dev, SDL, freetype, etc).

                                                              Test run on linux

 

 

Re(para)laxation

If my soul had a home, I think it’d be on the water.

Two days at the beach gave me some great insight on how to finish my design for tentative “level 1″ and make it work.  I sketched it up in pixelmator using my stylus and I gotta say, designing levels outside of the development process is very fast and I finally see the utiliity in it now.  But I’m not going to post any design sketches just yet.

Awesome progress on the level editor warrants some rest.  I got saving and loading working pretty stable, and finally implemented basic parallax effects.  One of these days I’ll start working on undo as well, as it is annoying that I can’t make any mistakes without having to close and reload the levels.  Also updated the ios code so I can test the levels on my iPad.

Edit:  Inlined animated gif’s on the main page are super annoying.  Click here to see the parallax effect.

New Screens – Editor and Windows

Not much new to say.  Development picked up some pace but still is slow.  I added a properties panel to the editor that allows me to set blending modes among other things.  I also finally implemented basic layering.

I’m still racking my brain on level design and figuring out how to make the main idea behind this game work while remaining fun and easy to play.  Not feeling all that creative today, so I’ll tackle that another day.

A Darkening

This weekend has proven itself to be frustrating and difficult.  Trials and tribulations – I almost need them to remind me why I started making this game in the first place.  Sometimes life takes unexpected turns.. so unexpected that you wonder if you’re dreaming – and if reality is sitting back somewhere waiting for you to wake up.  Sometimes the dream, your current reality, is good.  Other times, it isn’t.  But our own reality, like dreams, can change as quickly as the weather.. and I think that’s what this game is going to be about.

Development progress has been slow, however I have reached a small milestone in that I can finally load XML level files back into the editor for the most part.  This is a crucial piece of development, so that I can lay ideas down in the form of levels and revisit them later.  Even with the help of tinyxml2, this is proving to be more complicated than I initially thought.  I’m more used to working with binary or JSON file file formats instead, but I’m taking advantage of this opportunity to learn XML.

There is still much to be done, including the ability to edit the background and foreground layers.  I’m intentionally leaving the default background color hardcoded to an ugly color, to force me to implement placing game objects on it sooner than later.

I also downloaded Pixelmator (sorry gimp) for the bamboo stylus and retina support so that I can start making more mock assets for the game.  My artwork is still looking pretty ugly, but I’m hoping to improve over the next couple months.

Throwback :: Kid Chameleon

 “We become what we think about, and everything that we are right now…is the sum total of everything we’ve thought to this period.”  -Brian Tracy

Does anyone remember this game?  It was definitely ahead of its time.. at least for the Sega Genesis genre.  There was something overly simplistic about it’s nature, especially how the game starts – the main character, and a single simple enemy to overcome.  While some games prefer a slightly more aggressive learning curve, kid chameleon eased the player in slowly because it was going to be a long long journey.  This game featured over 100 levels, which was pretty unheard of at the time.  As a kid, the sheer length of this game always intrigued me.  So much so, that after the game cartridge disappeared during a move, I actually bought a second copy.

It comes as no surprise then, that the development team for KC must’ve put a lot of work into putting the game together, especially with early 90′s game development hardware and technology.

An excerpt of the ending credits for kid chameleon

They say imitation is the most sincere form of flattery.  There are definitely some elements of KC that I’d like to use in game design, and others not so much.  The hit point system, and the crazy number of character abilities (helmets) makes for some hectic and somewhat frustrating gameplay.  Additionally, all of the warp zones and “where am I” feel made me dizzy.  On the other hand, the dynamic lighting effects and weather during some levels was very cool, not to mention the ability for some of the characters to fly.  Either way, subconsciously or consciously, I can definitely see elements of kid chameleon coming out in some of my development.

 

Words…

So, I bit the bullet the other day and implemented something that I knew I’d be needing soon. Annoyed that I didn’t have a text-rendering system in place to display things like the current FPS on the screen (and because I hate reading console output), I sought out a decent portable text rendering solution for OpenGL that I could easily port to Direct3D later down the road if needed.  Normally, on the mac platform, I’d just drop into Core Graphics and render the text string to a blank bitmap and roll that bitmap into a texture.  But since I’m trying to be portable, I can’t rely on anything specific to mac os, or windows, or anything!

One thing became readily apparent was that any solution I devise will use FreeType2, a very useful portable font library for rendering TrueType fonts.  One thing that I was not predicting however, was that there exists a multitude of libraries that run on top of FreeType2 (such FreeTypeGL) as whose sole purpose is to use freetype to render text on OpenGL.  This annoyed me.  I don’t want to drop in an entire heavy-weight font library complete with 30+ source files, with its own license, just to render a single static string to a texture.  Furthermore, these libraries become another barrier for portability in terms of OpenGL/Direct3D abstraction.  I’m ok with linking graphics-independent libs such as freetype, but entire subsystems relying on OpenGL, that’s where I draw the line.

So, I decided to do it myself. Freetype can’t be that hard anyway right?  So it really only takes about 100 lines of code to use freetype to render to a image buffer suitable for rolling into an OpenGL texture.  So here you have it, my experimental, non-optimized Text Texture class..

 

Not very efficient yet, but it works!

To save memory, I decided to store the text image in a single channel texture (GL_RED format).  So, I have to use a special swizzle in the GLSL code so the texture doesn’t render red.

And.. it works!

Finally.  I can show my FPS on the screen like a proper game.

 

More Screens!

Bringing the blog up to speed, here is more-or-less the current state of the game and tools.

The initial control system is done, font rendering, basic physics, texture rendering, basic shaders, etc.

From here, the plan is to focus fully on the level editor so I can save my ideas to level files and work up to an initial “first level” kinda demo.