Hateshinai is a personal C++ videogame project I started back in 2023 on a whim of having a good concept in mind.
It uses Raylib with C++20 and is also a good project to try my own scene-based architecture.
The goal is to have a simple 2D arena 1v1 with WASD movement and mouse aiming.
Different attacks would happen based on where you click with your mouse around the center of your character (8 angles, horizontal/vertical/diagonals).
Each player has an HP bar and dies when it depletes, but being low HP also means you get launched farther (allowing you to escape combos).
As the arena is a closed room, launching the enemy farther into powerful wall bounces could allow stylish combo followups.
Each character would have its set of attacks, specials (both varying based on aiming angle, making it very simple to just play with left and right clicks) and an ultimate.
The combat is meant to be fast-paced and challenging, with an emphasis on good positioning and decision making with dashes and fast movement speed rather than parrying or shielding.
Available characters will be taken from MugenArchive, which contains many from different universes that were originally meant to be played on MUGEN.
I'd save the images and audios using FighterFactoryStudio then postprocess them into spritesheets with imagesToSpriteSheets.cpp.
Hateshinai means "endless" in japanese, it is a reference to MUGEN meaning "infinite".
- CMake 4.0.0+
- Any CMake compatible way to compile a C++ project (tested on Windows 11 x64 with Visual Studio's MSVC)
You can use anything else than CMake as long as you know what you're doing, the project architecture is quite simple.
With my aforementioned requirements setup, I'd do cmake -S . -B build -G "Visual Studio 17 2022" -A x64 once then cmake --build build --config Debug && .\Hateshinai.exe everytime I'd want to test.
Building with Visual Studio creates the .sln project file so you can also build it from the IDE but I'd rather do everything on VSCode.
For now, the menu is very minimal;
- Intro scene has a "start" button and Escape toggles fullscreen,
- Menu scene has "online" (unavailable) and "offline" buttons,
- Select scene is where I'm currently at, it'll display the icons of all the selectable characters before the fight.
I've decided to make this repository public for the sake of having spent time on it but do not expect me to continue it as it'd likely woudln't be valued by any company nor having any potential success given how niche the community is.
However, if one day I decide to get back to it, here's the following tasks:
- Change how spritesheets are made: right now it takes images of the same group and aligns them horizontally, each with the max width and height for all of them to have the same. The problem is when sprites are smaller than the max they'll be aligned top-left and in any case many have the character move around during the frames. It is very important to have a consistent centering of the character in each sprite (this will probably increase the size of each sprite, and therefore the spritesheet) which unfortunately might have to be done manually unless there is some kind of centering already done in the downloaded character pack we could export from FighterFactoryStudio. The game should never have to offset positions or handle weird sprites ordering, it's up to the spritesheets to be perfect,
- Once the sprites centering is done, there is also the problem of hitboxes varying for each. Once again check for FighterFactoryStudio export, else it'll have to be done manually,
- Once all the sprites are ready, the fun of coding the actual Select/Fight/Results/Settings scenes can begin :D,
- I originally envisionned using Parsec to simply try the game with friends when its good enough but it wouldnt support separated mouse inputs so a basic peer2peer Hateserver will have to be implemented aswell.