About madjackmcmad (twitter: @madjackmcmad)

Entries

 
Ludum Dare 37
 
Ludum Dare 35
 
Ludum Dare 34
 
Ludum Dare 33
 
Ludum Dare 32
 
Ludum Dare 29
 
Ludum Dare 28

madjackmcmad's Trophies

Proof of Self Appreciation
Awarded by madjackmcmad
on August 24, 2015

madjackmcmad's Archive

Convincing Players To Stick Around

Posted by (twitter: @madjackmcmad)
Thursday, December 22nd, 2016 12:13 pm

When the Ludum Dare compo ends, the judging begins, and it is an overwhelming task. There are SOOOO many games to play, which is thrilling! Players will dip in and sample lots of games along the way… but you want more than that. You want folks to get in, stay engaged, and see all the cool stuff you have to offer. I have had some success in doing exactly that, and I want to share my techniques with you.

Tell Them What’s Coming

Almost all my LD entries have been wave based, and each of those waves introduces players to a new concept. New power, new enemy, some new gameplay piece. I want players to know this, so the wave entry text talks about it right at the get go.

wave_example_02

wave_example_01

wave_example_03

I didn’t invent this concept, it’s a trick as old as Joust:

joust_example
I do my best to use this concept in all my games. 1111, while it doesn’t have a wave introduction, makes very clear that as you rank up, enemies do too, and each rank introduces a new number to do battle against. When you finally clear the angelic 9s, you win the game.

Wave based gameplay often means that samey enemies just pile up faster and stronger until you die. Players will catch on to that, and the gameplay break between waves is often a point when players will say “Ok I’ve seen enough” and drop out. But if you remind them that there’s more and newer adventure right around the corner, they’ll stick around.

Let Them Party As Hard As They Want

The best way to sum this up is Don’t Kill Them, Or Make It Hard To Die. Game Over is the perfect time for a player to say (again), “Ok I’ve seen enough” and there’s a possibility that they miss out on fun content.

1111 Has a generous life bar, and when it runs out you simply drop a rank. It’s very difficult to lose permanently.

Demon Truck, Cave Harrier and Gridshape Get are all timed and discrete experiences. You can’t Game Over, but you do take hits and your score is affected by your performance.

cave_harrier_death

Blue Helmet Beatdown and We Must Protect Lich House do have Game Over conditions, but it is exceptionally unlikely that the average player will stumble into them in the early game. Even truly hapless players are almost guaranteed to see a good chunk of gameplay.

Game makers may balk at this advice, after all, games that are too easy don’t grasp the player in the long run. However, in Ludum Dare your goal isn’t the long run, it’s making sure they give your game enough time to experience it fully. That may mean five minutes, it might mean ten, it might mean three. You want to remove barriers to completion, but still challenge them to do their best.

Use The Game To Make Your Levels

This may be a tough one if you aren’t used to procedural generation. If your game is wave based, you want the waves to be based on what players do, and not necessarily where they do it. If you have to hand-build environments for each level, that drastically limits how much you can do, *and* chews up time you could using making your game more fun.

Now if you’re making a puzzle game or something that requires specific events to transpire at specific locations, maybe this advice isn’t for you. I still think it’s a worthwhile effort to train up on procedural generation before your next LD.

1111, Lich House, Demon Truck, and Gridshape Get are all set in open environments that don’t change. What *does* change is the gameplay elements created by the monsters and player powers.

Cave Harrier is also in an open environment, however each zone had unique art. That was a must to try and match the Space Harrier feel.

Wreckbeard was a Shinobi/Rolling Thunder clone, which meant multiple heights of platforms were a must. So I created platforms and blocks, then placed them procedurally when the level was formed. Simple rules for height and collision meant the level was playable.

proc_example_02

proc_example_01

 

Reward Them With Your Best Gameplay

This advice might raise massive alarm bells, especially for developers who’ve worked on larger indie or AAA projects. A Golden Rule is that you put your best and most polished gameplay first because that’s what all your players are going to see, only the hardcore stick around until the end. For an experience that lasts hours and hours, I completely agree. But the LD games are short, and if you are using wave based gameplay, each wave builds upon the last until you finally emerge into an environment where the player is at full potential and the challenges are out in force. The journey is short (again, three minutes? Five?) so the reward is in reach, and if you…

Tell them what they’ll get

Allow them to play unhindered and

Have a variety of procedural content,

Many more players than you expect will see that reward. If you’d like to see these concepts in action, [blatant shill]check out my LD37 entry, We Must Protect Lich House![/blatant shill]

Thank you and good luck!

 

Lots of flavor from simple systems

Posted by (twitter: @madjackmcmad)
Thursday, December 15th, 2016 1:02 pm

One of the things I’m happiest about in my LD37 entry We Must Protect Lich House! is that I was able to get a fair amount of variety in the creatures, both enemy and ally, that show up in the one room you have to protect. Almost a full party of enemy heroes — didn’t manage to get in a cleric, sadly. I was able to do this building a simple combatant system that ended up being flexible enough to create almost all the monster features on its own. Combatant, Weapon, Projectile.

 

