LeviDSmith

LD 38

World Fighter Day One

Got the player character attacking enemies, and end game state when you lose all health, and a winning state by defeating all of the enemies.

Video: https://twitter.com/GaTechGrad/status/856055952637865988

worldfighter002.jpg

worldfighter001.jpg

World Fighter Post Mortem

This article was originally posted at levidsmith.com/world-fighter

Note: I had to remove most of the links because the Ludum Dare post editor is broken. It forces the browser to scroll back up to the top whenever the post is edited. I also spent more time than I wanted converting my Wordpress post into Markdown format

World Fighter, The Cosmic Warrior was my thirteenth game developed for the main 48 hour Ludum Dare game development competition.

Dylan, Joe, and myself got together at Panera on the Friday night before the competition for a Ludum Dare kickoff. We speculated about what the theme would be. In previous competitions, we could get an idea of what the final contenders would be based on voting in previous rounds. However, those metrics are no longer available, so it was anyone's guess.

My previous two games that I had developed over the past month were both collectible games. Note Chomper was a 2.5D Pac-Man clone that I developed for the MiniLD #73. Miner Madness was a platformer that I developed in GameMaker for GM48 where you avoid the bats and collect the gems. I knew I wanted to develop something for this competition where you attack and blow things up.

globy.jpeg

One of the themes that caught my interest was "A Small World". As with some of my previous entries, such as One Gunman, I knew I could take the theme and make it the protagonist of the game. I told our group that I was thinking that I could make a fighting game, with a character like Globey from Pee-Wee's Playhouse as the main character. He would fight other planets across the universe.

My original idea was a fighting game similar to Street Fighter II. The title is a play on "Street Fighter, The World Warrior". At first, I thought about just switching the words "street" and "world", but "The Street Warrior" really didn't fit when I decided that the environment would be space, so I decided to go with "The Cosmic Warrior". I had never made a beat 'em up game, so I decided to make the game similar to classic arcade games like Final Fight or Double Dragon.

worldfighter_punchanim.JPG

For the player's character, I decided to make it green with blue for the facial features and hair. I tried adding a nose to my character by modifying the mesh in Blender, but then it really didn't look like planet so I kept the original sphere shape. I think Joe was the one who suggested using moons for punching, which I think turned out well. I modeled the planet character and animated the moon punching in Blender. I tried keeping the planet and two moons as separate objects in Blender, but that caused problems when importing into Unity, so I combined the three meshes into one, with three bones in the armature. I created an idle animation and a punching animation. I assigned one capsule collider to the planet character, and then a sphere collider to the moon used for punching. Unfortunately, this means that the moon "fist" collider has to be reassigned whenever the model is re-imported into Unity. I haven't found a good way around this yet.

worldfighter_texturemap.JPG

The enemies are similar to the player's character, except they have a different texture. I tried making them look like Mars, with white hair to look like the northern ice cap of Mars. I made it so that each enemy could be destroyed with one hit. I had planned on having multiple enemies with varying levels of health, so that some would be more difficult to defeat than others. I also hoped to have a boss planet character, that would need to be defeated in order to clear the level. I ended up just having a counter for the total number of enemies and the player just needs to defeat all of the enemies to clear the level. I also wanted to have life bars displayed for each of the enemies, but time ran out before I could add that feature.

The movements of the player and enemies were handled with Playmaker addon for Unity. The enemies continually check to see if the player is a certain distance away. Once the player is close enough, then the enemy will move to the player's location. When the enemy reaches the player's location, it will start attacking. After each attack, it will check to see if the player is still in range, and move toward the player again if the player has moved away. Both the player and enemies bob up and down, which I think turned out well. It gives a bit of liveliness to the characters. I had to manually write the turning code myself, since the default rotation was not always in the direction that I wanted. I always wanted the player to rotate with the front facing towards the camera, so I had to take that into consideration in my rotation code.

worldfighter_cellfracture.JPG

I used the Blender Cell Fracture plugin again for making the planets explode. I put the explosion animation in a separate prefab. When an enemy is defeated, the enemy GameObject is destroyed, then an enemy explosion prefab is instantiated which plays the death sound effect along with playing the cell fracture animation. The one problem I still have with the Cell Fracture plugin is that you can't define what the inner parts of the exploded object look like, so it just appears to be random parts of the texture. There are lots of options for the plugin, so I probably just need to look into it some more.

I used Audacity again for the sound effects. I didn't try anything really experimental this time. I used the pitch modification to lower my voice and added a little bit of an echo. I used an envelope for the punch swipe sound. The one thing that I find frustrating with Audacity is that I think it should make the folder of the file that you opened the default when saving or exporting the modified file, because it wastes a lot of time having to dig through the directory tree to find your sound effect folder each time. However, it is a free tool so I can't complain. The Audacity source code is also on GitHub, so I could actually change this if I really wanted.

