HoloFight (WIP)
About
Happy (belated) birthday, Ina!
(only a day late because of build errors, but we got there)
Work In Progress. This is an early in-development version of the game.
HoloFight is a fanmade simplified 2D fighting game featuring characters (currently just Ninomae Ina'nis) from HoloMyth, from the HoloEN branch, from Hololive (owned by COVER).
For a while I've been working on individual systems /dev tools and stuck on certain parts, but I dusted it off and grinded it out in time to get a basic demo released on Ina's birthday (May 20th)! ...Or at least it would've been on time, if I hadn't encountered build errors that took a full day to resolve. Oops.
In this first build there isn't much to see. Two players, both playing as Ina. Basic movement. Jumping. Wall jumping. One attack (only on the ground - no air version).
What I've learned: animations take a while. I had to scope down on graphical level of detail multiple times before I settled on what Ina looks like now.
Also, small workflow improvements go a long way! That's the only reason I got these Ina animations done in time at all - because I properly rigged up a template file for me to use in Krita, to make consistently sized and aligned sprites + animations for use as game assets.
Controls:
- Player 1: WASD to move, X to attack.
- Player 2: Arrow keys to move, I to attack.
(these are placeholder default controls for testing purposes, they're not final I promise)
Nerd stuff / Developer notes:
Behind the scenes is a lot more work I'm proud of. I have a working Frame Data Editor as a separate Scene in my Unity project! It can save and load frame data to and from the JSON files I store them in, and while editing frame data you can visually see the hitboxes in relation to the sprite for that character's animation.
Additionally, this project started as a 'basic project to later use GGPO with to implement rollback netcode'. Right now that's wildly out of scope and not an immediate goal, but that still impacted how I designed the code-base.
Notably, the back-end / game logic layer (game state, player positions, stats, physics, etc.) and the front-end presentation layer (showing player animations on screen, retrieving player inputs from the keyboard) are completely separated! None of the game logic actually needs Unity to run. Technically, you could just 'run' a match in C# code if you put together a script to handle that, and just feed it whatever inputs you desire for each frame. In theory, this'd be an easy game to simulate and train a bot in using Machine Learning!
Grappling with raw C# game logic and interfacing it with Unity took up the majority of my development time - especially getting animations to display the correct frames based on frame data - but I'm proud of what I managed to get working. Even if it's ugly prototype code.
Link to this game's public GitHub repo: https://github.com/Omergosh/HoloFight
If you have any questions you want to ask, feel free! My approaches are likely inefficient since I'm blindly prototyping towards an end product I've never really made anything like before, but maybe it can help you if you're working on something similar. You can uh, learn what not to do.
Future plans (in no particular order):
- Health bars, round timer, round start intro/countdown
- Character select screen, options menu (adjust volume & controls)
- Switching to the new Unity Input System
- Rebindable controls
- UI
- Audio
- Royalty-free BGM, as is vtuber fandom tradition
- SFX
- Three grounded attacks for each character, and three aerial versions of those attacks.
- Finish Ina's moveset. (realistic, short-term)
- Remaining four members of HoloMyth as playable characters. (ambitious, long-term)
Credits:
- Newtonsoft's Json.NET (https://www.newtonsoft.com/json): I used this package to read/write frame data to and from JSON files! Super helpful for making the Frame Data Editor functional.
Inspirations:
- https://github.com/nykwil/UnityGGPO (initial code direction)
- https://www.youtube.com/watch?v=hzhmXICuahs (huge inspiration) ("Excuse my Rudeness, but Could You Please RIP? / Desumetal Remix" by Turbo)
- https://twitter.com/mleelunsford/status/1339473089717911552 (beautiful theoretical mock-up art that cemented the thought "man, a Hololive fighting game would be cool")
- https://twitter.com/Jouji5555/status/1522001884113997824 (rekindled the flames of passion for this project after months away from it)
- And all the other creators in this fandom.
Disclaimer: This fan game is a derivative work of Cover Corporation's Hololive property. Neither this project nor I are officially affiliated with Cover. This project exists in accordance with Hololive Production's Derivative Works Guidelines (https://en.hololive.tv/terms).