Things we would do better next gamejam


Questions we asked ourselves

Part 1

Things I would advise myself / our group if I could go back to day 1 of our gamejam to:

- improve the results we made as a group
- increase the speed of my work
- improve the quality of my work

Part 2

- what did I do well, how did I do it well, display that work and explain why it's good or what the process behind it was

DelinQvent - Art

Part 1

I would suggest the immediate creation of both a design document and a discord server. Our team never made the former but we did create the latter shortly into the GameJam. The design document could have made for a more focused development that clearly outlined the scope of the project - and maybe an estimated workload - whereas an earlier DiscordServer could have further benefitted our organization and time management.

Part 2

This was my first GameJam and some advice I took that worked out 100% is to not burden myself with tools I am unfamiliar with. Lead with what your talent is - art, music, programming, etc. - and find other people who want to bring a project to life with you. Not only was the final result of higher quality than I had imagined, but this was also an opportunity to flex some communication and conflict management skills. A rule I've followed throughout life: If there's an assignment, but at least an hour towards it every day. As the Artist, this allowed me completely finished all Assets'n'Sprites a few days early so that I could focus completely on any later additions.

ASarevok - Programming

Part 1

- We did a great job getting the story 90% finished on day one, but we didn't properly define the gameplay of our game. We should have taken more time to define that more clearly on the first days. Just talk the idea completely out, write it down so people can read it and can agree on what's written. After that go to work. We jumped in headfirst without having some of the basics defined, which made us lose time during the jam. Get those major decisions defined at the start and write them down in a design document.

- To improve the speed of my work, it would've really helped if I already had done all the mechanics in a previous prototype. We were talking about adding an isometric jump mechanism, but the programming logic needed for that is a lot and we ended up scrapping it because it was too complex and would've eaten too much of the other parts.

- One thing I started doing at the end of the jam was using an observer mechanism in my logic, this ended up being really handy because it gives the game one place of truth where I store a specific game state, and if an update happened I call all my observers and told them there was an update. (I'll showcase that in part 2)</p>

Part 2 (sidenote: this is a unity project so this applies mostly to unity)

(Warning, nerd talk ahead)Like I mentioned one really cool thing I used observer pattern. One reason to use this is that you want to update many other systems outside this class, but you don't want the Update function in those other systems to constantly check if something has happened. When that "something" happens you just want it to update everybody who's interested. To set that up I made a Subscriber interface:


public interface Subscriber
{
    public string GetName();
    public void SubscriberUpdate();
}

I need the Getname function to add and remove the Subscriber from the list, and I need the SubscriberUpdate function so I can call that on each observer. I used this in my wave management system. When a wave ends, multiple systems have an action, you need income, nighttime has to switch to daytime, new dialog had to be placed for Toki, Toki's super powers had to be activated or deactivated... Here's the code I used in my wavemanager to set that up, I call the UpdateSubscribers function on each wave update. An example of that:

public class TokiSuperPowers : MonoBehaviour , Subscriber

And then inside that TokiSuperPowers class:

public void SubscriberUpdate()
{
    if (waveManager.waveActive && playerAbilities.tokiPower.currentLevel > 0)
    {
        usePower = true;
        currentWave = waveManager.currentWave;
        TriggerPower();
    }
    else
    {
        counter = 0;
        usePower = false;
    }
}

private void Awake()
{
    waveManager = FindObjectOfType<wavemanager>();
    waveManager.AddSubscriber(this);
}

private void OnDestroy()
{
    manager.RemoveSubscriber(this);
}</wavemanager>

It's in the awake function we add this system to the wave managers update group and in OnDestroy we remove ourself.

Leave a comment

Log in with itch.io to leave a comment.