Charger


3D Top down Hack 'n Slash

 
 
 
 
 

Info

Charger is a Hack 'n Slash game with a fighting style inspired by League of Legends. You fight your way through the planet together with your companion.

On this project I got a chance to explore some network coding. Without any experience in networking a game before I stepped out of my comfort zone and hit the jackpot.

The focus with this project was to improve the understanding of how to develop AI and learning from problems RTS/Hack 'n Slash games might bring to the table. 

 

Project Details

November 2017 - February 2018 | 10 Weeks at 50%
Developed by Feather Fall Games: 5 Programmers, 3 Artists, 2 Technical Artists and 3 Level Designers
Created in our own engine, written in C++.
 
 
 

 

Contributions

  • Network

    • Built a basic Network system in a client-to-server architecture
    • Ability to quick and easy pack and send messages of specified type
    • Ability to quick and easy define what should happen when a message of specified type is received
    • Ping - confirming connection
      • Client would try to reconnect if server wouldn't answer
    • Rendering Data on UI made with ImGui for quick debugging and tracking data
      • Rendering things like client data (ip, port, ping), server uptime, connection state, debug log
    • Quick implementation of console to run commands through
      • Could run lua commands from server on a client
    • When the player died, a flower emerged
      • This was stored on the server so all other players could feel the "presence" of other players. The data was sent to the client when a client connected to the game and would also update when someone would die.
      • This led to a lot of fun, on our "launch day" players would die several times in a row to be able to create messages to other players.
         
  • Particle Editor

    • Added support for Flip book animations
       
  • AI

    • Path finding for enemies & companion in all of their different states
    • Behavior for enemies & companion
    • Implementing animation for enemies and companion
       
  • Scripting

    • Implemented basic functionality for our LD's to be able to write scripts in lua that would be run by our engine
    • Canvas component had a script where we would code UI behavior, for example button clicked.
    • Partially implemented Developer console which would run lua code
      • Mostly used to run commands for quick debugging
    • Gameplay

      • Doors unlocking by killing the right number of enemies
      • Indirect control for player, pathfinding to target (mouse click)
      • Player Dash ability implementation
      • Swapping between scenes, transitions with A-Sync loading
      • Projectile manager with object pool for projectiles
      • Player attacking behavior
      • Implementation of animation for player
         
    • UI

      • Health bar for enemies - all projected and rendered on one canvas
      • All In-Game UI implementation
      • All Menus implementation - rendered on canvas components built in unity
      • Canvas Component
        • Support camera overlay and world canvas mode
      • Building all UI components based on the data from Unity
        • Our Art team can build a menu in Unity, export and it'll look the same in our engine
      • Exporting data from Unity
        • Canvas
        • Button
        • Slider
        • Sprite
        • Text
        • Dialogue system - inspired by Warcraft 3
           
      • Importing/exporting

        • Importing data from JSON to engine
        • Exporting data from Unity to JSON