The music was composed in GarageBand on my MacBook Pro, as I have done in previous competitions. Again, I used my regular process of making a couple of melodies, then I changed up the instruments and made slight modifications and mixed the melodies together. I also made a slower version with fewer instruments for the title screen.

I made the starfield background using a tutorial that I found years ago when making my Earthball pinball game. I changed it up a bit to suit my needs. I left out the supernova stars to create a skybox background. I learned that the skybox settings are hidden in the Window Lighting settings, and it is specific per scene. I had to change the Environment Lighting Source to a solid color, since the starfield skybox source made everything too dark. I put two stars down as a guide on the ground texture for the bounds for where the player can move.

worldfighter_unity.JPG

The game world is composed of a number of "blocks", similar to a street block. Each block has three enemies, which are somewhat randomly placed. There are two starport type objects, which I modeled and texture mapped in Blender at the last minute, which also form the bounding area of where the player can move. I had envisioned that these would be destructible and produce items, similar to the trash cans in Final Fight. The level could be improved by having an invisible wall that prevents the player from proceeding until all of the enemies on a block are defeated. I have a case statement that does add an invisible wall before the first block and after the last block to prevent the player from falling off of the ground.

I am happy with the game that I made for this Ludum Dare competition, but I don't feel like I learned or tried anything new. There are definitely things that I want to fix and enhance in this game. However, after three back-to-back game jams I've decided to take a break for a little while. I think I want to try a new game engine or new modeling tool next time.

https://www.youtube.com/watch?v=6N7VFddmXwI

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

Entry page: https://ldjam.com/events/ludum-dare/38/world-fighter

Knoxville Game Design Entries

Here is a gameplay video of the Knoxville Game Design Ludum Dare 38 entries.

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

Tiny Planet Dash by Dylan Wolf - https://ldjam.com/events/ludum-dare/38/tiny-planet-dash

Hopperbot by Joe Miller - https://ldjam.com/events/ludum-dare/38/hopperbot

World Fighter by Levi D. Smith - https://ldjam.com/events/ludum-dare/38/world-fighter

LD 39

Knoxville Game Design - Ludum Dare Kickoff

The Knoxville Game Design Ludum Dare Kickoff will start tomorrow at 7pm Eastern Time. All game developers in East Tennessee are welcome. Look for the sign on our table!

For more location information, please see:

http://www.knoxgamedesign.org/660/ludum-dare-39-kickoff-and-gm48-entries/

knoxgamedesign_tablesign.jpg

Slowbot - Day One

Slowbot gameplay video

https://www.youtube.com/watch?v=0yrkIMSbvbo

Slowbot

Slowbot is my Ludum Dare 39 entry. It took me about 18 hours to create. I will write a post mortem in a few days. The game has 20 total levels and takes about 15 minutes to complete, which makes it my longest LD entry in terms of gameplay time. Thanks to everyone who watched the live stream on YouTube and provided feedback!

Gameplay video

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

LD Entry

https://ldjam.com/events/ludum-dare/39/slowbot

Download and play

https://gatechgrad.itch.io/slowbot

Over 3 hours of Ludum Dare games

Video of most of the games that I played for Ludum Dare 39.

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

LD 40

Knoxville Game Design Ludum Dare Kickoff

Members of Knoxville Game Design will be getting together at 7pm Eastern Time on Friday December 1, 2017 for the Ludum Dare Kickoff. We usually hang out until the theme announcement at 9pm and then have a short discussion / brainstorming session after. Since our monthly meetings are now online, this is one of the few times we actually get together and meet in person. All game developers in the East Tennessee area are welcome to join us.

For details on the meeting location and more information about our group, please see http://www.knoxgamedesign.org/

Irwin McSpenders - Day One

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

Gameplay video after about 10 hours of work on Irwin McSpenders. It's really more of a simulation than a game at this point. However, it does use real values in all of its calculations.

Collect money laying around to increase your income. However, your tax rate will increase as you collect more money. Decrease you taxable income by collecting dependents. Dependents will even help you collect money!

LD 41

Five Years of Ludum Dare

https://www.youtube.com/watch?v=953cjJFRVUg

This is a compilation video of all of the Ludum Dare games that I've created over the past five years. I started with Ludum Dare 26 in April 2013, and I've completed 15 straight compo entries since. The video shows gameplay highlights (post-compo version in some cases) along with a portion of the time lapse development.

Blocks of Nibiru Gameplay Video

Thanks to Splazer Productions for making a gameplay video of my Ludum Dare 41 compo entry, Blocks of Nibiru. It's a cross between a space shooter and falling blocks puzzle game. The gameplay was inspired by games like Gyruss and Tetris.

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

