Maemo-SDK+

And thats why it rocks. Without SDK+, this image would be impossible without faking.
Mid Feb 09 Report
I just realised how screwed up I am! I “released” Riddler about 6 months ago and consistently looked at it for most of this time (but still I dont consider Riddler a finished product, as I consider Angstron) and never got it:
a HUGE typo in the game logo!

I dont know I missed that for so long. But thats it. these last two days I had a really HARD work to adapt the menu system I wrote about a year ago (back in Toronto) to work with vector graphics and parsing its contents from a XML (very similar to WML). Maybe its time to ditch all the art, and maybe even change the game name. The game itself doesnt contain any riddle! More on that later.
Now, for something completely diferent
You probably heard it before: ” Never optimize it early. Always make sure it works from end-to-end first, and then optimize it”. I just saw it on a book Im reading (again): “Data structures and program design in C++” by Kruse and Ryba. Its a nice book. kind of a encounter of the old school and the new tendencies from late 90s. Kind of a entry-level art programming book. You would rather read this before reading Cormen or Knuth ( Kruse->Cormen->Knuth).
But about this lemma, I have a counter-argument when we’re dealing with open source software. Optimizing it early attracts attendion and helps gathering momentum to the project. And every possible consequence to the Linus Law. And goes in acordance with “release it early and release it often”. Others will come and fill the gaps on functionality and fix bugs. The important thing is to show something compeling.
Of course, dont take my work to the last extremes. As my wise teacher , Vinod Rebello ,from college once said in class: “there’s always a trade-off”. Developers might get frustrated by the lack of functionality or maybe readable code. Indeed, Im very surprised on how people could actually read the Linux Kernel code. Its very annoying! But thing is: Linus released a very 386-optimized UNIX-like kernel and that attracted atention. Plan carefully your releases, even when releasing often. Repetitive and irrelevant releases might also get away with help. I learned this the hard way…
As a last note:
From the last post, I said I was about to test World of Goo. Well…
HOLY SHIT!!!111 Too bad I cant buy it from Brazil. This game is AWESOME! I dont remember playing a Linux game so well finished. Unreal Tournament 2004? not even close! I felt like playing some fancy video game in a last generation game console.
Other game taking my time is Warzone 2100 – a former closed source comercial game made open source and ported to linux. The game is simple, but very inteligent (well, not its unit IA) and very adictive!
Global Game Jam update
Try our game!
http://www.globalgamejam.com/games/it-came-cave
dont forget to vote sincerely!
Ok, now Im quite recovered from the big thing.
I’ve attended the Rio de Janeiro instance of Global Game Jam (it was on my university anyway!)
Anyway, after a lot of preparations, installing Windows XP, Visual Studio (from Academic Alliance) and XNA 3.0 and a Ubuntu 8.10 fresh dual boot I was “ready” for it. Kind of.

