Well, it’s been a while since Ludum Dare, and looking back I am extremely proud of what I accomplished.

I made a game called **In a Lonely Sea of Stars**: you send harvest ships from your (tiny) planet out into the great galaxy to harvest energy from stars. Of course you have to defend your ships from space pirates so you build defense turrets, etc. etc.

### The game

I chose my dev tools well. I enjoyed using **cfxr**, **Photoshop, **and even **Flash Builder **(though I’d have loved to use a Mac-native IDE. **Chocolat **with working AS3 autocompletion/compiling/debug? /drool)

If you’re interested in playing it, it’s on GitHub:

| source

So how did I do?

### What went right

This was my first Ludum Dare and my second full game. I programmed a game a couple of years ago that was really, really awful so I won’t even mention it here. Oops.

I did begin work on a concept to learn FlashPunk a while back, but “In a Lonely Sea of Stars” was my first real creation. And I am so proud of it.

**Concept.**I got the game concept really early on (like 15 minutes after they announced the theme— I was eating dinner so I got the theme a little late) and got into prototyping really quickly.**Asset creation.**It was a cinch. I love pixel art because it’s so beautiful but so simple to create.**Development.**Development was, dare I say, fun! I didn’t run into many fundamental programming errors (because I used a framework instead of starting from scratch) so development just worked.

### What went wrong

I may be proud, but I’m also aware of what broke.

**Math.**My worst enemy in game design is not procrastination or overreaching or anything at all complex. Math (which I’m really good at ordinarily) does not work in my head for games. Atan2? AHH! Math.PI * 180? HIDE ME! What clicks every day breaks when I try to apply it in general terms, and math was by far my greatest time suck.**Trig.**I really, really, really hate trig for games. Part of my code reads:`point.x = (FP.width * _zoom * Math.cos(_angle)) / (2 * Main.game.zoom);`

which then gets fed into

`x = Main.game.earth.x - 39 + point.x`

I know what it’s doing

*in theory*(finding the x position of an object using it’s intrinsic`_zoom`

and`_angle`

position and then putting it in terms of a different origin… but really? What’s going on!?), so for next Dare I swear I will have a better understanding / predesigned framework for putting things on screen. Jeez.**Coordinate Systems.**I also hate FlashPunk’s coordinate system. I ended up with code that had so many arbitrary numbers that I just cannot understand what is happening.`originX`

vs`centerX`

vs`x`

vs`width`

. Yah, I totally understand all of that.**Formulas.**The reason I’m a developer and not a programmer comes down to this. Formulas just throw me; I cannot write an accessible function that throws out a scroll position to save my life. I spent close to 3 hours developing a scrolling system which actually just split a number (36, say) into digits (3 and 6). Then at the end of the day I combined the numbers again. And it’s still buggy. What a waste.

**No end in sight.**I wasted so much time on the math that I wasn’t able to complete the ending or write the story I planned. The end goal was to find another life-supporting planet akin to earth (hence “lonely sea of stars”). I was not able to implement that.**Time sucks.**I had a practice AP test to take that weekend (I’m in high school), so I was effectively paralyzed for 3hrs plus the prep time for that exam.

### Thanks, y’all

The greatest thing about this compo has been the community. You have no idea (or do you) how happy it makes me to see even the most perfunctory comments on my game like “excellent work for a first timer” or “could be really fun.” I know my game is far from perfect, but this praise makes me so, so happy. Thank you so very much everyone.

### So we look to the future

Now I want to see how this game is when it’s finished, so here’s my plan:

I will release three versions of this game, all accessible on GitHub.

**Original.**The Ludum Dare version with all it’s bugs and inconsistencies.**Bug fixed.**No new features, just playable; tutorial won’t break the game, turrets go where they’re supposed to, etc.**Final.**This version will be the actual vision I had for the game. It will have some features I didn’t get to put in like a story and endgame.

I will also spend this weekend reviewing games because, by gor, I want other people to be as happy as I am.

So once again, everyone on the net and everyone reviewing games, thank you so, so very much. Thank you for making me the happiest person in the world just by saying “good job.” I worked really hard but it was so worth it, guys.

Thanks.

Tags: postmortem

For trig, you should study the unit circle and learn how a line with an angle theta crosses the unit circle at (cos theta, sin theta).

Splitting a number into digits isn’t too hard, just use the % operator.

ones = number % 10;

tens = Math.floor(number / 10);

Then, for example:

number = (tens * 10) + ones;

Of course, that assumes the number is less than 100. 😉 Because if you try something like, say, 128, then “ones” will be 8 but “tens” will be 12.

Anyway, keep working at it, I’m sure you’ll get the hang of it. 😉

http://codepad.org/XewadmH9

Thanks for the tip about the modulus (%). I didn’t think about that at all.

I do think I understand trig, but it just doesn’t work itself out when I develop. I should probably spend more time poring over FlashPunk’s source code.