Ludum Dare 37
Here's a little clip of the top down zombie shoot-em-up I did for Ludum Dare 37. π»π»π» pic.twitter.com/zN4E4sBbQN
— π΄.: david long :.π΄ (@longda) January 9, 2017
Ludum Dare is a game jam where developers from around the world spend a weekend creating games based on a theme suggested by the LD community. The jam is designed for everyone and take place over 72 hours starting Friday evening and commencing the following Monday.
Entrants can use any tools, libraries, base code, or art however it is asked you opt-out of the graphics and audio categories if youβre using those types assets which were already made prior to the competition. There is also a Compo version which has much stricter rules, sort of like a hardcore mode.
Ludum Dare 37 took place December 9th through December 11th, 2016 and the theme was One Room.
One Room Horde Mode
For this entry, I wanted to make a simple top down shooter in a single space with waves of zombies continually spawning until the player was eventually overwhelmed.
As a scoring mechanism, each enemy killed would contribute one point and the user would start with five hearts constituting successful enemy attacks.
After the player completes each wave, a new weapon replaces the current, much like a Gun Game in Call of Duty.
Enemies
For enemy spawning, I located three transforms at locations inside tents so random enemy prefabs can instantiated at these locations.
Additional spawn points and enemies can be added to the Game Manager inside the Unity editor. Initially, I had a wave system built in so that I could manually create wave profiles and store them in the Game Manager but decided to programmatically generate the waves for horde mode.
void GenerateWave()
{
var nextWaveNumber = currentWaveNumber + 1;
var w = new Wave();
w.enemyCount = (int)Mathf.Pow(2, nextWaveNumber) + 1;
w.timeBetweenSpawns = waves[currentWaveNumber].timeBetweenSpawns * 0.999f;
w.enemy = enemies[rand.Next(enemies.Length)];
w.enemy.startingHealth = 5 + (currentWaveNumber % 5);
waves[nextWaveNumber] = w;
}
Unity3D Concepts Demonstrated
- NavMesh
- IEnumerator
- Coroutine
- StartCoroutine
- StopCoroutine
- WaitForSeconds
- Collider
- Transform
- Rigidbody
- Vector3.Lerp
- Linear Interpolation
- Object.Destroy
- Destroy (after x seconds)
- OverlapSphere
- Random.insideUnitSphere
- Invoke
- Invoke Repeating Tutorial
- Physics Manager
- Input
- Input Manager
- Input.GetKeyDown
- KeyCode