madjackmcmad

LD29

Unity3D Framework for Ludum Dare 39

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!

 

Comments

oranebeast
21. Apr 2014 · 00:44 UTC
Its great someone is making a 3d game for LD,

Whats not so great is that you’ve traveled foward in time to ludum dare 39…. Or it was a spelling error,

Oh well, Good luck.

LD34

Power Outage? Ship it! Spirit of the Dare

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

 

Ludum Dare 37

Convincing Players To Stick Around

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!

 

LD 40

Bearblasting Tools and Dirty Tricks

I'd like to share some of the tools and tricks I used to put together my LD40 Compo entry, Bearhalla.

bearhallaem02/empart_01.gif

Aesprite

https://www.aseprite.org/

I am a lousy pixel artist, but Aesprite provides the utility necessary to make quick animations and push your polish level up just that little bit more. It is perfect for creatures -- pixel symmetry tools let you make interesting shapes quickly, and the frame and layer system in Aesprite lets you create individual parts to move/stretch/skew in order to create motion. For most of us there just isn't time to paint multiple frames of real art, so create a core and use Aesprite's easy peasy interface to put a little bounce and verve into your critters.

bee_anim.gif

Rewired

https://www.assetstore.unity3d.com/en/#!/content/21676

If you're making LD projects in Unity, don't write the same input code every time. Rewired and a little bit of your own scripting as a base will make sure that basic input is handled from the get go AND more players out in the world can enjoy your game. If your game is going for unique input styles, this doesn't apply, but if what you're making needs directional motion and button pushing, get up on an input manager and save yourself some time.

At $45 dollars Rewired might not be in your budget, and it might seem extravagant to pick it up for a weekend jam. But if you build games in Unity with any sort of regularity, this is one of the best investments you can make.

LeanTween

https://assetstore.unity.com/packages/tools/animation/leantween-3595

Super simple method to add some bounce and flavor to your game objects. I use it in the UI to shake and color morph some objects, and I use it in the world to make the powerups fly up off the screen when you grab them. The code is straightforward and often just one line for single effects. Take some time to learn about Easings, I'm so glad I did. http://easings.net/

Leaderboards via Dreamlo

http://dreamlo.com/

Free leaderboards, easy to implement in Unity. I've built a UI wrapper that I can carry from project to project, because a highscore collection doesn't change at its mechanical core. If your game is score based, Leaderboards drive players to give it one more go and have a little more fun. Track time, progress, or just have an online repository for players to store some information -- what could you do with it?

Bearblasting Destructible Terrain

bearhalla_01.gif

I wanted to make sure this time around I had weapons that had a lot of punch. In Bearhalla, even the base weapon has the ability to crack and break walls, high rate-of-fire weapons can really tear things up. How does it work? I was loathe to keep track of individual wall hitpoints and the great number of separate objects that would create. I was also unsure about doing track individual damage -- only creating an object if there's an impact, because the bullet spray all over the place would make lots of these impacts.

So I decided that when a player bullet hits a wall, there's a 1 in 5 chance it cracks, or if cracked it becomes broken. The cracking is a texture change, and breaking is converting it to grass. Simple and easy, and something the player really doesn't notice unless they're trying to minecraft through a large wall section. You lose out on the consistency of a wall breaking pattern, but with stuff flying everywhere it's hardly a problem. I added a Shovel powerup that increases the chance of your shots breaking a wall, eventually you can just tear everything apart with single shots.

Two Tile Terrain Technique

I was inspired by Oryx's Tiny Dungeon tileset: https://www.oryxdesignlab.com/products/tiny-dungeon-tileset He had this excellent idea for environments where everything was one of two tiles: the solid terrain, or a vertical edge.

bearhallemtile/emplacement.png

Walls check the tile beneath them, and water checks the tile above. If the terrain is the same, then the texture stays the solid color block. If the terrain is different, the tile switches to an edge.

This allows you to create large environments with very little art, and allows you to keep code complexity down. Anyone who's messed with tiles even a little bit knows how deep a rabbit hole it can be if you start considering edge cases, transitions, etc etc. The typical Ludum Dare solution is to just use single tiles, or hand craft the environments. Quick systems like this allow you to create dynamic environments that still have shape and form.

Give it a try!

https://ldjam.com/events/ludum-dare/40/bearhalla

Thanks for reading! I'd love to hear your thoughts on my tips above, so please comment! And if you feel like it, give the game a spin and let me know what you think.

LD 41

My LDJam Python Challenge!

I love Ludum Dare, and I spend most of them making arcadey twin-stick action games, full of pew pew and stuff flying everywhere. They're always in Unity, and built off an evolving core of base tools that I use for game structure. Controls, menus, leaderboards, all the non-gameplay stuff.

Time to mix it up some!

This time I'll be making a game in Python. And... I don't know Python. But I do have a very big Python book that I've been studying. I won't write any code until the moment the compo starts, and I won't just google/stackexchange the answers either. No pygame, but I'll be using Curses to get some ascii on the screen, and I need an audio solution too. I'll be doing the whole thing live at http://www.twitch.tv/playdungeonmans. Let's see how it goes!

https://www.youtube.com/watch?v=Zq9MBU_NzR0