Rate the entry here - https://ldjam.com/events/ludum-dare/41/blocks-of-nibiru

Download it here - https://gatechgrad.itch.io/blocks-of-nibiru

Blocks of Nibiru Time Lapse

Here's the time lapse development video for my Ludum Dare 41 entry, Blocks of Nibiru. Enjoy!

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

Entry page - https://ldjam.com/events/ludum-dare/41/blocks-of-nibiru

Blocks of Nibiru Post Mortem

Originally posted on my site at https://levidsmith.com/games/blocks-of-nibiru/

After five years and sixteen consecutive Ludum Dare entries, I don't know if there's much for me to say in a post mortem anymore. Honestly, I don't feel like my game development skills have gotten that much better. However, I feel like what I have previously done can be done in a much shorter period of time. What used to take me the full 48 hours to accomplish, can now be done in the first day. That leaves me a lot more time to test and tweak gameplay difficulty.

The idea for this game came from the story about a hidden planet called Nibiru, which is supposed to cause the end of the Earth. I had originally envisioned a fully functional falling blocks game like Tetris with AI, but I settled for just getting the block stacking working. The objective is to prevent the blocks from getting to the top like in Tetris, but you have to shoot them instead like in a space shoot em up.

In most of my previous Ludum Dare entries, I only had one or maybe two gameplay mechanics. I believe Blocks of Nibiru had the most of any of my previous entries. Below are most of the mechanics I was able to implement for this game.

  • Multiple ships
  • Upgradable cannons
  • Gun heat / Overheat cooldown
  • Speed upgrade
  • Orbital movement
  • Block stacking
  • Bombs to clear blocks
  • Collectible powerups

I really started learning how to place objects in polar coordinates when I made my Easter Egg Hunt game last month. In that game I laid out the eggs in a circular fashion, using the angle as the interval and the radius as the random value. Using the angle and radius mapped really well to the horizontal and vertical Input Axes in Unity. I was amazed at how well it controlled in my game. Then I remember this had been done before. It was a game called Gyruss that I played on the Nintendo Entertainment system as a kid. However, Gyruss did not have the ability to pull in and out like my game. It may not seem like a big difference at first, but moving along the radius does really help when you're trying to track down a powerup or trying to spread out a multi-cannon shot. gyruss_256x.jpg

Since my ship object was a prefab, it was not difficult to make multiple instances of the ship. Placing the second ship was easy, because I just added 180 degrees to its angle. The third ship was a little more difficult. I could not keep the ships evenly spaced (120 degrees apart) without moving them around, which would be awkward. Therefore, I just added the third ship to be 90 degrees between the first two ships. Then the fourth ship would just be 270 degrees away from the first ship.

For the cannons, I just modeled three red cylinders and placed them at angles at the front of the ship. I tried not to make the spread two wide, but not to narrow as well. The first cannon shoots directly forward. To keep symmetry, I decided that when the first upgrade is applied, the two angled cannons would be enabled. Then on the second upgrade, all three cannons would be enabled. Again, since the ships were instanced, it made it so that the cannon upgrades would be unique for each ship.

As I was playtesting the game, I noticed that an overheat / cooldown system was needed. I didn't want players to keep mashing the shoot button forever with no penalty. I wanted players to feel like there was importance for when they take a shot. Therefore, I added the heat percentage to the ship instance. When it reaches 100% (it's actually stored as a float value), then the player is locked out from shooting with that ship for a period of time. I used my harmonica to make the beeping sound when the ship overheats, so that there is audio feedback. I probably should have added a smoke effect or something when the ship is overheated. The heat reduction powerups were made to allow more shots before the ship overheats. Looking back, I would have made fewer levels of heat reduction, like just two so that when the powerup is collected it feels like it makes more of a difference.

The speed upgrade was not difficult to implement. I just increased the speed instance variable for the ship. However, it was not possible for each ship to have a unique speed, because that would eventually result in ships overlapping and give it just general janky feeling. So I decided to have the speed upgrade applied to all ships, which kept the symmetric spacing between all of the ships.

The bomb upgrade was fairly simple to implement. If the bomb counter is greater than one, then decrease it and delete all block instances currently in the game. I used a pizza pan and lid of a pot to make the sound effect, sort of like clashing two cymbals together. bombemsound/em256x.jpg

