Home | Rules and Guide | Sign In/Create Account | Write a Post | Reddit | #ludumdare on irc.afternet.org (Info)

Ludum Dare 26 — April 26th-29th Weekend — Theme: Minimalism

  • Judging Ends: in 3 hours, 9 minutes, 21 seconds
  • Play and Rate Games | View All Games | Edit | View My Entry
    Twitter | #ludumdare on irc.afternet.org

    [ Warmup Weekend | Real World Gatherings | Tools | Ludum Deals (yep, we got it) ]


    About Tulrath of Lakehome Games, LLC (twitter: @tulrath)

    I make computer games. I show others how to make computer games. I'm a bit strange.

    Entries

     
    Ludum Dare 23
     
    Ludum Dare 22 Warmup
     
    Ludum Dare 21

    Tulrath's Trophies

    Archive for the ‘LD #23’ Category

    Tiny Gods Post-Mortem

    Posted by of Lakehome Games, LLC (twitter: @tulrath)
    Sunday, April 22nd, 2012 9:03 pm

    Tiny Gods took a total of 19 hours to complete and was made entirely from scratch.

    What Went Right

    Schedule.  Planning out my time worked well again, I spent a total of:

    • 2 hours on initial concept, core mechanic, core mechanic consequences, game design
    • 4 hours doing artwork
    • 2 hours in core game code (movement, physics, messaging, enemy AI, world-state managment)
    • 3 hours in the level-complete and level-transition logic
    • 1 hour GUI programming
    • 2 hours on music and sound effects
    • 3 hours coding the ammo – planet influence feature
    • 1 hour creating level (again, not nearly enough time here)
    • 1 hour packaging-up entry, submitting entry

    Total Production Time: 19 hours

    Things I wanted to spend more time on:  the artwork, the GUI, more levels, and a final boss battle

    Tested Pipeline.  Being familiar with all my tools helped tremendously — I’ve used this toolset (Unity, GIMP, GraphicsGale, Audacity) before, so I had a well-defined pipeline.  I knew exactly what formats to use and I knew exactly what settings I needed to get everything into Unity without any issues.

    Prefabs.  In my first LD48 (#21), I burned a lot of time trying to figure out Unity’s physics engine, but now I use a “cheat sheet” to tell me when to use: Triggers, RigidBodies, Kinematic RigidBodies, and under what conditions OnTriggerEnter() works and when it doesn’t.  Using Prefabs for everything worked amazingly well and saved a ton of time.  I was surprised (and pleased) to find that instantiated prefabs (that were already saved in separate levels) would receive updates when the original prefab was modified.  Near the end, I was adding AudioSource components to my single Planet Prefab (the shotgun reload sound) and every planet in every level got that update.  I had always thought that level data really was just a set of metadata pointers, and this really confirmed it.

    Early Artwork.  Doing the Artwork first was a boon to my productivity — it really kept me motivated.  I was able to use a single prefab for the player, monsters, bullets, and planets and then code around that.  After words, it was just a matter of making more prefabs (or extending the code) for variations and then adding them to the collection in the WorldManager.  Having a central “WorldManager” class worked really well too – this managed the game state, and managed most of the communication with other classes – this allowed me to have “lose coupling” because no class needed intimate knowledge of any other class.  Using the SendMessageOption.DontRequireReceiver for all messages also allowed me to easily work from either the top-down or bottom-up and when “ends met”, it all worked out as planned.

    Formulas & Binary Math.  To determine an enemy’s strength by level, I used binary math on the level to pull out 4 qualities for its health, the amount of damage its attacks do, the speed of its bullets, and the frequency at which it shoots bullets.  This worked out amazingly well, as the difficulty of the enemies has good variation (lots of ups and downs in the qualities per enemy), but also overall increase in difficulty.  A simple set of formulas takes care of it, which saved having to enter and maintain all that data.

    What Went Wrong

    Pre-coding.  In my first hour, I thought I was going to use an uber-special, re-sizeable, custom array class that could be modified in the editor (and could use Javascript Push and Pop commands just for good measure).  Turns out, I didn’t need it — the WorldManager managed the game, and each instance of each object managed itself.  Metadata for the game was also just as easily handled by the WorldManager — things like “maximum simultaneous enemies per level.”

    Pre-Dare Prep.  I didn’t start my pre-dare prep early enough, so ran into extra work I needed to do on my personal website, plus extra work I had to do with my LD WordPress account, and lots of other little “odds and ends” that needed to be cleaned-up.  This led to a lot of stress the night before the dare.  Next time, I’ll start all my pre-work at least  a week ahead of time.

    New Untested Features.  This time I wrote some features that I’ve never done before — namely the influence of the planets on the player’s ammunition type.  This didn’t amount to a lot of lines of code, but it did result in lots of thought-time spent in trying to figure out, “oh, just exactly how am I going to do that?”    I finally figured out that this just amounts to the planet sending out a Broadcast message to any “Player”-tagged object while that object is within its OnTriggerStay() — but figuring out that solution took three hours.  Three hours for this one feature alone is FAR too much time when you only have about 20 hours total to get something done.  My plan for resolving this in the future is to start maintaining “Unit Test” projects again (I used to do this extensively in DarkGDK) for ideas I come up with, that way I’ll be have a good idea how to code something up before being in a compo.

    I’m Done!!!

    Posted by of Lakehome Games, LLC (twitter: @tulrath)
    Sunday, April 22nd, 2012 5:46 pm

    Just barely getting in under the wire this time, but 48-hour compo entry “2 Tiny Gods” is done!

    You can play it on the Web, Windows, or Wine in Linux — check out the comp entry for full description and details:

    http://www.ludumdare.com/compo/ludum-dare-23/?action=preview&uid=4703

     

    Almost Done: TinyGods

    Posted by of Lakehome Games, LLC (twitter: @tulrath)
    Sunday, April 22nd, 2012 9:02 am

    Tiny Gods is almost done…

     

    What if your ammunition decided it didn’t like you?

    What if your ammunition decided it no longer held the same beliefs as you and began following different gods?

    What if your ammunition was also your power, your strength and your life?

    The ancient gods are not pleased with your recent apotheosis and endeavor to bring about your Fall.  They send wave after wave of evil beings to destroy you – but they’re attacks are coordinated, and surprisingly effective.  The ancient gods are not usually this coordinated in their efforts.  

    Something is directing them.  Will you survive long enough to uncover the truth?

    Tiny Gods is my interpretation of the “Tiny World” theme for LD48.  Tiny Gods is  a 2D “Bullet Hell” game in the style of 1995-1998 SNES games.  In Tiny Gods, you are a new demi-god, but your powers are not yet stable and are easily influenced by the followers on all the Tiny Worlds your find throughout the universe.  As a demi-god you can absorb Tiny Worlds to give you ammunition to defeat your foes, or you can stay close to worlds that give you power.  You must constantly balance staying in the proximity of tiny Worlds (to absorb their influence) and consuming Tiny Worlds (to give you ammunition).  But don’t stay too close — the attacks of your foes will damage worlds as well, changing them into Dead Worlds where the people follow the gods of the underworld – Pluto and Proserpine.

     

    There’s no turning back now!

    Posted by of Lakehome Games, LLC (twitter: @tulrath)
    Friday, April 20th, 2012 5:02 pm

     

    Perhaps today IS a good day to daré.  Also, I’m in…

    It’s the usual suspects: Unity3D, Gimp, sfxr, audacity, anvilstudio.  If I have time, I may break up sprites into parts and try out Spriter


    All posts, images, and comments are owned by their creators.

    [cache: storing page]