A brony programmer.
About asiekierka (twitter: @asiekierka)
Ludum Dare 21
Ludum Dare 18
Not Recognising Wav In Encoded In Png Award
Awarded by Sos on December 15, 2010
The "Corrupted-Looking Trophy Images" Award
Awarded by Henry McLaughlin on December 15, 2010
bunny finger trophy
Awarded by devinmoore on August 20, 2010
The 'You saw me on IRC' Award
Awarded by Folis on August 20, 2010
First LD since, like, a year. I have a nifty idea going and I hopefully will finish it despite that I only realized now there’s an LD going on. Yay.
I guess I could write up how I coded the thing as well. (The thing being my game, also time is shown from 00:00 being the beginning of Ludum Dare. Add 4 hours to get the time in my timezone)
A day or two before the Ludum Dare I realized i’m going to my grandmas, which meant no PC. I was, therefore, stuck with an Asus EEE Pad Transformer – a tablet running a Tegra 2 clocked at 1.2GHz/core. It also had two cores.
Thankfully, someone fixed the build of Ubuntu available for it to support the touchpad, making work on it a few times easier. Granted, the driver was quite experimental, but I used it anyway.
After fixing the WiFi issue, I was ready to go.
06:00: Let’s go!
I downloaded the JDK, then XChat and Pidgin. Configured everything so I could easily and effortlessly work. I also set up scrot to take screenshots every minute. On this part, no problems appeared.
First, I wrote the basic canvas code. Next I added scaling for it (I decided lo-res pixelart is easy enough to draw for me.). It scaled from 160×128 (the resolution of the game) to 640×512 (sorry, VGA screen owners, you’re out of luck).
Next, I drew the tiles. I decided they’re going to be 16×16, creating a tile resolution of… 10×8. Yes. That made everything easier.
Then, I created the code to load tiles.png and render it from an array. Good.
After a while, I added code to make it scrollable. After a few bugfixes, it worked. By 08:40 into the LD (I had breaks, mind you) I drew and rendered the player properly. Finally, I coded a simple mapgen (whose general concept stayed up into the final).
Until 09:30, i was preparing mencoder/ffmpeg for timelapse rendering. Then I took a break. Up to 10:20 i was busy IRCing and IMing, as well as replying to people on /compo. Then, another break.
At this moment, I started adding physics for the player. At 11:45 I was improving the mapgen code. Then, mostly community activity from 11:50 to 12:30. Finally, another break.
I tried setting up the microphone so I could live stream. That failed (stupid buggy drivers). At 13:00 I was designing the enemy “bug” graphic. By 13:40 they kind of worked. Major IM/IRC activity until 14:20, then a break.
From there, I forgot to timelapse, but IIRC i was improving enemy/player physics code.
Code/IRC intertwinned until 17:00. Then I released the first beta (of mostly working singleplayer). I showed it off to people, finding bugs, chatting, procrastinating and fixing a bug until 17:45.
(remember, it was 21:45 in my timezone!)
I’m up and running again! Time spent chatting with GreaseMonkey and coding until 27:25, after which I went fully into coding mode. At 27:45 i released another beta on IRC, because why not? I spent time discussing it with people until 27:53. Then, EARLY MORNING LUCKY STAR WAKEUP SCHEME
Until 28:35 I was bugfixing. Then, I designed the “story” title board until 28:50, at which point it was in the game. Then I started work on wraparound and called off singleplayer as complete. Mostly chatting until 29:30, after which I rendered the first part of my timelapse (on an ARM tablet, in “high” quality!) and uploaded it to YouTube.
Hardcore mutliplayer Googling/coding with minor IRC. (I had some knowledge on how to code multiplayer right from a sandbox game, 64pixels, that I made in 2010-2011.) At 31:00 I took another break.
By then I had multiplayer about 50% done. But enemies were a LAGFEST. Too many packets, even for loopback :< Tried fixing until 33:20, then IRC. Fixing/IRCing until 34:15, then break.
Screw enemies, I was trying to get block throwing work right. Of course, I couldn’t, because ENEMIES ATE ALL THE BANDWIDTH (and CPU). Then, IRC from 35:00-35:10 and I was forced to go outside for 3 hours.
THE PERFECT IDEA - I made the client do enemy movement prediction! Sure, I had to throw out random movement but IT WORKED! Multiplayer was closer to being completed than ever. Hardcore fixing until 39:10.
Hardcore fixing/online testing until 42:00 ON MY OWN, FAST COMPUTER. Yay!
I realize I made a fatal bug after release. Can’t sleep.
I wake up, realize I can’t fix the bug anymore. Major depression until 49:50, including crying and loss of sanity.
PoV saves the day, telling me crash bugs are fixable. Attempting to fix a few (with lots of breaks) until…
I fixed all but one, released a “fixed version”, then stopped it.
Right! 31 hours of coding out (yes, I was fixing bugs after LD), and I could write up an explanation of how the game worked.
Main.java: It was supposed to run either the Game class or the Server class. That’s about it.
Block.java: Defines the block behaviour. Instead of playing with (co)sines, I decided to hardcode the directions, getting:
Yeah, it wasn’t as good as you think.
Enemy.java: Enemy behaviour. Falling code was a copy-paste from the player code in Game, and the rest is straightforward.
Map.java: Map code. Also, the most complicated part of the game.
First of all, “if(r>11) enemies.add(new Enemy(this,(i*16)+4,(rand.nextBoolean()&&(currpos<6)?(((currpos-1)*16)+8):((height-1)<<2)+8)));” Try to find out what this code does. DO IT
Second of all, it stored the player movement checking code. That wasn’t half bad for a simplified collision detection attempt, but it could be done easier (and faster (and better)).
Third of all, map painting code.
This shows how hacked it was (I was adding wraparound near the end, mostly).
Fourth of all, I had a very easyway of checking whether a player was on. If they weren’t,
Straightforward, isn’t it?
Fifth and final,
block throwing functionality.
MyRandom.java: A version of java.util.Random with a visible seed. Was experimenting.
Canvas.java: Basic canvas rendering code. Not half bad.
Game.java: My… what? It handled player movement, key handling, ticking map and network code, almost everything D:
WAAAAAAAAAAAAAAAAAAAAAH IM SCARED
That leaves the key handling mostly alone, other than a trick that made moving faster when jumping, but… meh.
JUMPING AND FALLING WHAAAAAT
Net.java: Fairly sane (but buggy) networking code.
Server.java: Uhh… fairly sane server connection acception code. Except this snippet:
Client.java: Again, fairly sane networking code. Only pretty buggy.
How did I manage to LD without a PC?:
Battleship ASUS (EEE Pad Transformer) running a quickly hacked up Ubuntu. Which I had to fix 6 hours into the LD before I could finally start:
Obligatory anime girl album cover on iPod connected to surround speakers included.
What did I learn?:
- Race conditions will destroy your sanity. ONCE AND FOR ALL
- Sometimes, generic code is better than making a solution yourself. Not always the case.
- I should try to plan out work more than “Singleplayer: Day 1, Multiplayer: Day 2″ next time.
- NEVER WORK ON GNOME AGAIN
- BUGTEST EVERY SECOND
Thanks for reading. If you tl;dr, :<
<Salzkorn> how's your game goin <Salzkorn> finished in time? <asiekierka> almost <asiekierka> but crash bugs were fixable post-mortem <asiekierka> i fixed all but one until i said "fuck it" <Salzkorn> call it feature <asiekierka> the game stops sending data to you every 5 minutes (in multiplayer) <asiekierka> because you're a piece of shit so everyone tries to escape from YOU and not the infinite map they're supposed to escape from <asiekierka> THERE WE GO!
Dear judges, keep that in mind while playing my game. Thanks.
Right! So I’ve made a timelapse during this whole thing! It’s split into two parts:
Part 1: Singleplayer. Uploaded during the compo and posted on IRC.
Part 2: Multiplayer. Uploaded a moment ago.
The two songs used in them represent the two anime soundtracks that helped me keep motivated throughout the compo. (Haha)
Battleship Asus: Android tablet running Ubuntu 11.04. (AH THE DETERMINATION)
Battleship PC: A quad-core PC with 4GB of RAM, used towards the end of timelapse part 2.
Apps used: gedit, terminal, javac, zip, mtpaint, nano, wc -l, etc.
BETA 1 – no multiplayer yet! Search for bugs! Please give feedback and remember – it’s made 100% on an ARM tablet
Plot: You’re a Ludum Dare developer who is trying to escape from code bugs! But remember, you cannot ever really escape from them!
Controls: LEFT/RIGHT – move, UP – jump, DOWN – pick up or throw block.
What’s implemented? Platformer engine. What’s left? Enemies and etc.
(No. I haven’t done 9 status updates so far. You just don’t understand binary.)
Success! I have coded the tile rendering part of the game. And drew some not-half-bad pixel art!
Lessons so far:
- Always check if you’re calling things right.
- Songs from the anime “Lucky Star” are VERY motivating.
Still coding on an ARM tablet/netbook (Asus EEE Pad Transformer) running Ubuntu (no other choice).
So, after battling for 6 hours (pre and during LD) with bcm4329.ko, my Android tablet is up and running… with Ubuntu. NO OTHER CHOICE ;_;
So, what am I going to use?
Text editor – gedit
Compiler – OpenJDK-6
Fingered – PaintJoy/Android (cutscenes)
Pixelart – mtpaint/Linux (I’d happily look for something better)
idk? i never wrote a sound API so my game will be SONUDLSES
IRC the Demotivator – XChat
Browser the lesser Demotivator – Firefox (Chrome doesn’t work on my ARM)
GAME TITLE: Right 31
GAME DESCRIPTION: Escape from the game’s bugs in MULTIPLAYER! You will play on an infinite map, with as many players as you want to!
So, thats it! Whenever I raise my MOTIVATION bar to 99%, I’ll start coding this thing.
Right. So I’m doing something absolutely and totally crazy.
I’m going to code my game on an Android tablet (running Ubuntu as there’s no other choice).
Right. Right now I’m reinstalling Ubuntu as this thing is glitchy to the point of glitchiness.
(I’m considering VNCing into a friend’s machine. This thing is evil)
So, Escape? If I could escape from LDing and use my Android tablet for fun, I would!
…Shit that’s a great game idea
(Edit: 1.6GB/4GB of reinstall completed.)
So I thought I wouldn’t join LD #21. I already spent too much time working on my own game, and overall, I was too la—
And then I saw her face! (hint: click on it)
YAY, SUZUMIYA HARUHI
Right. So after seeing that, I decided to join this little Ludum Dare thingy. Sadly, I think there are a few copyright rules in so I won’t actually be able to USE Haruhi… Or will I?
What libraries will I use? Uhh, I’m not sure, probably something obscure again… We’ll see, we’ll see, we’ll definitely see.
I’ll follow up with code/library declarations in a few days.
This is it.
I’m going to make a game for Ludum Dare. For real.
…In a game of my own. How’s that for being meta?
It’s dangerous to go alone, take this: http://64pixels.org
If you want me to explain it to you, i idle in #ludumdare. ZSPPixels is a school server – I will be building my game in a private one.
I worked on my game and did lots of homework instead of Ludum Daring.
Here’s the pastebin of the thirty pages that I have finished.
$p[number] starts Page [number].
]p[number] is a link to Page [number].
I might make a VIDEO game this time. And finish it, ooh.
- cc65 (coding)
- Notepad (artwork)
Game will run on any platform cc65 compiles to, I think: Commodore PET/16/64/128/Plus4, Atari 400/800, Apple II/IIe.
I only promise C64/C128, though.
And I didn’t submit anything.
Not like I had anything worthwhile, so not a big loss.
But, I still love how Ludum Dare helped me work on my non-LD game.
I won’t post a link yet, for it’s not fun yet.
Here you go, the actual first image of my game ever.
The idea is for you to use the diagrams to interpret my own custom CPU, which runs the actual game.
If you don’t get it, wait for the release.
(the spellcheck is set to Polish, btw, sorry for that)
11x 00y – compare Rx to Ry
05x yyy – add value at yyy to Rx
That’s MY game. >:D
(EDIT: Yes, I know GreaseMonkey said my game is going to be for the Apollo 11 space shuttle. I’m rewriting it.)
(that Paul from the world cup who picked the winners)
<asie[muted]> .8 Will I win Ludum Dare, though?
<@X3> asie[muted]: Yes.
<Devlin> .8 Am I going to beat asie[muted] by 0.1% in LD18?
<@X3> Devlin: It’s hard to be sure.
<asie[muted]> .8 Will Notch be second place?
<@X3> asie[muted]: In your dreams…
<TenjouUtena> .8 Will I be second place?
<@X3> TenjouUtena: Yes.
After much extra arguing, we got to these results:
X3′s pickings for Ludum Dare 18 are:
1st place: asiekierka
2nd place: TenjouUtena
3rd place: mrdude