The powerups were made with a six sided circle in blender extruded out to make a 3D shape. Then I duplicated and made a longer and smaller one to cut out the center using the Boolean modifier (I always forget if it's difference or intersect). The voice that plays when a powerup is collected is just my voice with Audacity's vocoder applied.

I guess the one thing I did learn from this game was how to rotate a skybox in Unity. I took a walk at the local park early Sunday morning, and took a picture of the sky. Unity now has an option to make a skybox out of a panorama picture, instead of having to put together six sides of a cube. The important thing is to make sure that the picture is seamless. I was able to do that in Unity using the Make Seamless Advanced plugin. I also took pictures of some rocks around the house that I used for the block texture, and the side of a tree that I used for the background board plane. The ship was textured with a picture I took of the metal on the side of my air conditioner. sky_256x.jpg

I used the Blender cell fracture plugin again, for making the blocks explode into multiple pieces. I had to turn the fragment number down. I think the default was something like 100, so I turned it down to 20. The one issue was that I had to remember to set the animation to legacy for the explosion effect to apply. As usual, I put the explosion into a separate prefab that gets instantiated when the block is destroyed, so that the block is immediately removed from the game logic. It also allows me to put the destroy sound effect (which was just me clapping my hands in front of the microphone) in the explosion prefab, so that continues to play after the original block is destroyed. blockemcell/emfracture_256x.jpg

The music was composed in GarageBand again. This time I used my new MacBook laptop, which is much more speedy than the one I previously used which was about six years old. I really didn't do anything out of the ordinary for the music this time. I just made a couple of melodies and switched them between instruments, and used one of the standard generated beats. I did increase the pitch of the music as the block stack gets higher, which makes it feel like a greater sense of urgency, similar to how the old Tetris for GameBoy did the music.

Looking back, I think there were a few things that could have made this game better. I wish I had put tail renders on the bullets. The explosions could have also had lighting effects. However, having too many point lights on at the same time can cause problems. I think after eight or so point lights, they just start getting ignored. I could have at least put a point light on the ships, or a flash of light when the cannon is fired.

I also wanted to have the skybox change color as the player progressed through the game. I couldn't figure out how to get a handle on the color of the skybox. Overall the game just like it has too much orange. I probably should have made the score text, level text, and bomb display be larger and a different color. The 3D text model on the title screen could have been a different color as well, because it's really hard to read especially in thumbnails.

I guess that's it. I used to say that the day when I didn't learn anything new, I would stop making games. There are some new things that I do want to learn in Unity, like the new shader interface. I just feel like I've moved out of the learning phase and into the making things more efficiently phase.

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

LD 42

17th Ludum Dare

This will be my 17th Ludum Dare in a row. You can see all of my previous entries and post mortems at https://levidsmith.com/game-list/?jam=ludumdare

levidsmithemludumdare/emgrid.jpg

Real World Gathering - Knoxville, Tennessee

Game developers in Knoxville will be getting together at Token Game Tavern at 6pm on Friday August 10 for the Ludum Dare 42 kickoff. Usually our gathering wraps up with the theme announcement, but this time we will be getting together at the start of the theme announcement due to the earlier start time.

For more details see http://www.knoxgamedesign.org/967/ludum-dare-42-kickoff-at-token-game-tavern/

ld41-kickoff_512x233.jpg

Crazy Delivery - Time lapse development video

The time lapse development video for my Ludum Dare 42 game, Crazy Delivery, is now up.

https://youtu.be/azvlZUnkXxI

Play it online here - https://levidsmith.com/games/crazy-delivery/

Rate it here - https://ldjam.com/events/ludum-dare/42/crazy-delivery

LD 43

Time lapse development video

The time-lapse video for my LD43 game, Stratospheric Aerosol Injection is now up

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

Entry page - https://ldjam.com/events/ludum-dare/43/stratospheric-aerosol-injection

LD 44

Ludum Dare 44 Tools

Below is the list of software tools and websites that I anticipate using for my Ludum Dare 44 entry:

  • Unity 2019.1.0f2 - https://unity.com/
  • GIMP 2.10.10 - https://www.gimp.org/
  • Open Broadcaster Software 23.1 - https://obsproject.com/
  • Notepad++ 7.6.6 - https://notepad-plus-plus.org/
  • GarageBand 10.3.2 - https://itunes.apple.com/us/app/garageband/id682658836
  • SourceTree 3.0.12 - https://www.sourcetreeapp.com/
  • Audacity 2.3.1 - https://www.audacityteam.org/
  • Timelapse Maker - https://github.com/gatechgrad/timelapsemaker
  • BitBucket - https://bitbucket.org
  • YouTube Streaming - https://www.youtube.com/LeviDSmith

These are the tools that I may possibly use:

  • BFXR 1.4.1 - http://www.bfxr.net
  • Leaderboard Example - https://github.com/gatechgrad/LeaderboardExample

See my previous LD entries at https://levidsmith.com/game-list/?jam=ludumdare

Downloads

Does anyone actually download and play the games that they rate anymore?

yen-master-ratings_01.PNG

yen-master-downloads_01.PNG

Yen Master time lapse

The time lapse development video for Yen Master is now up.

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

Entry - https://ldjam.com/events/ludum-dare/44/yen-master