Space Smack

Steam_Button.png
 
Game Summary:
Space Smack! is a 1 to 4 player party game exploding with chaos and sabotage. Enter into the vast expanse of space and clash in a variety of minigames. In this controller-only game, cooperate or undermine your friends to become victorious! Features 15 minigames!

Key Features:

  • Single-player and couch multiplayer with split screens for up to 4 players

  • Remote multiplayer using Steam's Remote Play Together feature

  • Party style space themed chaotic fast phased games

  • 15 mini games

Development Methodology:

Space Smack was developed using an Agile development model with Scrum. The team planned milestones for the development of the game and implemented features according to milestone requirements.

Throughout development, the Game Design Document was updated and served as a living document consisting of feature details and projected outcomes from the development team.

My Role: Gameplay and UI Programmer
  • I was part of the team that was in charge of creating the architecture of the game from which data can be easily transferred to other systems, levels and blueprints.
  • Created the Game Mode and Game Instance Blueprints which is core of blueprint of our game from which data about various systems can be accessed and modified.
  • Created in game blueprint tools for level designers for fast prototyping.
  • Implemented several gameplay features:
    1. Base class for interactable objects from which all types of interactable objects with different features are derived from​
    2. Implemented game start, game over, pause and loading
    3. Implemented checkpoint system, spawning system, progress tracker
    4. Implemented gameplay for 10 of our 15 mini games
    5. Integrated and handled all particle effects managing the spawning, play rate and destroying at appropriate times.
  • Designed framework UI for loading screens, results screens and progress tracking  ​​​

Some of the Blueprints I wrote:

Description:

Platform Creator tool blueprint: Creates hexagonal platforms and can placed in the level, level designers can specify tile size and expansion number. A hexagonal tile map will be created and there are various functions that changes the properties of these tiles which changes the tile type and properties

Description:

Dynamically loads the appropriate level and the exact level variant and sets all necessary properties like number of players, game type and loads the level

Description:

Base class blueprint for interactable objects, contains all necessary methods to spawn object type and has information of type of particle effects to spawn at different instances of the game, also contains virtual functions that other derived objects override

Description:

Set up of level blueprint for one of the minigames, Creates/gets all necessary data for the game before it is started and sends all the information to game mode and game instance

Description:

Tracks the progress of a player to finish line using splines, the objects to track and id can be specified in the level editor

Some screenshots Of Game:
sc1.PNG
sc2.PNG
sc3.PNG
sc4.PNG
sc5.PNG
sc6.PNG
sc7.PNG
PostMortem :

What Went Well

  • The team was able to create a shippable game 

  • I was able to plan deliverables and their due dates with reasonable accuracy

  • I was able to solve most problems that arose, though I had to take several home and they took a few days to solve

  • Communication with level designers went really well 

  • Help was offered often to ensure that all tasks were done on time

  • All teammates were working in-person

What Went Wrong

  • There was always a bit communication lost between 2 of the teams each sprint

  • COVID-19 made it hard to get sufficient playtesting feedback due to the game being multiplayer

  • There was a lot of miscommunication with the artists

  • I took on a little too much work and would often take it home to finish so that the other programmers didn't have to worry about it

  • There was bit of disconnect between leads when planning later milestones that caused issues with deliverable dates being met or confusion about what team was waiting for a specific feature

What I Learned

  • On a small team, you can think that you're communicating enough and it still not be enough

  • It's important to discuss with the team if something is unreasonable or there isn't enough time to do it

  • Make sure to disperse work so that one person isn't always having to take work home

  • Planning effectively is important to delivering things on time and making sure that each team has all the tools they need