LD14 April 17–20, 2009

My ‘timelapse’ and journal part 1

Behind The Dumb Episode 6 is out at last!  It’s the first half of my timelapse and journal for LD14!  Check it out.  You don’t need to rate it, because while I did FILM it all during the weekend, I certainly didn’t have it all edited and ready by then.  And the second half won’t be out until voting is over anyway.  Still, it should be amusing to some.

Tags: behind the dumb, LD #14 - Advancing Wall of Doom - 2009, timelapse

Gray Screen Bug in FWOD

Unfortunalty I wrote the drawing code wrong* (outside of the gui thread) and this is the reason some people are getting the gray screen bug.

It doesn’t depend on your color depthor anything like that AFAIK, I will need to fix it in the code.

The good news is that I know more or less what to fix and just have to find the time to work on it again :)

[*] I’m a Java2D noob :(

DoomCake – Postmortem

DoomCake was my first LD entry.  It was developed in Lua, using the LÖVE 2D engine.

In making this game, I learned a bit about Lua, and a lot about cake.  Read on to find out what a sugary zombie invasion might look like…

Introduction

The competition was flagged up to me by someone at work, though I wasn’t sure I’d be able to do it until the day before the start time (which was 4AM local time).  I didn’t even decide what development environment I was going to use until the Friday evening, when I spied a Lua book in the office library on the way home from work.  I’d seen LÖVE mentioned by a couple of folk here, so I decided I should give that a shot.

I should mention I’d never used Lua before, so when I started reading on Friday evening, I was literally starting at ‘HelloWorld’.  I went through a few examples, then started playing around in LÖVE, seeing what it was capable of.  Satisfied I could put together a simple sprite-based game, I went to sleep a few hours before the competition start.  I figured no point trying to stay up late just to find out the theme, only to ruin myself for the next day.

Trying to learn a new language, whilst against a deadline

Never having used Lua before, I had to learn how to solve a number of problems against the clock.  Things I take for granted in my day-to-day C#/.Net life.  Things like multi-file projects, debugging and error-handling, collections & queues, and so on.  At first it felt like I was reaching for a book five times for every line of code I wrote.  Not very productive!

I managed to pull together enough to make my game work, with minimal bugs.  However the code-quality is horrendous.  Inconsistent styles throughout, as I learned my way around the language.  Huge amounts of copy-paste, since I couldn’t get certain code-reuse aspects working properly.  Certainly not my prettiest work, from a development point of view.

Quick and easy love

The LÖVE engine made getting assets into the game very simple.  Images (static and animated) and audio were easy to bring in.  I would recommend it as a good choice, especially if I knew Lua better (or even at all!)

Cake!

The idea for the Wall Of Battenburg Doom came about as I was filling up on sugary snacks on the first day.  I went around the house, collecting anything that might work as ingame enemies, with the intention of taking photos of them to make sprites from.  (Art isn’t my strongest skill, so I figured that would save me time).  However I underestimated the amount of photoshop processing that would be required to turn the pics into something usable.

In the end, I only used two items: The battenburg cake, and some candy teeth.  I had an idea that I would create a parade of Marching Sugary Doom.  Doughnuts, fizzy drinks, lollipops, chocolate bars, and so on.  All of these would be following behind the main wall, covering the ground with sticky, sugary rubbish.  This obviously didn’t happen, which lessened the effectiveness of the other idea I had:  Creating a Left4Dead parody, specifically the survival-until-rescue part.

The food.  It’s… infected!

Imagine you’re the survivor of a zombie attack.  Only, instead of zombies, the virus/mutation/whatever is causing sugary snacks to rise up and eat people.  What’s more, their weapon of choice is CANDY TEETH!  So all the while, we’ve been told not to eat too much sugary stuff, as it will rot our teeth.  Now the roles have been twisted around.

Anyway, this side of the game never really worked out, simply due to time constraints.  I wanted to have multiple levels, with different types of wall behind the teeth, and various obstacles that the player would have to navigate around.  I also wanted to have different coloured pick-ups, with different effects.  But sadly time was against me.

Rescue

One of the great parts of L4D is waiting for rescue, against a seemingly never-ending hoard.  I blatantly ripped off the rescue-helicopter idea.  As the chopper got closer, he would radio in encouragement to hold out just a little longer.  If you managed to survive long enough, he would pick you up, and fly you to safety.  (Note how he flies you over the wall and beyond, where the legions of marching snacks would be, if I had time)

I wanted to have an actual radio, sat on a table next to the helipad, with the pilot’s speech bubbles coming from it.  But again, this didn’t make it in.

A familiar plateful of cake?

The final part of my L4D inspiration was the box art.  I’m talking about this

which I copied slightly to make this

Spot the similarity?  Apparently it was too subtle, since no-one mentioned it.  Oh well…

Tags: doom, post-mortem, postmortem

Why I didn’t rate your game

It sucks to have very few ratings and comments on your game, so here are a few pointers for next time.

Platform
The most rated games are the ones you can play in your browser. Try making your entry in java or in flash and embedding it in a webpage for maximum exposure. If you don’t want to have to suffer the horror that is (Java|AS|Flash) at least make a binary release for Windows since most people seem to have access to that platform (I don’t so please also make an OS X version 😉 ). If you’re making your game in Python (or its pale imitator ruby 😛 , or any other interpreted language for that matter) you might think you don’t need binaries but you’re wrong, people aren’t going to install a different environment for every single game. Same for Löve games.

Dependencies
If you do only release as source, or if you only release for one platform, or dynamically link libraries, keep dependencies to a minimum. If all I have to do to build the game is type “make” there’s a better chance I’ll try it than if I have to install 13 libraries which each in turn depend on half a dozen others.

Screenshot
I try to play all games regardless of the screenshot (in part because my own drawing skills are easily surpassed by those of a drunk monkey with a pen) but if the entry requires more than clicking on a shiny icon to run, I’ll definitely spend more time trying to get an entry with a cool screenshot working.

Rate other games (and leave comments!)
While I am determined to try as many games as I can, I prioritize rating the games from the people who left comments on my games first.

Of course these “rules” aren’t set in stone. You can make a game for the Atari 2600 and still have plenty of ratings. You can also make a game with an uninspiring screenshot and win best overall.
Of course you could also cheat by making a ton of games under different names to rate your own games 😛 .

Comments

28. Apr 2009 · 21:05 UTC
I think that the fact that mine is a Flash game was an incentive to rate it, definitely. Good tips overall.
Radix
29. Apr 2009 · 02:11 UTC
I think I probably would’ve gotten more ratings if my screenshot wasn’t dark as hell, but I had trouble taking something fairly representative of the game that didn’t spoil the ending.

That and I was really, really tired.
Endurion
29. Apr 2009 · 05:28 UTC
Hear, hear!
Mike_W
29. Apr 2009 · 07:37 UTC
I’ve rated quite a few . I had problems with the python ones that were not py to exe’d. I rated as many of those as I could, then found myself in the midst of a windows reinstall.
29. Apr 2009 · 08:57 UTC
I hear you. At the same time, as long as it’s technically possible for me to run something, I’ll install anything (short of malware) that’s needed. It doesn’t usually take long to download, and in the meantime I can go try other entries.

Postmortem…

Outline of 48hrs as I recall it…

Day before compo…

Stayed up too late on Chatroom, just getting hyped about the competition – Should have slept more.

Got up at 4am to check theme – found that it was AWOD couldn’t think of anything and went to bed.

Got up again jotted down game concept in notebook (see below)

Full Design Document

Went to work knocking together basic sprite object – I know I should have grabbed a pre-developed set of objects but at least I can refine and reuse these now!

Went for a very free form map, no tiles just objects relying completely on BlitzMax’s in built pixel perfrect collision detection.

In the first day I managed to get the basic game mechanics working block growing, turrets firing, player deploying turrets – it was now almost a game.

Went to sleep thinking about adding towns, people, animals, plants running from the AWOD… Dream on!

 

Day two

Added screen, levels, win/lose states, basic sound effects

Afternoon – time was running down fast added …

Powerups – providing a limited upgrade to turrets

Base something for the player to defend and powerups to appear next too

Last minute play testing

Quickly zipping and posting it near the deadline – Phew Final post

What went right…

I managed to create a game in 48 hours!

I avoided getting tied into the complexity of a tile based system, thankfully BlitzMax’s collision detection works well!

I kept the ‘artwork’ to the bare basic minimum – inspired by the BUPA adverts (Coloured circles as people)

I kept the design very simple as well.

My Keep It Simple Stupid – KISS approach worked!

What went wrong…

Wrote too much code to start with I need a basic prototyping framework for at least sprites, collision detection, screens, menu ect.

Then I could have spent more time designing filling out the game design further but staying flexible, this might have prevented the last minute addition of powerups and base leaving next to no time for game testing balancing.

Motivation wandered during day two, it was a playable prototype and therefore in theory a game, thankfully I managed to get moving again and ‘polish’ it up a bit, again a framework will make this a none issue.

I quickly realised that there was a performance issue with the block count, once you get over the 1000 mark the framerate really drops so I had to limit that.

I wanted a wrap around world where you can’t run away from the wall of doom, althought this should have been an easy thing to add I did not get around to adding it, possibly resting on my laurels a bit!

In Summary

I really enjoyed this although I wish I had setup a time laps screen capture, probably not a webcam feed ;o).