Day 1:
In there I faced , in the first 5 hours of work, a unworkable enviroment. I didnt know where to begin. I wasnt used to create games creativily in such a crowded place. I rambled. And to complete my dispair: My XP got a virus from Carlos thumbdrive, the wireless only worked on Ubuntu (!!! more on this later) and this Ubuntu was very unstable.
Getting on track was a difficult step, but certainly a great step. Once I got the pace of things, it was very easy and after a faux start (I misundertood the theme), I started codding: The basic graphical core of the engine was done in about 2 hours!
After that, I spent another 4 hours on a SVG render for C# – Me and Rubia wanted sleek graphics that a sprite renderer couldnt provide. And SVG was the answer. Or at least looked like. After about another 2 hours since I started , I had a SVG (the BZK Logo) working on a GTK# window (code done in Mono!) and another 2 hours fiddling this code and the weird XNA polygon pipeline and I gave up. The SVG always laked a few vertices that made the image look wrong.
After dropping the SVG idea, I had to get some sleep. The sun was shinning again.
Carlos stood behind, still coding something like a random terrain generator or something like that.” He’s crazy anyway!”
Day 2:
After some 6 hours of sleep (looks like I had more sleep that some teams alltogheter and maybe I hold the sleeping record of the GGJ), I was ready for some more.
Time for some game mechanics. Carlos wants me to code it OOP, but Im all Structured-Programing here. There’s no need of OOP for such a project and such time constrainct. He kept complaining until very late of that day, while there still I had the chance to do it with classes, but I , as the captain, got as stubborn as I could to resist the idea. He wasnt really wrong at all. And neither was I.
By that time, the BZK gaming model came to my mind. Diferent states being diferent numbers and treated like different entities, but somehow related by a number range. The result is very buggy but its almost working.For the IA we had a very loose definition on how the IA should work and we settled on two basic algorithms , to make the monsters run into each other. One being very smart (“cheating”) and the other being dumb. (Angstron IA algorithm).
In the afternoon I decided to try to clean up Windows, as a new virus had appeared and was getting in the way. Unfortunatly, ClamAV couldnt solve the problem and I lost 2 hours on this. Damn it! I also finally came up with a good song for the game: We vs Death – And how we translate it. I already had this file in my computer, from a pack of CC music I downloaded. And after a quick check, their Creative Commons restrictions allowed me to use it! Great!
Also during this scanning time, I went out of the room with Carlos’s Palm Zire 72 to record some sounds. Mine got shabby, but then I discovered in Carlos a real voice talent! With him, we recorded some taunts the miner would say after killing the monsters. Carlos is a real Duke Nukem!
Almost in the end of the day, I finally had the smart IA algorithm working (after two tries) and everything else was in place. Rubia had just finished the artwork in SVG and during the final 30 minutes of the virus scan I was turning everything into sprites and adjusting the aspect ratio. After we got the final artwork in place, the thing started looking like a game! I got confident that we could finish the game! Rubia was very excited. She never have seen any of her drawings turned into a interactive animation!
Carlos had just finished his algorithm and was getting it into the game engine (And he didnt test it before porting it from Delphi to C#!). He pointed that me the fact his algoritmo worked better with BIG maps and all I wanted was a small -no scroll- map. I was afraid the player would get lost in easily. But Erick (from the Torresminho Team) gave the idea of a minimap and showed me how to implement it. Finished! The sun shines very hot though the window – Time to get some sleep.
day 3:
Sleepy sleepy boy. Another 6 hours of sleep!I was working on the IA and the game mechanics. After a a while, I finally came up with a idea of a dumber IA algorithm. re-using a scraped IA and mixing it with the smarter IA. And it works VERY WELL!
Time to finish it up! Rubia got into creating still images for the “menus”, Carlos was fixing timming and I was finishing the game mechanics. In the end , we paired to fix the losing and victory conditions and we still had to code the game state for the tittle , game over and victory screens. In the end, we got it, but quite on mark. Almost 20 minutes to the deadline. And I perceive the gamestate as the only annoying bug in the code (aside from some defective “gameover detection code”). Quite good for a 43 hour gaming marathon. Too bad I overslept , lost too many time eating and scanning the computer. And there also the times I needed internet and I had to reboot for Ubuntu.
Aftermath:
The actually enjoyed this game more than I expected. While the code is messy, its functional and somewhat stable. Game Design-wise its very solid(Carlos had the great idea) and entertaining. I want to port it right away! Carlos also told me so yesterday. Too bad XNA is not very cross-plataform on itself , but it should be very easy to port it to Java.
What I got from all of this:
- I can do more than I imagined
- I must trust Carlos even more (we always do our assignments togheter, as we know and trust each other’s methods)
- I got a SVG C# reader!
- I want to port Carlos map generator and make it generic
- Wireless is a bliss
- Audacity rocks
- Gimp and Inkscape too!
- Lack of sleep makes me moody
UPDATE: for a while, we were:
1º in Rio de Janeiro
1º in Brazil
4º in the Global ratings. Nice er?
Now the stats got completely scrambled again, but at least I had this peak!
playing with FSM and guns
It is possible to implement some good games with simple FSM and a good load of creativity.
To show you this, a simple exemple: using the actor FSM and a second FSM for the frames (I know, I should use only one FSM, but hey, one step at the time), I could reproduce a ROTT-like double gun effect:
the original:
my version (SVG guns):
An Open Source Quote
foda-se o windows tb, vou pro open source
–bruce
Translation:
fuck windows, I am going open source
–bruce
Announcing Angstron ME
Angstron has a new brother: Angstron ME (Micro Edition)
of course, for Java Micro Edition. Yes, it will run on any MIDP 1.0 compliant phone!
***UPDATE - final version here : http://batterypoweredgames.blogspot.com/2009/11/angstron-micro-edition-v11.html
This project is just a simpler version of angstron, with no fancy arenas or anything like that – everything will be wireframe! (think of Battlezone meets Tron).
Screenshot:
Yes, this screenshot is not from the finished game. By now, Im just testing how to move the camera as the player’s vehicle moves around the arena. But the hardest part is done. We have 3D =-)
check it out: http://mosh.nokia.com/content/401C014534D2654FE040050AEE047652
Unfortunatly, I will have to put everything on halt. Its getting too near my final tests and I have a lot to study.
See you soon, my friends
(kudos for Ivan and TK)
when a release build matters
Today’s developers doesnt care much about the diference between release and debug builds – as long as it works , “we must ship it soon!”. But let me tell you a tale of coding horror:
About two weeks ago I decided it was the time to test again the newest code features on device. The most important was the fully functional rendering algorithm. By the time I had it working , It came the shock. It was hell slow.
The worst was that not only this new rendering method was slow , but the “fast but dirty” algorthm was also slow. And then, the full nightmare. I realized EVERYTHING was a LOT slower.
“Don’t Panic”
After lots of tests, small tweeks with no result, I decided to take a methodic investigation that left me with some vague clues. But it was somewhat efective too: I ended up with some quite good results, but still, not the full thing.
And then, it stroke me.
some time ago, in order to optimize everything, clean up the code, in order to make the rendering work correctly (isolating the problems) , I changed the building script to build a very unoptimized debug build. After changing that, I got a very fast rendering (considering my last results). It was indeed faster than the older versions.
With that crusade, I lost 2 weeks on development and many sleepless nights (just like this one). Sure I got lots of good side-effects, like a cleaner , faster and more reliable code – But it was still very frustating.
After that, you can realize how powerful can be the optimizations from a compiler (at least the ARM optimizations for GCC – my kudos for GCC projects, btw). The fading effect went from a unpleasant slideshow to a true graceful transiction effect, such a simple code.
-
Recent
- soon, on your regular java phone
- Angstron Micro Edition updated
- It came from the cave – EGM
- Maemo-SDK+
- SVG rendering on C#
- some good news around the street corner…
- Angstron 2 released!
- BZK and lightning
- Angstron 2 – finishing touches
- How indie are you?
- Nokia Ovi store – Maemo left out
- WillItStand – Macintosh
-
Links
-
Archives
- November 2009 (3)
- October 2009 (1)
- September 2009 (1)
- August 2009 (1)
- July 2009 (1)
- June 2009 (1)
- May 2009 (1)
- April 2009 (6)
- February 2009 (9)
- January 2009 (2)
- December 2008 (1)
- November 2008 (1)
-
Categories
-
RSS
Entries RSS
Comments RSS