Every Combatant has some basic information:

  • Move speed
  • Health
  • Close-enough range to target
  • Firing range
  • Weapons

The Weapons are simple too

  • Firing rate / shots per burst
  • cone/spread
  • Projectile prefab to spawn

And last the Projectile

  • Speed
  • Damage on hit
  • Force on hit
  • Lifetime
  • Scale size over time

All the AI share some common threads: pick a target, get close enough to it, and if you’re in firing range fire weapons. The Ranger would be the most simple example, showing up on the scene and firing arrows at the Lich or his towers. But the Ranger actually showed up second, the first AI was the fighter. His job? Pick a target, get close enough to it, and fire weapons when in range. Really!

The fighter’s weapon fires projectile that barely moves and lives for a quarter of a second. The animation is a sword flashing back and forth. So while it looks like he’s swinging something around, he’s performing the same logic and going down the same code path as the bow shooting ranger, or fireball tossing mage. Hell, the ally Orc does the same thing: move and fire!

Flavor comes from the variety. Move speed, fire rate, impact power, and of course sound effects. Orcs and fighters are identical except the Orc’s punch is bigger and has a tremendous knockback. Rangers and Mages fire the same weapon AI, but Mages have a touch of extra code to allow them to charge up and cast spells. Rogues use the same AI except they don’t have any weapons to fire! Instead of picking enemies, they pick loot, and once they have enough loot, they pick the door to run out.

What does this allow in game? Mayhem!

 

The system worked out so well that in the last few hours I had a chance during a polish pass to add in the Paladin as seen above. Fighter AI with two weapons, a short firing hammer (identical to the sword) and a ranged hammer toss, just like in Diablo 2 😉 The only special code he needed was to make sure when he fired his weapon he chose an angle at random rather than directly at the target.

I was not able to extend the mage spell casting system in a way that I wanted to, but it was built on the same ideals: particles to apply, time to cast, then a method to callback to in the game logic. I’d wanted healing, shielding, and hasting from a support hero, but there wasn’t time — or energy, because twice that weekend I nearly fell asleep at the keyboard on camera!

Hopefully this is useful information that will help you add more content and variety to your next LD entry, which is a scant 16 weeks away! Better get prepped. If you have any questions please throw them in the comments, and take a look at We Must Protect Lich House! if you feel like seeing these thoughts in action.

Power Outage? Ship it! Spirit of the Dare

Posted by (twitter: @madjackmcmad)
Monday, January 4th, 2016 12:54 pm

It was bound to happen one of these Dares. On the Saturday night of the compo, I lost power at my house and succumbed to sleep. Between the initial outage (around 11:30pm) and my ensuing extended power nap, I lost about 12 hours of development time in a 48 hour contest. Then I lost two more thinking that I should just give up and write this one off.

demon_truck_final_smaller

What was I thinking!?

For me, the spirit of Ludum Dare is that you make what you can and ship it. This time around, surprise: that limit was suddenly 36 hours instead of 48… and that’s it. Nothing else changed. Sure, 12 hours is a full 25% of the time allotted, and that means drastic cuts, but it doesn’t have to mean an unfinished experience. Does any of this sound familiar to you?

  • Had to drop a number of features.
  • Didn’t have as much time to polish as was necessary.
  • Game felt full of potential but didn’t get a chance to deliver.

In other words, Demon Truck felt just like every other Dare project, just shorter. When I realized that, I was able to put the final hours into making the game a closed experience– one that starts and ends satisfactorily.

Enemies got cut and there are only two bad guys with two bad guy behaviors, all the other ones were dropped.

Upgrades are handed out in a static pattern over the course of four waves, and not randomized choices after each wave.

Waves are all built by hand in some awful code, and not the dynamic endless-wave style of previous LD projects of mine.

The game ends after a short set period of racing and demon-fooming, with a humorous nod to the power outage that made me cut things short.

Compared to many other LD compo entries, Demon Truck lacks complexity and challenge. However, the spirit of the Ludum Dare is not to make something complex and challenging, it’s to use the time you have to make what you can and ship it. Players can sit down with Demon Truck, have a fun ride, and be done in a few minutes. I’m proud of that, and it’s a lesson I’m taking with me to April’s contest as well.

Play it here if you’d like! http://ludumdare.com/compo/ludum-dare-34/?action=preview&uid=5448

 

Unity3D Framework for Ludum Dare 39

Posted by (twitter: @madjackmcmad)
Sunday, April 20th, 2014 5:56 pm

I’m going to start this weekend with a simple Unity3D test scene, just to make sure I’m sane. Takes input from the joypad, plays music, allows for clicks to turn the music off.

http://www.dungeonmans.com/ludum/29/test.html

Source here

http://www.dungeonmans.com/ludum/29/testsource/

Looking forward to the weekend!

 

[cache: storing page]