Well I must judge some more of the other amazing entries, Looking forward to the next competition already!

Regards

Merx

 

 

 

 

Tags: design of AWOD, postmortem

PET THAT KITTEN! Postmortem

Introduction

PET THAT KITTEN! was my second attempted Ludum Dare,  my first actual entry, and my first XNA game. Going into this I knew I was going to use this competition as a way to get my feet wet with XNA. Considering the added learning curve I aimed for a very tiny scope. I think I went with the idea that crossed most LD’ers minds, turn the wall into an enemy and have it chase the player.

Development Tools

I had worked with a bunch of C# in the past so putting everything together in XNA wasn’t a problem. I had done my art up in Flash CS3.  I had planned on using hobnox to generate my sound effects and music.

What Went Right

The scope I had planned out mostly revolved around the fact that I was tackling XNA for the first time. The scope had lots of features I could easily cut out while still leaving me with a “complete” game.  I had done a bit of VB.net and C# managed DirectX stuff in college, XNA turned out be extremely similar so only very few features got cut.

Despite the programmer art, I’m pretty pleased with the way the artwork turned out. It was more time consuming than I had liked, but I feel like it breathed a lot of life into an extremely simple concept. I also decided that however crappy the artwork looked at the start, it would make it into the final project, no placeholder art.

