Game jams: tips for beginners, from a beginner
Depending on the theme and the type of game you want to make, you may think you need to already know how to program, how to build assets, and how to create a compelling gameplay experience with the tools you have. I decided to try and create a bomb timer to fit the theme of the game jam. text = state.
Game jams can be seen as events that are only for people who already have the skills to build a game from scratch. Depending on the theme and the type of game you want to make, you may think you need to already know how to program, how to build assets, and how to create a compelling gameplay experience with the tools you have. Fortunately, all you need is a motivation to learn something new!
For people like me, with little to no programming experience, they can initially seem a little intimidating. With a clear goal at the end though, there is no reason why game jams cannot be used as a project for your learning experience. You might not have something very complex by the end, and you may not even have a finished game. That’s not important! If your goal is to use a game jam as a learning experience, then the best thing you can do is take away more knowledge than you went in with.
I participated in the recent GameDev.tv Community Jam as a fresh game developer, and in my case, I wanted to use the experience alongside my progression through the 2D Unity course. At the time, I had only spent about a week working on very basic C# content, with a few months worth of Blender practice, so I knew how to navigate the courses and what to expect.
I wasn’t going into this with an expectation of creating a game outside of the course content, because it would be taking too much on, and at a very early stage. Instead, I decided to use the experience to work through the content at my own pace, while trying to add extra features of my own.
I didn’t upload my game in the end because I felt it was too similar to the stuff in the course, but I came away with some useful coding experience despite my lack of coding experience. Knowing how to set achievable and realistic targets is key to avoiding procrastination and eventually giving up. Next time, I hope to have a few practice projects under my belt so I can try a game from the ground up – or at the very least, help other teams with some extra 3D assets.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditorInternal;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class AdventureGame : MonoBehaviour {
[SerializeField] Text textComponent;
[SerializeField] States introState;
[SerializeField] States startingState;
[SerializeField] States endingState;
float currentTime;
[SerializeField] float startingTime;
[SerializeField] TextMeshProUGUI countdownText;
States state;
bool outOfTime = false;
// Start is called before the first frame update
void Start()
{
StartGame();
}
private void StartGame()
{
state = introState;
currentTime = startingTime;
textComponent.text = state.GetStateStory();
outOfTime = false;
}
// Update is called once per frame
void Update()
{
ManageState();
ManageTime();
}
public void ManageState()
{
var nextStates = state.GetNextStates();
for (int index = 0; index < nextStates.Length; index++)
{
if (Input.GetKeyDown(KeyCode.Alpha1 + index))
{
state = nextStates[index];
}
}
if (outOfTime == true)
{
if (Input.GetKeyDown(KeyCode.R))
{
StartGame();
}
}
textComponent.text = state.GetStateStory();
}
public void ManageTime()
{
if (state != introState)
{
currentTime -= 1 * Time.deltaTime;
countdownText.text = currentTime.ToString("000");
if (currentTime <= 0)
{
currentTime = 0;
countdownText.color = Color.grey;
OutOfTime();
}
else if (currentTime <= 30)
{
countdownText.color = Color.red;
}
}
}
public void OutOfTime()
{
outOfTime = true;
state = endingState;
currentTime = 0;
}
}