HoloFight (WIP)
Work In Progress. This is an early in-development version of the game.
Last Updated: April 17th, 2024
Controls (by control scheme):
- Keyboard Player 1:
- Move: WASD
- Attack A: Z
- Attack B: X
- Pause: Escape
- Keyboard Player 2:
- Move: Arrow keys
- Attack A: U
- Attack B: I
- Pause: Enter
- Gamepad:
- Move: Left thumbstick / Dpad
- Attack A: X / Square
- Attack B: Y / Triangle
- Pause: Start
- Move: Left thumbstick / Dpad
(Rebinding controls to be implemented at a later date.)
Known issues:
- The Pause menu displays four buttons, but the only ones that are implemented are [Unpause] and [Quit].
- The Pause menu can only be controlled by the "left side" (the control scheme used to move to the left in the Main Menu device select popup).
- The Match End menu can only be controlled by the first connected player (the control scheme used to advance from the Title Screen to the Main Menu).
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).
Still very much in development, but the basic functionality is making its way into there. Basic systems such as frame data editors, and such are in there.
In this current (fourth) build there isn't much to see. Two players, both playing as Ina. Basic movement. Jumping. Wall jumping. Two attacks on the ground, and two attacks in the air.
Combat currently feels very 'slippery' and I have some ideas to combat that - but I'll also need to work on other important quality-of-life features, such as volume controls and button rebinding.
Development 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 backend / game logic layer (game state, player positions, stats, physics, etc.) and the frontend 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 with 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
My approaches are highly inefficient here, and I've learned my lessons for the next fighting game I'm making. Refactoring the codebase for this project is unlikely, but I'll keep coming back every now and then to nudge it towards completion.
Future plans (in no particular order):
Health bars, round timer, round start intro/countdown- Menus
Switching to the new Unity Input System
Character select screen- Options menu (adjust volume & controls)
- Rebindable controls
UI- Audio
Royalty-free BGM, as is vtuber fandom traditionSFX
- Three grounded attacks for each character, and three aerial versions of those attacks. (2/3, 2/3)
- 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.
- Noiseless World (https://noiselessworld.net/en): Instrumental band music! Although they're kind enough to allow free use of their music in most cases, their terms don't allow for redistribution - so if you want the files for their tracks, go to their SoundCloud, YouTube, Spotify, website, etc.
- Kenney Assets (a font?)
- [Various fonts that I'm still collecting the credits and links for before I upload the next build]
Inspirations:
- https://github.com/nykwil/UnityGGPO (initial code direction)
- https://www.youtube.com/watch?v=hzhmXICuahs (vibes) ("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).
Leave a comment
Log in with itch.io to leave a comment.