What Went Wrong

I was using this Ludum Dare to kick myself in the butt to get something done in XNA. Most of my perceived problems stemmed from this though. I realize the ideal entries are executeables and broswer based games, no one really likes having to install dependencies or go to too much trouble getting your game going. I’m sure the installer for the XNA framework turned at least a few people away.

On that note, I know I could have gottent his entry done in half the time, possibly with more features if I had just done it in Flash. A good chunk of my time was converting assets to spritesheets and then fixing up the spritesheets (you’ll notice in the wall animation that you can see bits of other sprites on some frames).

My time management for this competition wasn’t too bad, I think I spent too much time on getting some of the artwork done, the time would have been better spent with an in game help screen explaining the game objects and scoring system.  The confusion brought on by the scoring system (and a scoring bug) was a huge oversight on my part.

Conclusion

As an XNA project I’m pretty happy with PET THAT KITTEN!. It’s a complete mostly functional game, and I managed to plan my scope out pretty well for the time frame. However as a Ludum Dare entry it’s a little less than ideal as I know I would have been able to polish it(Sound effects!) quite a bit more in Flash and avoid installer issues.

This Ludum Dare was a great learning experience for me. Planning out a scope under such a tight deadline, learning XNA, and finding a couple of really nifty tools for mixing music and creating sound effects.

Tags: postmortem

Comments

PsySal
02. May 2009 · 23:53 UTC
At first I was turned off by the XNA installer. But I have to say, compared to other installers from Microsoft, it was utterly painless on my wife’s Vista laptop. Worked flawlessly and your game played great!

I decided to come back.

Welp I’m here.  I might participate in future compos.

Diodontidae – postmortem

I believe a better name than post mortem would be lessons learned, so let’s see my lessons learned from the  competition. I would love to read this before the compo, as I can’t make the time go backawards, let try at least to help other newbies.
1. create the menu navigation at the start of the competition
As I was fighting agains some physics problems during the development process most of the menu was left behind. Then I realized 30 minutes to the end that my menu would be an image =) and a play button…

The lesson on this would be, use time in the middle of the nightmares to do these brainless activities, because what can go wrong while build a menu ? =)

2. draw in the paper build and color in the computer
That helped alot, I save my day manipulate the lines with inkscape, but … in order to slice images I have a nightmare with inkscape, go with Gimp works as a breeze

3. dont split images, let the engine split for you
ahhhh I spend some hours cutting images lol !!, could use something like http://love2d.org/docs/love_graphics_draws_1.html to draw a subsprite of the image …

