How I re-created the rhythm game osu! from scratch in C++!

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
yeah this game still rocks but wouldn't it be nice to have the modern Oso maps on this now of course some of you might ask why are you trying to create a game for this 13-year-old console the 3DS has some funny specs compared to today's standards it only has a dual core 286 MHz CPU 128 Megs of RAM and only 6 MB of vram now these limitations just sparked my interest there are some fully 3D games running on this system at 60fps Super Smash Bros is one example now how do these developers do this to find an answer to that question I set on on a quest to create a game with these limitations in mind I wanted to try something new not just some RPG or another clone of Minecraft At Last I decided to program an o compatible rhythm game OSU or O is a game where you need to click drag or rotate objects at the right time according to the rhythm of the background song everything needs to be timed perfectly the game engine should not have any hitches and everything should be rendered smoothly for the game to be considered playable to guarantee smooth gameplay on older less powerful Hardware I decided to use C++ as my programming language and also a version of rip an open G based grp Graphics Library which I modified according to my needs and of course I set it as a goal to not look at any code of any other osen clones or OSU itself this project is basically a kind of complete reverse engineering of OSU just based on my observations about the game you can see the earliest versions of this project here in 2021 when I first started the project I mainly focused on the parser that reads the beat maps and converts it to a format which I can use effectively after that I set up the graphics and sound libraries and tried to see if I could make circles show up on the screen the first baby steps after doing that and patching some bugs in the parser code I came to the part where I spent the most time creating the sliders possibly to save space Also calculates the shape of the sliders before a Beat Map is played that means that I cannot just take the data in the Beat Map file and put it on the screen the Beat Map file only contains some points and the type of the slider there are four main types of Sliders in OSU linear cmal Rome Perfect Circle and basier as you might have guessed linear sliders are just lines from one point to another the Catal ROM sliders are types of Sliders where the algorithm named Catal ROM is used to smooth out the point and create a curvy shape that has equal distance points perfect circles are just arcs defined by three points these three types of Sliders weren't that much of a challenge they are just basic math after some quick debugging I had them all working bazer sliders however they are different beasts [Music] n [Music] [Music] finally after a lot of debugging and optimizing I managed to create an algorithm that can generate Sliders in real time which reduce the maximum RAM usage by a lot in some maps for example the original OS client requires over 900 MB of ram that definitely doesn't fit our Ram budget of 128 mbes my clone on the other hand for the same map requires only 100 MB on a Windows machine there are also other types of issues present when you try to create a rhythm game the timings are one of them even a deviation of 20 milliseconds is noticeable when you are fully focused on the game with your eyes and ears after trying over 100 Maps I managed to nail the timing too of course I am still developing the project there are a lot of places where I can optimize the code even further in order to make it round faster and I am also in the middle of porting the whole project to the 3DS after all this programming though I can freely say that I have learned a lot about programming especially how to write fast code and in the future I will be creating more projects like this not just in programming but also in other areas too thanks for watching till the end and I will see you in the next video bye
Info
Channel: Omer Hasanov
Views: 16,057
Rating: undefined out of 5
Keywords: Programming, GameDev, C/C++, Development, DIY, osu!, Nintendo 3DS, Nintendo
Id: NaF2vdQgzcE
Channel Id: undefined
Length: 5min 51sec (351 seconds)
Published: Mon Apr 29 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.