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

Sdílet
Vložit
  • čas přidán 28. 04. 2024
  • This is a quick video about how I programmed a reverse engineered clone of osu! using C++.
    The idea behind this project was to learn how to write efficient code that works on even less powerful hardware.
    I am also in the middle of porting the project to the Nintendo 3DS, stay tuned for that!
    The github repo can be found in my github profile:
    github.com/ohasanov-hbrw
    Ömer Hasanov - 29 April 2024
  • Věda a technologie

Komentáře • 172

  • @secretgogeta
    @secretgogeta Před měsícem +191

    FINALLY i can run osu(s) on my 2006 HP Pavlion dv2120 Linux 86x super duper lite

    • @prismatic-bl8qf
      @prismatic-bl8qf Před 29 dny +6

      i dont know if there was a reference to what you said in the video, but im pretty sure osu! stable is probably lighter than this
      edit : nvm got it

  • @WillyOsu
    @WillyOsu Před měsícem +91

    Very cool project! Was fun to see the problems you encountered along the way and the solutions.

  • @cm_360
    @cm_360 Před měsícem +70

    Great job, this looks amazing! Can't wait for the 3DS port 😎

  • @tmpm8710
    @tmpm8710 Před měsícem +39

    i got into osu because a long time ago i figured out how to use my homebrew 3ds as a trackpad for my pc, and i wanted to play a game that could utilize that
    now we are coming full circle

  • @rebane2001
    @rebane2001 Před měsícem +11

    great job on the sliders! i made my own osu clone in css, but had to end up ditching the sliders due to their complexity

  • @szaasowo
    @szaasowo Před měsícem +62

    this video is really high quality im surprised you dont have more subscribers

    • @ohasanov
      @ohasanov  Před měsícem +12

      Heheh, thanks! I am still pretty "new" at this video creation thing and I constantly trying new techniques :D

    • @kirun13
      @kirun13 Před měsícem

      +

    • @error.418
      @error.418 Před 20 dny

      @@ohasanov keep it up!

  • @yasinarslan8074
    @yasinarslan8074 Před měsícem +40

    stand proud, you can cook

  • @hufuhufu
    @hufuhufu Před měsícem +12

    Whoa that's awesome!
    I'm also currently learning programming, specifically creating GUI in windows. It's really hard and I can't even imagine how do you even create an osu clone lol. But this video somehow gave me some motivation to keep learning. Though I probably won't be able to build a project like this anytime soon, but I'm excited!
    Good luck with your project!

    • @unicodefox
      @unicodefox Před měsícem +3

      the funniest thing that just drawing a window with a button in it is usually the hardest part ;)

  • @shifty5917
    @shifty5917 Před měsícem +15

    This might be the coolest project ever!
    I have 2 feature requests already :-)
    1) Make the gameplay appear on the top screen instead of the bottom one. Use the bottom screen just for controling the cursor and tapping. Players could also tap with their free hand (on the d-pad or ABXY buttons).
    2) Use the top screen in the secret 800 px mode that the people in homebrew community found. This will make everything look much sharper and nicer.

    • @girraiffe
      @girraiffe Před měsícem +1

      > use the bottom screen just for controlling the cursor or tapping
      So the whole game? lol
      Following with a stylus that doesn't register when you touch down on the screen would not feel good. Not sure the official osu client even has that option on touch devices. That seems like smelly UX, but I haven't played on a touch osu client
      It seems like that would only work for a taiko or mania or catch, but not the classic osu...

    • @ohasanov
      @ohasanov  Před měsícem

      Thanks! About those features... The first one is actually already implemented! Partly at least... There is the option to chose the top screen but I haven't added full touch controls yet, the menu kinda relies on "two hand input" right now, so yeah fixing that would be nice. The second one is a bit hard, since it would tank the fps... I don't really have much RAM left as far as I can understand. I maybe can enable that mode on new3ds consoles, but yeah, not too sure about that. The "not so great" looking textures is because the filtering mode somehow doesn't work, I am working on that hehe...

  • @audiomac
    @audiomac Před měsícem +4

    I am really surprised with how few views this has! This is a really high-quality video!

  • @NotEvenJokingg
    @NotEvenJokingg Před měsícem +11

    I wouldn't feel so bad for Aspire sliders freezing your osu! clone, I believe lazer has the same issue. The same is true for a lot of other inf bpm sliders, basically only "stable" osu renders them correctly.

    • @ohasanov
      @ohasanov  Před měsícem +2

      Yeah hahah, aspire maps are a great way to stress test the engine though! The fact that I can create the sliders in microseconds on my PC just makes me happy. The thing with osu!stable is because it precalculates all of the objects I think, since yeah the ram usage is a lot higher compared to lazer :)

    • @McKay1901
      @McKay1901 Před 23 dny

      @@ohasanov aspire slider distortions could easily be implemented without any precalculations, it's a simple x/y scaling/skewing based on the curve bounding box and coordinate system limits (32768).

    • @ohasanov
      @ohasanov  Před 23 dny +2

      @@McKay1901 I meant like the sliders on 'XNOR XNOR XNOR', there are some stuff there that currently needs precalc on my slider calculator... I am pre calculating each curve's length beforehand so that I don't calculate more points than needed in runtime. There are some bezier sliders for example consisting from hundreds of 1 length sub curves for example. Can't really guess each curve's length sadly :') At least I haven't done that till now... Also, I have never heard about skew/distortions... maybe I need to research that a bit more

  • @Gamesational1
    @Gamesational1 Před 21 dnem +4

    I was working on nearly the same exact thing. I need to get a move on and document my process.

  • @tobyyh
    @tobyyh Před měsícem +38

    This is ridiculous and I’m here for it

  • @Asdayasman
    @Asdayasman Před dnem

    Worth checking out Cem Yuksel's talks on graphics programming. He has a whole episode or two on curves and goes over the drawing and computation of all sorts of curves (Catmull-Rom and Beziér included).

  • @ravener83
    @ravener83 Před měsícem +2

    That was a great video, creating a simple osu! clone is lowkey something on my programming bucket list for some day so that sounds fun.

  • @Skewers-qf4nu
    @Skewers-qf4nu Před 11 dny +1

    Good luck with your progress! I'm sure you can go very far with your skills ✨

  • @jbh759
    @jbh759 Před 14 dny +1

    Dude this is awesome, keep up the good work!

  • @kauht
    @kauht Před měsícem +1

    great video, keep it up, would love to see a part 2!

  • @rockruffnation2006
    @rockruffnation2006 Před měsícem +2

    Bro, this is amazing, great job!

  • @Maximxls
    @Maximxls Před měsícem +1

    very cool! looking forward to seeing your game running on 3ds

  • @phusicus_404
    @phusicus_404 Před měsícem +2

    This is super cool, keep going! You deserve hundreds of thousands of subs!

  • @FerbyEats
    @FerbyEats Před měsícem +3

    This is super cool! Did a great job!!

  • @kshitijg1433
    @kshitijg1433 Před měsícem +1

    This looks amazing great job!

  • @maximood-tired
    @maximood-tired Před měsícem +2

    really cool project, im looking forward for new osus videos!

  • @avidrucker
    @avidrucker Před měsícem +1

    Excited to see your progress!!!

  • @agegarret7036
    @agegarret7036 Před měsícem +1

    This is so cool. I been using my hacked 3ds so much recently and this would just make me use it even more

  • @jullebulle8448
    @jullebulle8448 Před měsícem +1

    Great stuff and great video! Keep going! :D

  • @peacefulexistence_
    @peacefulexistence_ Před 10 dny +1

    Really cool, subscribed!

  • @error.418
    @error.418 Před 20 dny +1

    Have you seen Freya Holmer's videos on Bezier curves for game developers? They're more about the math and less about spoon feeding you code, so it might be a good fit for your project.

    • @ohasanov
      @ohasanov  Před 18 dny

      Haven't seen them sadly, though my curve algorithm works just fine right now :)

  • @Popzicle
    @Popzicle Před 18 dny +1

    looking foward to see this port on the 3ds 👀

  • @LukynkaCZE
    @LukynkaCZE Před měsícem +1

    very cool project! Love the video quality as well

  • @aladeenzweipunktnull
    @aladeenzweipunktnull Před 24 dny

    Very impressive, the amount of work you put into this project is insane dude.

  • @aminewallah
    @aminewallah Před měsícem +2

    amazing vid, you earned a sub 🔥

  • @Benethen_
    @Benethen_ Před měsícem +2

    this is really impressive. i've always wanted to do something like this but I don't have enough programming knowledge yet to attempt it. also, aksanını duyunca şok oldum, genellikle böyle şeylerde türkler pek görünmüyor. gerçekten çok iyi olmuş, eline sağlık.

  • @h3dzer
    @h3dzer Před měsícem

    You absolutely madlad, that's really cool:)

  • @cake3014
    @cake3014 Před měsícem

    Shit! Awesome video dude! I subbed, want to see more!

  • @MommysGoodPuppy
    @MommysGoodPuppy Před 22 dny +1

    im really interested in 3ds development vids

  • @SomeRandomPiggo
    @SomeRandomPiggo Před měsícem

    Really cool video!

  • @rosux5540
    @rosux5540 Před měsícem

    looks sick!

  • @Oreoezi
    @Oreoezi Před 29 dny +1

    Very awesome!

  • @resolvedman
    @resolvedman Před měsícem +2

    great job!!!!

  • @TienDesu
    @TienDesu Před měsícem +1

    Good work

  • @jkmelri
    @jkmelri Před měsícem +1

    Love this!

  • @DubUltra
    @DubUltra Před 29 dny +1

    great video

  • @Koffiato
    @Koffiato Před 6 dny

    Eline koluna sağlık

  • @prasnikar9465
    @prasnikar9465 Před 13 dny +1

    and then i'm having headaches bcus of some simple codes.

  • @dagdnoob
    @dagdnoob Před měsícem +1

    Good video brother

  • @_voexx
    @_voexx Před 15 dny +1

    eline sağlık

  • @pladselsker8340
    @pladselsker8340 Před měsícem +1

    Cool project! How did you come up with the optimizations for the bezier curves? Did you borrow some work that was already done in the literature?
    Also I took a look at your profile, I can't find an osu! project that was updated recently. Is it "osus"?

    • @ohasanov
      @ohasanov  Před měsícem +1

      Yeah, it is called osus-revented! Although, after somr messing around with the 3DS, I see now that the memory management is not, will rewrite some stuff in the following weeks. About the optimizations, some algorithms (like getting the points themselves) I borrowed, but the way of using those algorithms to create evenly spaced points I found out myself :)

  • @0w0.727
    @0w0.727 Před měsícem +1

    Yt recommendation back at it 🔥

  • @aimpizza6823
    @aimpizza6823 Před 3 hodinami

    Very cool!

  • @fudencio
    @fudencio Před měsícem +1

    very impressive

  • @xplurales1138
    @xplurales1138 Před měsícem +1

    So cool 🤩🤩

  • @SuboptimalEng
    @SuboptimalEng Před 13 dny +2

    Amazing work! Wait, you were born in 2006? Yea, I'm cooked.

    • @ohasanov
      @ohasanov  Před 12 dny +1

      Thanks hahah! Not really to be honest, it is never too late!

  • @idiedlastmonth
    @idiedlastmonth Před 17 dny

    Beautiful work pal! Thanks for sharing.

  • @Jota_s2a
    @Jota_s2a Před měsícem +1

    nice man

  • @cinarasultankulova4052
    @cinarasultankulova4052 Před měsícem

    Браво Омер👍

  • @wuaht
    @wuaht Před měsícem +3

    i was actually looking for an osu 3ds port WTH

  • @nbanba9033
    @nbanba9033 Před měsícem +1

    Tebrikler....👏👏👏

  • @Rageinater
    @Rageinater Před 10 dny +1

    yo this is cool

  • @pranjalambast
    @pranjalambast Před měsícem +2

    I kinda wanna help you out, if you need also the project is just creative and insane!!!

    • @ohasanov
      @ohasanov  Před měsícem +1

      Heh, thanks! I need to make the code more readable first though. It is really visible how the code was written for my eyes only lol, its not that unreadable but its not great either. :)

    • @pranjalambast
      @pranjalambast Před měsícem

      @@ohasanov lmao I get it.
      I do the same thing too with my codes xD

  • @TechTutor429
    @TechTutor429 Před 11 dny +1

    Great

  • @diamondfailer11
    @diamondfailer11 Před měsícem

    Milli gururumuzsun

  • @spaghettiking653
    @spaghettiking653 Před měsícem +1

    This is mad, I always wanted to make an osu clone but I suck ass at programming and especially graphics, so I barely made any progress at all.
    Forgive me for not understanding, but could you explain some more about what was so complicated about the bezier curves? I feel like I made a basic bezier drawing program and it was very simple in my case. Are there additional considerations when making it in a slider shape instead of a 1D line?

    • @raremc1620
      @raremc1620 Před měsícem

      Honestly, in my opinion he is just too inexperienced in programming, bezier curves are super simple, even quadratic, etc. ones.
      Looking at the code on github, his style is somewhat messy and not very readable at times.

    • @ohasanov
      @ohasanov  Před měsícem

      @spaghettiking653 Bezier curves just by themselves aren't a challenge, yes. It's just the way osu needs those result points. The bezier algorithms are pricey (computation), and they generally do not give equally distanced points. First time I implemented the curves, the creation of a slider took about 10ms and tanked the framerate in half while rendering it. Currently, on my rig I can generate all the sliders in a 10 minute map in under 20ms. Less stutter, more performance, less memory usage, that was the hard part (at least for me)

    • @ohasanov
      @ohasanov  Před měsícem

      ​​@@raremc1620Sure, as a self taught solo developer, the way I write my code isn't optimal, I am not saying that I am the best at this, or that the way I write my code is the best way. No, it surely isn't, seeing how the mistakes I made 2 years ago are biting me in the back now. I just tried to show my determination, how I try to learn by creating new things, and completing all the projects. It's mostly fun anyway :) Also maybe I need to note this but the bezier curves in osu! are Nth order, mappers generally don't adhere to a limit so it becomes a bit weird when you have to calculate 2000 points for a 40th order bezier.

    • @raremc1620
      @raremc1620 Před měsícem +2

      @@ohasanov Honestly, you are doing great, nothing wrong with being imperfect, everyone has stuff to learn even if you are experienced :)
      Just mentioning a potential reason of why it could've been harder to get done.

    • @spaghettiking653
      @spaghettiking653 Před měsícem +1

      @@ohasanov Oh dear, okay, that makes sense. I just now think I realized why you need equally-spaced points: because the slider ticks occur at regular time intervals, right?

  • @_.-.-_.-.--.-_.-
    @_.-.-_.-.--.-_.- Před 27 dny

    May I ask as a beginner c++ learner, what sources would you suggest to improve myself to learn this language? What route did you follow once you started as a beginner in the past? Cheers, I loved your work. Be well

    • @ohasanov
      @ohasanov  Před 23 dny +1

      Thanks, I am in no position to really say that a route is the best way though... For me, I think that creating new projects always helps, since different games need different things... Other than that, geeksforgeeks and stackoverflow! They are your friends!

    • @_.-.-_.-.--.-_.-
      @_.-.-_.-.--.-_.- Před 23 dny

      @@ohasanov Thank u for your recommendations. Furthermore, may I also ask did you take any particular course for c++ before? I kinda tend to find online courses much memorable rather than sticking with the book solely. Any suggestion surely can be beneficial. Thanks in advance, sincerely.

    • @ohasanov
      @ohasanov  Před 23 dny

      @@_.-.-_.-.--.-_.- Hmm, I just learned C++ from random CZcams Videos, no particular course or anything. Like I said, I liked finding my own way by asking my own questions to solve my own problems in my own projects :) I feel like courses just limit you, by teaching things set in stone. So yeah, sorry can't really recommend anything...

  • @prismatic-bl8qf
    @prismatic-bl8qf Před 29 dny +1

    Great job! Do you take any inspiration from DaniDev by any chance? hes a legend

    • @ohasanov
      @ohasanov  Před 29 dny

      Ah, I liked watching his videos, and his style of fun videos is what I want to achieve, sure. But gotta say, I was trying to create stuff like this even before seeing Dani's videos, I just didn't have the time to finish and publish those projects...

    • @prismatic-bl8qf
      @prismatic-bl8qf Před 29 dny +1

      @@ohasanov ah its okay! i wasn't saying you're trying to copy his style. It just reminds me of him whenever i see a gamedev video since his videos are so enjoyable.

    • @ohasanov
      @ohasanov  Před 29 dny

      @@prismatic-bl8qf Hahah. Yeah they really are...

  • @oglothenerd
    @oglothenerd Před 18 dny +2

    Hey, you are only 2 years older than me! :D

  • @zunv
    @zunv Před 17 dny

    man i wish original osu was coded in c++

  • @nurayosmanova3966
    @nurayosmanova3966 Před měsícem +1

    👏👏👏

  • @unyu-cyberstorm64
    @unyu-cyberstorm64 Před 20 dny +2

    I wonder what performance is gained by the (slightly) faster new 3DS

    • @ohasanov
      @ohasanov  Před 18 dny +1

      Yeah so apparently, it is not just slightly faster. The new 3ds can get a steady 60fps on debug builds, the old 3ds gets a lot of frame drops on even -O2 builds (this optimization flag changes a lot in my project). Thats what a cpu running 3 times faster does apparently

    • @unyu-cyberstorm64
      @unyu-cyberstorm64 Před 18 dny +1

      @@ohasanov doesn’t it also have more memory?

    • @ohasanov
      @ohasanov  Před 18 dny +1

      @@unyu-cyberstorm64 Yeah, but realistically, if you want your game to run on an old3ds, you really can't use the extra ram on the new models. More ram isn't always faster. But it does allow for bigger files to be loaded to memory, which speeds some things up especially when the 3ds has a really slow filesystem.

    • @unyu-cyberstorm64
      @unyu-cyberstorm64 Před 18 dny +1

      @@ohasanov ah yes, and a better GPU on the new models too and better 3D effect, right?

    • @ohasanov
      @ohasanov  Před 18 dny +1

      @@unyu-cyberstorm64 Uhm, afaik the gpu is the same, Pica 200 @133MHz in both consoles. The 3D is better cause they implemented eye tracking, probably made more possible with the addition of 2 more cpu cores (4 vs 2). Most games dont really use more than a single core though, the extra 2 cores are mostly reserved. (You can take advantage of them in homebrew though)

  • @hoteny
    @hoteny Před měsícem +1

    Vayy be… tebriks

  • @davideilas1202
    @davideilas1202 Před 13 dny +1

    do you know if there is any way to write games in c for a 3ds?

    • @ohasanov
      @ohasanov  Před 12 dny

      Yeah! Look for the keywords: devkitPro, libctru, citro2d and citro3d! These are the basic stuff you want to research for 3DS homebrew

  • @RugiSerl
    @RugiSerl Před měsícem

    I'm curious about the way you drew the slider body ? I've tried using shaders but it quickly became a mess.

    • @ohasanov
      @ohasanov  Před měsícem

      Hope my explanation will be at least understandable, here we go. So first I create a circle texture with a gradient. Pure red in the center, less Alpha the more distance you have from the center. Then, when creating the sliders I create a texture that will fit all of the points of the slider. Draw the red circle I first created on the slider texture each render point. While doing that, use a blend mode so that the Alpha channels aren't added and this way, you basically have a curve thats "Glowing", (Pure red curve created by the red center of the circle texture, the glow created by the gradient). Then, while rendering the slider texture, I just check the Alpha channel and recolor the fragment based on the distance from the center. It is definitely not the best way of doing this, but this method works on OpenGL1.1 too! Sadly the 3DS doesn't support fragment shaders so I just use a blend mode (or a blend function) that only draws the color with the lower color values (First draw a white circle, then the black inner one. While rendering the second white circle, the blend mode makes it so that the white circle doesn't override the black circle and stuff)

    • @RugiSerl
      @RugiSerl Před měsícem +1

      ​@@ohasanov I kind of get the idea, I've tried drawing the texture but I can't figure out how to not add the alpha channels, I've tried using different blend modes but none of them worked. Anyway I've build your application and I saw that you put your own game directory in "globals.hpp" ("C:/Users/renot/AppData/Local/osu!/Songs"). I think there must be a way to configure that using the %LOCALAPPDATA% environment variable

    • @ohasanov
      @ohasanov  Před měsícem +1

      @@RugiSerl Yeah, I forgot to change it back to the default hahah... I will push a big fix in the following weeks, apparently the code is leaking a loooot of memory (Some of it thanks to raylib too...)

  • @PeterKilian
    @PeterKilian Před měsícem +1

    Raylib is technically a game engine in of itself, but I see you didn’t use enough of its features to justify calling this project “not from scratch”. Especially since you’re a solo developer.
    Well done, keep working and you’ll be a great programmer. I’m sure of it.

    • @ohasanov
      @ohasanov  Před měsícem

      I mean, yeah technically, but with the same logic, using any kind of API would also be "not creating something from zero". I mean sure but heh, the meaning is not that. (Also technically speaking I rewrote raylib once or twice anyway so heh)

    • @PeterKilian
      @PeterKilian Před měsícem +1

      @@ohasanov
      I think we are on the same page. Keep working hard and you will get better. Optimised programming is a great way to become a better programmer and you are on a good track when it comes to the learning process.
      I personally wish I had the tools and knowledge available to me now since I started. Which is why I’m so excited for the future.
      Can’t wait to see what the next great step is gonna be in terms of an individual’s programming prowess. I’m referring to the next Terry Davis / Michael Abrash, John Carmack, Chris Sawyer, Alan Turing etc

  • @Zorixa
    @Zorixa Před měsícem +1

    nice 👍 pt2 when?

    • @ohasanov
      @ohasanov  Před měsícem +3

      I am still working on the 3ds port. The audio side of the whole thing kinda sucks on the 3ds... Will figure it all out though! When I have a stable enough build, I will post an update!

    • @Zorixa
      @Zorixa Před měsícem

      @@ohasanov okay 👍,take your time

  • @evanmico
    @evanmico Před 27 dny

    As a webdev who specializes in copying other code, I must ask: why not just copy osu lazer implementation of bezier sliders and just convert to C++? Just seems like with osu lazer being open source and all, why not see how it did the bezier sliders? Anywho, brilliant project! So cool to see some modern development that focuses on efficient code!

    • @ohasanov
      @ohasanov  Před 27 dny

      Thanks! About the lazer thing. Even lazer can't render most of the weirder sliders properly. On my hardware, on some maps osu lazer just dies for some reason. That was one part. The second being that I can't really read the C# code of lazer... That is 100% my problem though hahah!

    • @conturnplayscounturn6911
      @conturnplayscounturn6911 Před 27 dny

      He did also mention in the video that he wanted to implement everything cleanly (without taking/looking from other codebases). Copying lazer’s handling would contradict those value :p
      Very commendable work, makes sense why you decided on the principles you choosed since the primary objective is to make a performant version of osu, not to replicate in yet another language.
      (ps: Looking forward to this project, please make a pinned comment with the public repository if you ever do decide to crate one. Would like to try and port this to mobile :D )

    • @ohasanov
      @ohasanov  Před 23 dny

      ​@@conturnplayscounturn6911Ah the repo is on my github (link in desc). Its called osus-revented (another word play. Vent. Reinvent) I dont recommend touching the repo now though, apparently I am leaking a lot of memory, and some stuff only work on my pc. I need to fix those. Once I do that, I will also be finished with the 3DS port, at which point I will post another video!

  • @chiffaonosu
    @chiffaonosu Před měsícem +1

    nice project and nice work, though I have to say - from my experience and experience of... pretty much every person developing anything related to osu (ranging from discord bots to stuff like Danser), matching bezier calculations closely to osu is one of the most annoying parts, especially while hunting for performance

  • @whatever7338
    @whatever7338 Před 16 dny

    Damn dude that is one giant pile of spaghetti code.

    • @ohasanov
      @ohasanov  Před 16 dny

      Eh to be honest it is. Code made for one single purpose...

  • @Exarvi
    @Exarvi Před měsícem +1

    3:51 is that solace of oblivion?

    • @ohasanov
      @ohasanov  Před měsícem

      Yeah! Was a great helper while I was trying to figure out slider lengths and stuff :)

  • @Jdbye
    @Jdbye Před 18 dny

    That is a new 2DS XL. It has a quad core 800 Mhz CPU.

    • @ohasanov
      @ohasanov  Před 17 dny

      Yes, however it has the ability to run at 268MHz just like the original. The two extra cores you can't really use anyway. You need to enable the 804MHz mode in the homebrew app for that speed. I currently do not do that, and it still runs at a decent speed. Additionally, the new2ds does have more ram, but I do not use that as well, you can configure that while building a .cia file.

  • @jambalaya974
    @jambalaya974 Před 18 dny

    this is basically what mcosu is

    • @ohasanov
      @ohasanov  Před 18 dny

      Well yeah, it is another osu! client. The focus here is pure performance more than anything else though.

  • @i_is_evil_duck
    @i_is_evil_duck Před 13 dny

    dats sow cewl

  • @T4niox
    @T4niox Před měsícem +5

    maliszewski?????

  • @Ayachiii_
    @Ayachiii_ Před měsícem +1

    Mania when

    • @ohasanov
      @ohasanov  Před měsícem +1

      Technically speaking, implementing it wouldn't be that hard as far as I can see, but I am no mania player and honestly know very little about how it works. I will definitely try to add the other game modes too though (taiko most probably, catch, idk...)

  • @m4rt_
    @m4rt_ Před měsícem +3

    why not just C?

    • @melkiorgabriel9539
      @melkiorgabriel9539 Před měsícem +2

      He is using stuff from C++ such as classes
      3:28 you can see that there is a slider class

    • @ohasanov
      @ohasanov  Před měsícem +3

      I thought by using C++ I can be a lot easier on myself by not having to manage the memory that much, but after some recent developments, it seems like I need to rewrite the memory management myself, vectors crash randomly on the 3DS :')

  • @StaringLongingly
    @StaringLongingly Před 18 dny +1

    steins;gate detected!!

  • @echoeee
    @echoeee Před měsícem +1

    osu

  • @kunefek
    @kunefek Před 27 dny

    really cooked anyways

  • @usuyus
    @usuyus Před měsícem +2

    that looks painful to make
    respect

  • @Aestareth_
    @Aestareth_ Před měsícem

    simplest c++ program:

  • @VoxelPrismatic
    @VoxelPrismatic Před měsícem +7

    As a Linux user, I am insulted by the mere presense of WSL on your system.

    • @ohasanov
      @ohasanov  Před měsícem +5

      Sorry, I just am used to using Windows, and WSL is actually great for C++ dev environment I feel like...

  • @bacon_with_brussels_sprout

    0/10 Did not actually code the whole entire visual programming "language" scratch into c++ then used scratch to make osu,
    Im undisappointed

  • @himalayo
    @himalayo Před měsícem +1

    so you remade a game so it can run on the nintendo 3ds but it doesn't run on the 3ds? lol

    • @ohasanov
      @ohasanov  Před měsícem +2

      I mean, technically does now, its just that I didn't know much about the API (GPU and Sound) on the 3DS. I currently do have an unstable build that has audio but I need to rewrite the memory management, random crashes are not fun...

    • @himalayo
      @himalayo Před měsícem

      @@ohasanov that's honestly extremely impressive. I do recommend watching out for RAM consumption because on your vid it appears that it's using 110mb which is still a lot despite being technically below the limit imo

    • @ohasanov
      @ohasanov  Před měsícem

      ​@@himalayoyeah so 70mb of that is just Windows being Windows. I managed to actually make it play a map fully, max memory consumption was about 14MB or so (excluding textures and sound files), although the memory management is leaking some stuff, I definitely need to rewrite that...

  • @ozu7779
    @ozu7779 Před 21 dnem

    turk musun?

  • @sinom
    @sinom Před 18 dny

    "the beat map file only contains some points and the type of the slider"... Ofc? That's how splines work. How else would you represent them

    • @ohasanov
      @ohasanov  Před 18 dny

      I mean, yeah? If you know it thats no problem?

  • @mx338
    @mx338 Před měsícem +1

    Good job, but where are the waifus?

    • @ohasanov
      @ohasanov  Před měsícem

      Some people don't like em apparently, so they are not featured (yet)

  • @cancername
    @cancername Před měsícem +3

    wow, this is amazing! extremely underrated.
    hehehe osus

  • @warguy6474
    @warguy6474 Před měsícem +1

    oh my god please use c++ at least why are you doing this in C

    • @ohasanov
      @ohasanov  Před měsícem

      Im using C++ though :) (tbh was a bad idea, mrmory allocation in C++ is wack...)

    • @warguy6474
      @warguy6474 Před 29 dny

      ​@@ohasanov it looks like your github repo says almost all of it is in C is that just external code then

    • @ohasanov
      @ohasanov  Před 29 dny

      @@warguy6474 ah yeah, the single header libraries