4. make physics work for you
Oh Well after the physics hit me in the head, I learned some details and was able to make it work in a decent way, special note for the boats that hang around over the sea, for that I created a sequence of x,y that is the path to the boats, and I try to follow the path, I believe if I make the water line as an object and change its group to only colide with the boat would be the best to move the boat around.

5. clean the tables in one place only.
Not sure why, buit when I was removing items from my objects list in teh collision handler the LOVE was just crashing … workaroiund that I found : flag to items to be removed and remove in the update() method and one by one from each table, this is call at the end of the update() for each cleanable table :

[code]— clean the tables
function cleanTable(table2Clean)

for n=1,table.getn(table2Clean),1 do
if table2Clean[n].dirty ~= nill then
table2Clean[n].poly:destroy()
table2Clean[n].body:destroy()
table.remove( table2Clean, n )
break
end
end
end
[/code]

and at the collision handler, I dont remove the pig from the list, just flag it
and I believe that this would be a nice way to animate the pig booom =)
by using a multistate, like alive/almost dead/dying/im outa here :)
would change the image section, or play an animation … and at the end remove from the list
that would be great …

[code]
function killThePig( id )

love.audio.play( audioCollision, 1 )
pigsKilled = pigsKilled +1

for n=1,table.getn(pigs),1 do
if pigs[n].poly:getData() == id then
pigs[n].dirty = true
break
end
end
end
[/code]

6. reusable files should be in a folder
I’m using for labels the .lua classes that I made called LOVEly-eyes, but I had this problem with the Text object that wasnt transparent … Oh well I went in the code changed the super class, Rectangle to handle this and the Text is transparent by default, cool, but but but … :) after that I just copied all the files from the LOVEly-eyes folder to my game folder … too bad because I copied a main.lua file together … If I wasnt using subversion would be a nightmare … now LOVELy-eyes are in a separated folder =)

7. use a version control system
I used subversion, saved me when I made an stupid folder copy … revert and just lost some minutes of work… bu remember keep on committing =)

8. put together a zip with everything
Better that just the .love file, create a package with the execs, the best would be create an installer.

9. level up level up !!!
people like rewards, so more than the score I should add level concept, just with faster attack of the pigs, or a different scenario with different speed .. hummmm that would be cool a .lua file for each level :)

10. collision has 2 sides … A and B
It took me some time to realize that A and B collision data, first they are the DATA from the polygon nothing else, just disconnected data, not a reference, not and pointer … hehehhe string data what makes very nice and unplugged from the code, and you have to test both sides, if wherever A colide on B and the oposite, this was my colision code

[code]function collision(a, b, c)

if string.starts(a, “pig”) and string.starts(b, “battery”) then
killThePig( a )
removeTheBattery( b )
elseif string.starts(b, “pig”) and string.starts(a, “battery”) then
killThePig( b )
removeTheBattery( a )
elseif a == DIODONTIDAE and string.starts(b, “food”) then
eatFood( b )
elseif b == DIODONTIDAE and string.starts(a, “food”) then
eatFood( a )
end

end

function string.starts(String,Start)
return string.sub(String,1,string.len(Start))==Start
end
[/code]

note that I used start() because I add the object id after the type, so I can grabb it from the list, something like “crap_2”, “crap_3”

11. scroll the view is possible Luke… use the force !
Ha ! not the force, at the end I solved the screen scrolling with a simple solution, calculated a shif from the main character and update this shift in the update() method and every single draw has this shift. So the camera is following the character, thats stays in the screen all the time, and to avoid the char to drop outside the world I add invisible walls on left and right side and check if the cameraX is in the possible range,

this in the start of the code

[code]
startCameraX = love.graphics.getWidth( ) / 2
startCameraY = 200

cameraX = -startCameraX
cameraXLimit = {}
cameraXLimit.start  = 0
cameraXLimit.finish = -2905
[/code]

+ cameraX on each draw
[code]
love.graphics.draw(diodontidae.image,
diodontidae.theChar:getX() + cameraX,
diodontidae.theChar:getY())

—— draw the batteries
for n=1,table.getn(batteries),1 do
love.graphics.draw(
imageBattery,
batteries[n].body:getX() + cameraX,
batteries[n].body:getY(),
batteries[n].body:getAngle() )
end
[/code]
this on the update()

[code]    cameraX = startCameraX – diodontidae.theChar:getX()

— keep the camera in the boundaries
if cameraX > cameraXLimit.start then
cameraX = cameraXLimit.start
elseif cameraX < cameraXLimit.finish then
cameraX = cameraXLimit.finish
end
[/code]

