Category Archives: Post

Meet Redis

So simple it has got to be powerful! “Redis is an open source, advanced key-value store.” It likes Node and C++. It’s fast. How fast? 100k+ sets or gets per second fast. We’ll take it. So far all our data was in binary and text files, which are slow and pain to access, modify and share. So, we chunk the data, compress it, hash it, store it. As it turns out, half gig binary map was reduced to 40MB compressed memory data. Great. Now we need to get that data to Airplay somehow. Hiredis was up to the task of being portable. Replacing couple of network system calls and few string format characters, our game started happily reading data directly from db. This is just temporary, of course. Since Redis knows no fear, so it knows no security concepts either. We will have proper server application layer in Node later on, but right now we are just too eager to see our world again. We need 3d meshes.

Places to go, people to see, things to do

Towns. I need a good town list, with proper names, GPS coordinates, population. Since those were not available in 1600’s I will use current. US military had some, but they were way too… errr.. messy. I ended up finding very nice list on http://www.world-gazetteer.com which was far more usable. Much alike NASA maps, it is amazingly beautiful set of raw data. Mapping those to world map gave me city height and access and orientation to the sea. I had to filter out continentals and towns below 10k people not to have too much of them. As it turns out, some areas are still too crowded with towns, while some extremely empty. I will re-filter the list so only towns with no larger neighbors are in.That way it will always be that some town close enough, but not too much of them too close. After some miscalculations I finally got them to land perfectly on our map. Data is getting big. We need database.

Colors and alpha

Got alpha to work. So sea is actually just transparent blue plane, cutting through terrain at right height. A lot of temptation to introduce tides, floods, global warming changes…must resist…keep focus… year is around 1600 and it’s about Pirates! Terrain is all dirt. As it turns out, green does note blend well apparently, I will add trees as objects later on. Right now time to enjoy the view of dreamy island of Crete on my Ipad!

The World

I wanted it big. Insanely big. Kind of 9 galaxies Elite style big. But I need people to orientate and relate. I remember I was so happy when I found out Pirates! actually used real Caribbean map for their game. My world geography was not very good, me being 8 and all.  So I need a map of the real world. A big map. And NASA delivered. Now just to cut it, distort it, stretch it, scale it. Get it to Airplay. Somehow. Build a 3d terrain object with it. Easy. Right.

I know something about, vectors, matrices, view frustum, culling, vertices, triangles, normals,  and transform and lighting. Not much, but enough to make my way around Airplay’s IwGx and make it work. It was not smooth going, as it never really is, but I got it to show. First glimpse of visual stimuli and now I can breathe again. Really, I can’t work with something I don’t see. I know that is bad way to start a game design, but I can’t help it. So childish, I know. Now just add water and here we go, the new world is born:

Platforms and technologies

Naturally, I want it everywhere. Hardly. I really wanted to keep the client in the browser. HTML5 and canvas tag really look promising!  But I don’t think we are there just yet. Tried some demos on some mobile devices, and they all went awfully slow. I know some games got ported just fine, but still I feel more are porting the other way around. I am really looking forward to HTMl5 gaming, but for now, it will have to wait. So ….I found Airplay. It’s C++. It likes Visual Studio Express. It works almost everywhere. It has impressive showcase. It’s cheap and even free for small indies. It has good documentation, impressive examples and helpful community. It likes 3D and Collada. I liked it from day one.

So what about the server. I wanted it event driven, small, scalable and fast. Also, familiar. To catch the latest hype, I opt for NodeJS. It’s Javascript, so hey! For data storage I found key-value store to be best fit. Redis looked perfect. It’s all in RAM and insanely fast. Joyent cloud just stated the service, providing both and promised it’s would be ideal for mmorpg. Let’s hope it will.

In other news, Subversion for source control, Blender for 3D sketches and GIMP for image manipulation. Ready, Set, GO!

What’s the game about again?

So what kind of game do I want to build? I wanted a classic remake. I think many are unjustly long forgotten. In technology-limited times, almost any game had different genre and game play style. Today I see many remakes being incredibly popular, just as they never have existed.  I had many candidates. I still have and will probably do them sometime. But I always wanted one in particular. And that on is ….cough cough…Pirates! But in MMORPG style. I want huge worlds to sail, places to go, people to see, things to plunder, pirates to rob, ranks to achieve, treasures to find, goods to trade, and ships to own. It just has to be done. Sid Meier did it three times, each time spectacularly. But sadly, never ever in multiplayer.
No, you will not have to dance to impress governors daughter. And you will not have to take care of your dog’s hairstyle, nor have a talking parrot giving you retarded help. You will have to know the seas, winds, ships, cannons and cities. So that’s it. Hence, the Seacraft. And -online. I don’t have it completely worked out and I don’t need to have it yet. Just a general direction. Hopefully this blog will provide some good ideas as well. So far I am alone in it, which does not have to stay that way. There is a ton of work ahead, but it should be a lot of fun. Up next I will write about platforms, technologies, tools used and grand scale design I am hoping to achieve.

About me

Wife, kids, mortgage, 9-17 office job. Obviously in IT as developer for far less exciting software. All of this should be enough for you to understand why the game progress will go so glacially slow. On average I expect and hope of about 4-8h of work per week into this, at best. Few hours a day, few days a week. It’s a hobby, not my living. So, that’s about 2-4 developer days a month! Sigh. No, I don’t have a deadline. Yes, I wish I had an army of developers, designers, admins, market specialists etc.  Unfortunately, I will be doing it all by myself. For the time being at least.

Why do it?

Many reasons. Here are some of them, sorted by some kind of relevance, mostly:

1. FUN! I love coding. I love computer games. Sometimes even playing them. But building brave new world out of thin air just gives me kicks.
2. Because I think I can….to prove myself that I can.
3. Get to know all the publishing game hype. I might be a couple of years late, but it is still a growing market. I think that concept of app stores are wonderful gift to indie developers. :)
4. Get to know new technologies and tools.
5. Express. Artistically. 2D and 3D art. Music and sounds. I wont be doing them from scratch of course, but still.
6. I really want to know how much would market value something like that.
7. To see people enjoy it!
8. World peace. Think about it! If people are playing my game, they are not engaging in warfare!

So I started developing a game …

I have never had a blog. And I have never developed a proper game. So it kinda makes sense. Hopefully, this blog will keep anyone interested up to progress, and possibly get some useful feedback. Or some kind of IP lawsuit. Either way, It is also very likely that all my game development will ever amount to will be these posts to my future self. Also, since developing is going so incredibly slowly, I figured extra time spent on blog wont make much of a difference. So now when you know why I am writing a blog, you can ask yourself, why oh why am I developing a game?