About GreaseMonkey
Entries
Ludum Dare 26 | Ludum Dare 24 | Ludum Dare 24 Warmup | SOPAJam |
MiniLD 32 | Ludum Dare 22 | Ludum Dare 21 | Ludum Dare 19 |
MiniLD #21 | Ludum Dare 18 |
GreaseMonkey's Trophies
Archive for the ‘LD #18 – Enemies as Weapons – 2010’ Category
Some tips for the next Ludumdare
OK, here we go.
- Flixel, flashpunk, et cetera… just go for it, you’re making a game. I’m still not a fan, but if it gets you making a game, then you’re playing your part in this competition.
- Speaking of platforms, it helps if you pick something that’s truly cross-platform as not everyone uses Windows (I’m actually going to suggest a figure of 90% who do, which means 10% who don’t, which means 1 in 10 people). There’s Wine, but some things (especially Game Maker) run horribly, and it doesn’t run .NET binaries (and Mono doesn’t have XNA). It’s not against the rules but it’s a pain in the butt.
- Also speaking of platforms, make sure you give an idea of how fast your game is supposed to run. Or something like that. In most cases, your game will run “too slow” on some systems.
- Try to make it get progressively harder if it’s an endless game.
- Don’t use a “lives” system, unless it’s purely for score reasons – I kinda just want to get through everything.
- Don’t spend too long on the graphics. Best just to stick with placeholder art to start with, and then improve it as you go along.
- If you’re going to code an engine which is quite different from the target platform, code it beforehand. This is a tip for myself, who spent roughly 26 hours on getting the emulation working.
- The competition is more serious than the jam. If you’re afraid of criticism, I would suggest the jam. I think. Bleh.
If you want some throttling code, here’s some pseudocode.
CPS is Clocks Per Second.
CPF is Clocks Per Frame. If you have something which returns milliseconds ( 1000 ms == 1 second), and you want 50 fps (== Hz == occurences per second), use CPS/50 == 1000/50 == 20.
next_tick = get_time();
while(doing_your_loop()) {
current_tick = get_time();
if(current_tick < next_tick) {
do_video();
sleep_for_a_short_moment_say_5_ms();
} else {
do_logic();
next_tick += CPF;
if(current_tick – next_tick > CPS/10)
next_tick = current_tick – CPS/10;
}
}
This is essentially what I do in my entry. I thoroughly recommend that you use this. Alex the Allegator 4 uses it, which is an old LD48 (?) not sure what it was entry, but forgets the short sleep so it runs at a nasty framerate on FreeBSD (and I’d assume at least some other OSes, too), and it doesn’t do the lag clipping thingymabob.
It always pays to at least yield to the scheduler every now and then so other stuff can get done, ESPECIALLY if you’re using Java (I did a port of Shawn Hargreaves’ SPEED once and I encountered a problem with the sound being really, REALLY sloppy).
EDIT: Added in the lag clipping. It helps if you get an interrupt storm or something and you lag out for a second or two.
Bonus “jam” game
Sorry I couldn’t submit a separate entry so I’ve just tagged it alongside my compo entry (it’s essentially unrelated to that).
It’s called Enemies A. S. Weapons and you have to kill that guy with that name by picking up bullets lying around, of which bullets are your enemies.
Made in 15 minutes using MegaZeux, you’ll need that to run this (it’s open source, you’ll just have to go hunting for it on sourceforge or something).
Now why didn’t I hear about MemoryImageSource earlier?
If you’ve played the “final” build on FreeBSD, chances are you would have been severely violated by the garbage collector. Here’s a version that’s actually playable on FreeBSD (no, not all the lag has been cut out, but it’s smooth enough to… uh, something)
http://pubacc.wilcox-tech.com/~greaser/stuff/ld18/HeadTrauma-MemoryImageSource.jar
Entries and platforms which may or may not work
I have a laptop which runs Ubuntu/Morphix/Knoppix/Debian/GNU/Linux (Note to RMS: This is what happens when you insist on using a / on the whole lot, and yes, Ubuntu is based on Morphix, which is bStuff it). As it turns out, my entry runs better on that than it does on FreeBSD (oddly enough), and I have SO MANY FLIPPIN’ FLASH GAMES IT’S NOT FUNNY.
So, stuff I’m not fond on, in order:
Unity seems to work really well in wine.
Stuff coded in C++ with Microsoft’s Vizzel C++ has a tendency to not compile on a real C++ compiler.
My laptop has Flash 10 and it works.
Game Maker games are a pain in the arse to get working with respect to the mouse – I have to mess around with winecfg to be able to click on stuff correctly. If you don’t make your game nicely configurable, and your config is hell, I will struggle horrendously with this.
XNA games will not work AT ALL.
So there you have it. Another flippin’ list. Because you really could do with another list, couldn’t you?
DONE OH CRAP IT ACTUALLY WORKED
(yes, I seriously prayed this would be finished)
Nearly done!
Oh crap. It’s actually nearly finished. (ish).
I’m just adding another level.
The situation just keeps getting bleaker
Good news: we have a player!
Bad news: collision detection is pretty crappy ATM.
Really bad news: The VDP emulation isn’t quite up to scratch (you can see when you walk up a hill)
Have a look if you want: http://pubacc.wilcox-tech.com/~greaser/stuff/ld18/gm-d005.jar
It’s finally starting to look like a game
even though it’s sounded like a game for the past few hours.
Look, screenshots:
And now for the dev snapshot:
http://pubacc.wilcox-tech.com/~greaser/stuff/ld18/gm-d004.jar
Bvvvvrrrrrrrrrrrrrp… SEEEEEEEGAAAAAA!
I’ve spent the first 25.4 hours of LD48 making it so I can do a parody of the Sega Master System bootup screen. Hooray! Now it’s time to actually make a game.
Code is GPLv3, too. Like dev shot 002, as well, I forgot to state.
http://pubacc.wilcox-tech.com/~greaser/stuff/ld18/gm-d003.jar
Happy tommorow, and before I go to sleep…
…I have made progress on the graphics side of things! (Also, it took me 3 hours to get sound working, not 5.)
Turns out that I spent a lot of time wrestling with the code where the problems were in the .bmp converter (I was loading the two nybbles in the 16-bit image around the wrong way and then putting the colour information into bitfields around the wrong way, too), although it goes without saying that I also had plenty of mistakes in the VDP code itself.
I’ve yet to get sprites working, and there are still more flags & stuff in the VDP registers which aren’t (but should be) implemented.
So here it is! http://pubacc.wilcox-tech.com/~greaser/stuff/ld18/gm-d002.jar
And now it’s half past Sunday and I have to be up early for church so I really should go to bed. Good night!
VGM loader / PSG emulation working!
Here’s the player playing gm-prac01.vgm and *looping* it.
http://pubacc.wilcox-tech.com/~greaser/stuff/ld18/gm-d001.jar
Now I need to get VDP emulation working.
Bass code
Here’s some bass you can listen to while you code.
My “hitlist”
Here’s a list of people I’ve checked to see whether or not I’ll have a chance of playing their game. There will be a punishment for those who are confirmed.
Update #2: added / moved some names. Apologies if there are still duplicates.
Confirmed:
- Sos: Flashpunk
- Getterac7: LWJGL
- Gilvado: AS3/Flixel
- Codheadz: XNA
- TheDarkPixel: Flash
- Ashera: Flash/Stixel
- KilledByAPixel: MSVC++ 2010, DirectX
- pants12: Game Maker
- zlash: Flashdevelop
- MarkDIsaac: Game Maker 7
- ChainedLupine: Flash
- TenjouUtena: XNA
- Spunkmeyer: C++/Boost
- smn: Flash or XNA or C# or PHP – hit it
- nyarla: C++ or Flash
- moltanem2000: Game Maker 8
- xhunterko: Flash
- ExciteMike: Flash/Stego
- Cooshinator: Game Maker
- wonderwhy-er: Flash
- Martoon: Flash
- mikeysee: Flash
- Catmoo: Game Maker
- Almost: Flash
- ConnorJLysaght: Game Maker 8
- Manuel777: Game Maker
- TrogFishaz: Game Maker or Flash
- xhunterko: Flash
- AClockWorkLemon: Game Maker
- Wiering: Flash
- Supermini_man: Game Maker 8
- Sakar: Java/Slick2D (based on LWJGL)
- imaginationac: Flash
- David Prior: XNA
- Folis: Game Maker
- mwest: Java/Slick2d (based on LWJGL)
- Geti: Flixel
- milsom: C++/DirectX or SFML or Unity+C# – hit it
- sfernald: XNA
Possible:
- blitzgren: XNA (or PyGame)
- DeathBySnail: C++
- Scramasax: C++ (Dev Studio 2005)
- NiallM: C++
- Basic: C++
- lurreluck: C++
- ManTis: XNA (or Unity)
- jovoc: C++
- iojp: C++ (Irrlicht)
- Praetor57: C++
- Walker: C++
- sfernald: C#
- Thomas Larsen: C or Yabasic
- zazery: XNA (or PyGame)
- recursor: Unity (or Flash/Flixel)
- zigs: C++ (or Python)
- mmkay: Python or C++ or AdventureGameStudio
- Entar: C++
- stuckie: haven’t established
- pubby8: C++
- wyverex: D/SDL (not sure, this might be a real bastard to get working, have confirmed that D v1.0 works, and have a D v2.0 compiler built)
- jolle: D ?
- devinmoore: “qb64, actionscript/flex/flash, java, php, mysql, html”
- MrDude: C++/Ogre3D
- TheGrieve: C++
- skintkingle: C#/SuperNova (need to check dependencies of that lib)
- Henry Blank: LWJGL (or JOGL)
Safe:
- ippa: Ruby/Chingu
- adam_smasher: SNES or PyGame
- Darkhogg: Java
- MrDude: Python
- RedReaper132: C++ on Linux
- Osgeld: Processing
- Tenoch: Lua/ev”oL (uses C)
- Julian Kniephoff: Python/PyGame
- Torquil: Lua/L”OVE (uses C++ but has a Linux port)
- melior: PyGame
- Andrew Marsh: Python
- Nick Breslin (ld48 name == ???): Facebook
- The Jahn: Java
- psnake: Python (AFAIK)
- NMcCoy: Processing
- Frimkron: Python
- OriginalBigDan: Unity
- jplur: Blender + Python
- Ricket: Java/JOGL
- jakkarth: C or C++ on Linux
- Notch: Java
- GBGames: C++ on Linux
- Jerm: C++ (trying to port to Linux)
- Fiona: Python
- LoneStranger: Java
- psnake: Python/PyGame
- asiekierka: Apollo 11 Space Shuttle*
- Sol_HSA: C++ (tends to code in a way that actually compiles in a real C++ compiler, apparently)
- Tyler: LOVE engine
- masterhyjinx: Unity
- Sophie Houlden: Unity
- dock: Unity
- Codexus: Unity
- Eckolin: Bennu (which has a FreeBSD port
) - deps: Ruby/Gosu
- Praetor57: MSVC++ 2008 (attempting to port to Linux)
- NiallM: C++ (attempting to port to Linux)
- jovoc: C++ (attempting to port to Linux)
- zigs: Unity (probably not Python)
If you’re on the Confirmed list, then congradulations: your game will probably not be playable on my desktop! If you have “hit it” next to your name, chances are you’ll pick a platform I won’t be able to use anyway.
If you’re on the Possible list, it could be for several reasons:
- You haven’t said what C++ compiler you’re using. If you’re using MSVC++, I’ll move you to the Confirmed list.
- You haven’t said what C# framework you’re using. If you’re using XNA, I’ll also move you up.
- You haven’t decided what lang / framework you’re using, but you’re tossing over something which probably won’t work here.
- I could not establish what langs / frameworks you’ll want to use.
- I could not establish if your lang / framework would actually work here.
If you’re on the Safe list, you’re safe. But if you want a cameo, feel free to ask.
(*) I have it in my lair.
Wait, I can post here?!
Sadly, the font that’s being used here is arse, but I’m assuming (hopefully) that when it comes up it’ll be in a nice, sans-serif font.
So, I’m keen to give LD18 a crack. Not sure if I’ll get something out, but nevertheless I might give it a crack.
I’m keen to do something in Java which’ll simulate the hardware of the Sega Master System to some extent (none of the memory paging crap, just the VDP and PSG). To do this, I’m making a .it-to-.vgm converter, which I hope to have finished by the time this starts, and if anyone wants it I’ll post a link if/once it’s done & uploaded.
So, speaking of software, likely software will be:
- The Diablo JDK for Java 1.6. Duh.
- Kate for editing eleventy-billion .java files.
- GIMP for graphics.
- SchismTracker for music, and maybe a few of my own tools which will be “lying around” by the start of the compo (if you want any, feel free to bug me – I made one called “AutoTracker” but I do NOT recommend use of it as it’s still pretty awful and I’ll be composing by hand, but it’s there if you need it).
If we’re doing enemies as weapons, I’ll probably make everyone* here who’s likely to make a game which won’t work on FreeBSD (or make it a downright pain in the arse to do so) a throwable weapon if I can obtain their cariacatures. This includes:
- *Any* version of Flash.
- Game Maker, at least after a certain stage (it’s a PAIN IN THE ARSE to get it to work well under wine and even then it’s BUTT SLOW).
- Java folk who decide to use jinput and/or lwjgl instead of using jogl like a normal person.
- XNA or Silverlight.
- The Microsoft dialect of C++ (you CANNOT believe how much UTTER HELL I had in the last Allegro Speedhack – I could only get about 5 to COMPILE, let alone not crash.)
- Maybe FreeBASIC. (I haven’t managed to bootstrap it for FreeBSD.)
- Later versions of DirectX.
- People who insist on using shaders (I have an nVidia GeForce 5200 FX AGP).
By the way, I was one of those who voted +1 for zombies. Sorry guys.
(*) I’m making exemptions for people who are doing it on alternative hardware. But not the Amiga (because copyright law sucks arse as it stands).