Tags: Diodontidae, lessons learned, Love, lua, postmortem

Comments

Jpfed
05. May 2009 · 01:08 UTC
Regarding destroying objects: I’m weirded out by modifying the game objects table while iterating over it. Even if it works, it seems like it shouldn’t. I do something like

Timelapse + Journal part 2!

Behind The Dumb Episode 7 is available now!  Thanks to the handy extended voting, it is available before voting is over!  Of course, again, I filmed it all during the 48 hours, but didn’t edit and release it anywhere close to that time, so probably not valid for voting.  But I hope you enjoy seeing what kind of sandwich I ate, in one of the most epic cliffhangers since Sylvester Stallone’s Cliffhanger.

Tags: behind the dumb, timelapse

A few strategy hints

UPDATE: Now with (spoilerific) screenshots after the break.

Since several people seemed to find The Triumph of Time pretty hard, I decided to give some pointers as to how to best play the game.

Let me describe the core mechanics of the game. As soon as you have built a pylon next to a star, it will extract particles from it at a fixed rate. The larger the star is, the more particles are extracted per time unit. Building several pylons next to a star will not increase this rate, the particles will just be randomly distributed over all pylons. The particles will then go on to more or less randomly distribute themselves along all barriers which extend from their current pylon.

At a fixed time interval (every two seconds, if I recall correctly), the cloud of antimatter will expand in every direction. It can only be blocked by having a barrier which is powered by particles in its way. However, for every grid cell along the barrier which the cloud tries to enter, one particle on this barrier will be destroyed; when all particles are destroyed, the barrier falls.

So here are some rules of thumb for successful play:

  • Try to tap each star at your disposal as early as possible, especially the large ones.
  • Try not to lose any stars to the cloud as that will severely cut your particle budget.
  • Do not build any superfluous barriers within your territory. Every particle that swirls around on a barrier which is not at the frontier does not contribute to your defenses and is essentially useless. So, try to keep the paths which transport particles to the frontier as efficient and short as possible.
  • Keep the frontier as small as possible. Every frontier tile (i.e., a cell on a barrier which delimits your territory from the cloud) will cost you a particle every two seconds, so minimize your surface. PRO TIP: It’s well known that the shape with the smallest ratio of circumference to area is a circle. It may help to keep your territory roughly circular.
  • I’ve found that once a critical barrier has fallen, it’s often very difficult to recover. It’s better to stake out your territory on the conservative side rather than lose it all.

I hope this helps a bit. After the break (SPOILERS): screenshots on how to solve the first four levels.

#gallery-1 { margin: auto; } #gallery-1 .gallery-item { float: left; margin-top: 10px; text-align: center; width: 33%; } #gallery-1 img { border: 2px solid #cfcfcf; } #gallery-1 .gallery-caption { margin-left: 0; } /* see gallery_shortcode() in wp-includes/media.php */ ttot-level1 ttot-level2 ttot-level3
ttot-level4

Tags: strategy

Comments

05. May 2009 · 15:11 UTC
i don’t know if i’ve mentioned this yet, but i really quite liked the game! :) it’s smart, srsly
05. May 2009 · 22:27 UTC
Thanks for posting these tips. As one of the ones asking I really appreciate it. I’m gonna go try and play again! :)
05. May 2009 · 22:47 UTC
damn.. I _still_ can’t beat level 2. I must be missing something. I was able to do much better on level 1 after your instructions but I had already beat that one before. Now the best I can do on level 2 is around 120 / 190 saved.
05. May 2009 · 23:16 UTC
Well.. after playing level 2 like 50 times (no joke) my personal best is 163/190 but I still can’t get by it. Some of the things you wrote started to slowly dawn on me so I’m definitely improving but I still have the nagging feeling I’m missing something as it seemed a lot of comments in the review area talked about people beating the game. Oh well.. I have to go to bed as this game has kept me up past when I should have gone anyway… so congrats on that. :)
06. May 2009 · 03:59 UTC
Heh 😀 Great to see you’re so compelled to keep trying. That’s some determination! I’ve now added screenshots of the first four levels, hope that helps.
06. May 2009 · 08:17 UTC
Well.. it helps that it is a really fun game. :)
06. May 2009 · 08:30 UTC
Haha 😀 I was somehow guessing that you must have had some wrong preconceptions about how to place barriers. A tutorial would have cleared all that up in seconds, but you know how short 48 hours are…
5parrowhawk
06. May 2009 · 23:11 UTC
Yes, please do. I’m not sure about the narration, but the basic gameplay is really very solid. Perhaps you could consider other elements in an expanded remake – 1 or 2 more unique pieces would probably extend the longevity significantly, if carefully designed.
06. May 2009 · 23:26 UTC
Oh, right – I just went back and played it, and it would be nice if you could implement right-click-and-drag scrolling like in many recent RTS games. I think that might feel more intuitive than right-click-to-centre. (Or you could implement both and provide an options screen?)
07. May 2009 · 02:43 UTC
Good idea. I don’t really know what I was thinking when I implemented that click-right-to-scroll thing, I’m really bad with interfaces. Someone else also suggested scrolling when the mouse touches the screen borders; both that and yours sound better than what I have right now.

