Multiplayer Platformer

Roles

  • Project Lead
  • Programming
  • Modelling
  • Texturing
  • Game Design
  • Level Design

Tools Used

  • Unreal Engine
  • C++
  • Blueprints
  • Blender
  • Substance Painter
  • Substance Designer
  • ZBrush
  • Perforce
  • YouTrack

Project Description

The goal of this free time team project is the development of a multiplayer platformer game. Up to four players can build different types of platforms or traps to reach the finish line. In order not to fall off the map, lose a life and be eliminated from the round, players can work together (or hinder each other) to reach the goal and earn points which are required to win the game. Different pickups such as a jump or speed boost can be collected to gain an advantage. This leads to a chaotic but fun multiplayer experience. The game is currently under development.

My Role

I initiated the project because I wanted to develop a fun multiplayer game and learn Unreal Networking functionality. So far, I have developed most of the features that are implemented. This includes a building system, a pickup system for the platforms and the functionality of some platforms such as a multiplayer portal system. I have also implemented a display to let all players know about the distance they have covered between start and finished. To give the game characters’ movements a silly but funny appearance, I added physical animations. Some base classes, e.g. the platforms or the game mode, have a C++ base class, since some performance-critical functions are to be implemented there later. However, most of the gameplay logic is currently implemented through Blueprints.

Since the game’s art style is intended to be stylized, a few different platforms have been modelled and textured to see how this style translates. So far, I have used Blender, ZBrush, Substance Painter and Substance Designer to create these assets. Some shaders needed for different phases of the game were created by me, for example a dissolve, outline and dithering material. I also created simple Niagara FX, e.g. when a platform pickup is spawned.

We use Perforce as the version control system. I am the administrator of our Perforce instance, which I host on my (Ubuntu) server. Since the other team members have been working only with git so far, I was able to give a brief introduction on Perforce. Even as a small team needs an issue tracker, therefore we use YouTrack for this project.

Notable Features

  • Unreal Networking with different multiplayer features
  • Building system
  • Multiplayer portals
  • Physical Animation
  • Display the distance traveled by players
  • Cute animals

Project Difficulties & Solutions

  • Since I’ve only recently started learning Unreal Networking, some features are difficult to implement in multiplayer. For example, a conveyor belt platform should move the player as soon as he stands on it. In single player, this could be achieved by using the AddActorWorldOffset function. However, this leads to the game character stuttering in multiplayer. To solve this problem, we are currently experimenting with overriding the character’s velocity instead of using the offset function, since the client can use the velocity to interpolate the position instead of relying on position updates from the server.