issues with python

ok so i’ve noticed the games with the least number of votes are python games that i haven’t been able to run because of some weird python error. i would imagine others have similar issues or perhaps don’t have python installed at all. i’ve just read something interesting, uninstalling old versions of python and reinstalling can help with issues. we’ll see how it goes..

wow it worked! i can finally run python games. one less stumbling block between me and games =]

python 2.6.2: http://www.python.org/download/releases/2.6.2/

pygame 1.8.1: http://www.pygame.org/download.shtml

Timeline

I started making this timeline a few hours into LD14. I have imagined a program which would produce something similar, although I enjoyed the open ended prototyping and creative potential of doing it with pencil and paper.

timeline

Comments

07. May 2009 · 00:35 UTC
Your mission… if you choose to accept it… is to write said program and have it export the data to a file we can then…wait for it… upload to a site and have it displayed all pretty for everyone to see.

Triumph

On time too!

Tags: motivation

.

Cat Stacker v2.0

My LD12 entry, Cat Stacker, has grown up and now features assorted fruit. Also, instead of the original tetrisy controls, you can click and drag the current piece around with no time pressure (press A and D to rotate). There are 20 levels and it get’s pretty tough. Good luck! (^ _ ^)/

Cat Cat Watermelon

Tags: haXe, physaxe, stacker, update

Comments

matrin
15. May 2009 · 02:52 UTC
Awesome ^_^
15. May 2009 · 18:28 UTC
Wow, fantastic!! I just played for ages, but I got stuck on level 16. I’ll be back to play it another time for certain though. My only complaint is that there isn’t a purely mouse-only control option, although I know that would be tricky to offer with single mouse button input. I love it though, great sound and graphics too!
16. May 2009 · 00:38 UTC
I’ve been passing this around at work. Superb! The win music is so great… I keep starting the game and beating the first level just so I can leave the music playing in the background. :) The later levels are so brutal…
16. May 2009 · 11:40 UTC
Heh.. isn’t the music a bit repetative for that?
DrPetter
18. May 2009 · 05:40 UTC
You could try something along the lines of what I had for CherryBrush pan/rotate before changing to a more conventional interface – track a “lagging” point behind the mouse cursor, delayed by a few frames, and use the vector between that and the current cursor to infer rotation if the user “swirls” the mouse rather than moving in a straight line, stopping, then moving straight again. I guess you need an additional point too, or an inertial direction vector.

The idea is that you do a dot product between the “expected/current” direction and the “new” one, which will be 1.0 as long as it’s moving in a straight line, but decrease as the path is curved. I guess using cross product would give similar results but with directionality for free, so you can just compare against zero to get direction and magnitude.
22. May 2009 · 10:13 UTC
That’s an interesting idea.. I just tried it out now and it’s quite fun twirling cats around. I tried a variation too where if you grab an object away from the center point, it points in the direction of the mouse (as if you’re moving the head of a floaty ribbon around). A bit fiddly in practice in both cases though, so I went back to good ol’ keys. Hrm.

Mini-LD #9 is coming!

Just a reminder that you have 5 days to finish your research for Mini-LD #9. The rules are:

  • You may use any code you write between now and Friday, May 22nd at 9:00pm EST, but ONLY if it pertains to playing or processing sound.
  • You will be provided with a resource pack containing sound assets for use in your game.
  • Sounds will be provided in the following formats:
    • MP3/OGG
    • XM
    • WAV
    • General MIDI songfiles
  • Due to the size of the resource pack, I will make all sounds available on a webpage so that you can preview them and select the ones you want.
  • All other code for your project must be written from-scratch, during the compo.

Here is the original announcement. Good luck, and see you on friday!

Tags: announcement, audio, MiniLD