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

Поділитися
Вставка
  • Опубліковано 28 кві 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
  • Наука та технологія

КОМЕНТАРІ • 180

  • @secretgogeta
    @secretgogeta Місяць тому +213

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

    • @prismatic-bl8qf
      @prismatic-bl8qf Місяць тому +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 Місяць тому +107

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

    • @NeverEron
      @NeverEron Місяць тому +2

      so true willy

    • @funkyowo
      @funkyowo Місяць тому +2

      hello paralysis monster

    • @ohasanov
      @ohasanov  Місяць тому +6

      Hehe, thanks!

  • @tmpm8710
    @tmpm8710 Місяць тому +43

    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

  • @cm_360
    @cm_360 Місяць тому +74

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

  • @yasinarslan8074
    @yasinarslan8074 Місяць тому +47

    stand proud, you can cook

    • @chronos7554
      @chronos7554 23 дні тому +2

      jjk brainrot in osu comments!!!

  • @rebane2001
    @rebane2001 Місяць тому +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

  • @ravener83
    @ravener83 Місяць тому +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.

  • @szaasowo
    @szaasowo Місяць тому +62

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

    • @ohasanov
      @ohasanov  Місяць тому +12

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

    • @kirun13
      @kirun13 Місяць тому

      +

    • @error.418
      @error.418 Місяць тому

      @@ohasanov keep it up!

  • @avidrucker
    @avidrucker Місяць тому +1

    Excited to see your progress!!!

  • @kauht
    @kauht Місяць тому +1

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

  • @rockruffnation2006
    @rockruffnation2006 Місяць тому +2

    Bro, this is amazing, great job!

  • @hufuhufu
    @hufuhufu Місяць тому +14

    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 Місяць тому +3

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

  • @Skewers-qf4nu
    @Skewers-qf4nu 26 днів тому +1

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

  • @phusicus_404
    @phusicus_404 Місяць тому +2

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

  • @FerbyEats
    @FerbyEats Місяць тому +3

    This is super cool! Did a great job!!

  • @kshitijg1433
    @kshitijg1433 Місяць тому +1

    This looks amazing great job!

  • @peacefulexistence_
    @peacefulexistence_ 25 днів тому +1

    Really cool, subscribed!

  • @tobyyh
    @tobyyh Місяць тому +39

    This is ridiculous and I’m here for it

  • @agegarret7036
    @agegarret7036 Місяць тому +1

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

  • @jbh759
    @jbh759 29 днів тому +1

    Dude this is awesome, keep up the good work!

  • @Maximxls
    @Maximxls Місяць тому +1

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

  • @jullebulle8448
    @jullebulle8448 Місяць тому +1

    Great stuff and great video! Keep going! :D

  • @audiomac
    @audiomac Місяць тому +4

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

  • @maximood-tired
    @maximood-tired Місяць тому +2

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

  • @LukynkaCZE
    @LukynkaCZE Місяць тому +1

    very cool project! Love the video quality as well

    • @ohasanov
      @ohasanov  Місяць тому

      Thank you very much!

  • @shifty5917
    @shifty5917 Місяць тому +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 Місяць тому +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  Місяць тому

      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...

  • @Asdayasman
    @Asdayasman 15 днів тому +1

    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).

  • @aladeenzweipunktnull
    @aladeenzweipunktnull Місяць тому

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

  • @aminewallah
    @aminewallah Місяць тому +2

    amazing vid, you earned a sub 🔥

  • @Popzicle
    @Popzicle Місяць тому +1

    looking foward to see this port on the 3ds 👀

  • @SomeRandomPiggo
    @SomeRandomPiggo Місяць тому

    Really cool video!

  • @cake3014
    @cake3014 Місяць тому

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

  • @h3dzer
    @h3dzer Місяць тому

    You absolutely madlad, that's really cool:)

  • @Gamesational1
    @Gamesational1 Місяць тому +4

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

  • @Oreoezi
    @Oreoezi Місяць тому +1

    Very awesome!

  • @idiedlastmonth
    @idiedlastmonth Місяць тому

    Beautiful work pal! Thanks for sharing.

  • @resolvedman
    @resolvedman Місяць тому +2

    great job!!!!

  • @TienDesu
    @TienDesu Місяць тому +1

    Good work

  • @NotEvenJokingg
    @NotEvenJokingg Місяць тому +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  Місяць тому +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 Місяць тому

      @@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  Місяць тому +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

  • @rosux5540
    @rosux5540 Місяць тому

    looks sick!

  • @jkmelri
    @jkmelri Місяць тому +1

    Love this!

  • @DubUltra
    @DubUltra Місяць тому +1

    great video

  • @aimpizza6823
    @aimpizza6823 14 днів тому +1

    Very cool!

  • @Benethen_
    @Benethen_ Місяць тому +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.

  • @Koffiato
    @Koffiato 21 день тому

    Eline koluna sağlık

  • @dagdnoob
    @dagdnoob Місяць тому +1

    Good video brother

  • @fudencio
    @fudencio Місяць тому +1

    very impressive

  • @_voexx
    @_voexx Місяць тому +1

    eline sağlık

  • @0w0.727
    @0w0.727 Місяць тому +1

    Yt recommendation back at it 🔥

  • @xplurales1138
    @xplurales1138 Місяць тому +1

    So cool 🤩🤩

  • @cinarasultankulova4052
    @cinarasultankulova4052 Місяць тому

    Браво Омер👍

  • @MommysGoodPuppy
    @MommysGoodPuppy Місяць тому +1

    im really interested in 3ds development vids

  • @error.418
    @error.418 Місяць тому +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  Місяць тому

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

  • @nbanba9033
    @nbanba9033 Місяць тому +1

    Tebrikler....👏👏👏

  • @Jota_s2a
    @Jota_s2a Місяць тому +1

    nice man

  • @Rageinater
    @Rageinater 25 днів тому +1

    yo this is cool

  • @SuboptimalEng
    @SuboptimalEng 28 днів тому +2

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

    • @ohasanov
      @ohasanov  26 днів тому +1

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

  • @xvrydo8649
    @xvrydo8649 5 днів тому +1

    1:14 sure buddy, you have a good enough screen to Even render that.

  • @prasnikar9465
    @prasnikar9465 27 днів тому +1

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

  • @diamondfailer11
    @diamondfailer11 Місяць тому

    Milli gururumuzsun

  • @TechTutor429
    @TechTutor429 26 днів тому +1

    Great

  • @pladselsker8340
    @pladselsker8340 Місяць тому +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  Місяць тому +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 :)

  • @wuaht
    @wuaht Місяць тому +3

    i was actually looking for an osu 3ds port WTH

  • @nurayosmanova3966
    @nurayosmanova3966 Місяць тому +1

    👏👏👏

  • @hoteny
    @hoteny Місяць тому +1

    Vayy be… tebriks

  • @pranjalambast
    @pranjalambast Місяць тому +2

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

    • @ohasanov
      @ohasanov  Місяць тому +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 Місяць тому

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

  • @prismatic-bl8qf
    @prismatic-bl8qf Місяць тому +1

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

    • @ohasanov
      @ohasanov  Місяць тому

      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 Місяць тому +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  Місяць тому

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

  • @duckduckXD
    @duckduckXD Місяць тому +1

    nice 👍 pt2 when?

    • @ohasanov
      @ohasanov  Місяць тому +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!

    • @duckduckXD
      @duckduckXD Місяць тому

      @@ohasanov okay 👍,take your time

  • @hevilmateold
    @hevilmateold 20 годин тому

    727 subscribers ain't no way

  • @zunv
    @zunv Місяць тому

    man i wish original osu was coded in c++

  • @spaghettiking653
    @spaghettiking653 Місяць тому +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 Місяць тому

      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  Місяць тому

      @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  Місяць тому

      ​​@@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 Місяць тому +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 Місяць тому +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?

  • @_.-.-_.-.--.-_.-
    @_.-.-_.-.--.-_.- Місяць тому

    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  Місяць тому +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!

    • @_.-.-_.-.--.-_.-
      @_.-.-_.-.--.-_.- Місяць тому

      @@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  Місяць тому

      @@_.-.-_.-.--.-_.- Hmm, I just learned C++ from random UA-cam 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...

  • @chiffaonosu
    @chiffaonosu Місяць тому +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

  • @GuyThatCREATESRandomStuff
    @GuyThatCREATESRandomStuff 11 днів тому

    Hope the ZIP decoder will be fixed, i found out that i have to manually extract the beatmaps but which folders do i extract to? (My ZIP decoder is ZArchiver btw.)

    • @ohasanov
      @ohasanov  11 днів тому

      Yeah so there should be a folder named "beatmaps", I just noticed that it isn't there on github, sorry. You can create the "beatmaps" folder in the same place as the "resources" folder

  • @Jdbye
    @Jdbye Місяць тому

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

    • @ohasanov
      @ohasanov  Місяць тому

      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.

  • @i_is_evil_duck
    @i_is_evil_duck 28 днів тому

    dats sow cewl

  • @unyu-cyberstorm64
    @unyu-cyberstorm64 Місяць тому +2

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

    • @ohasanov
      @ohasanov  Місяць тому +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 Місяць тому +1

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

    • @ohasanov
      @ohasanov  Місяць тому +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 Місяць тому +1

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

    • @ohasanov
      @ohasanov  Місяць тому +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)

  • @davideilas1202
    @davideilas1202 27 днів тому +1

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

    • @ohasanov
      @ohasanov  26 днів тому

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

  • @Exarvi
    @Exarvi Місяць тому +1

    3:51 is that solace of oblivion?

    • @ohasanov
      @ohasanov  Місяць тому

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

  • @T4niox
    @T4niox Місяць тому +5

    maliszewski?????

  • @whatever7338
    @whatever7338 Місяць тому

    Damn dude that is one giant pile of spaghetti code.

    • @ohasanov
      @ohasanov  Місяць тому

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

  • @KyButler
    @KyButler 4 дні тому +1

    I wonder if Lazer uses less RAM

    • @ohasanov
      @ohasanov  4 дні тому

      In some maps, it does actually use less ram!

  • @jambalaya974
    @jambalaya974 Місяць тому

    this is basically what mcosu is

    • @ohasanov
      @ohasanov  Місяць тому

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

  • @RugiSerl
    @RugiSerl Місяць тому

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

    • @ohasanov
      @ohasanov  Місяць тому

      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 Місяць тому +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  Місяць тому +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...)

  • @evanmico
    @evanmico Місяць тому

    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  Місяць тому

      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 Місяць тому

      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  Місяць тому

      ​@@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!

  • @PeterKilian
    @PeterKilian Місяць тому +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  Місяць тому

      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 Місяць тому +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

  • @kunefek
    @kunefek Місяць тому

    really cooked anyways

  • @Ayachiii_
    @Ayachiii_ Місяць тому +1

    Mania when

    • @ohasanov
      @ohasanov  Місяць тому +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...)

  • @StaringLongingly
    @StaringLongingly Місяць тому +1

    steins;gate detected!!

  • @echoeee
    @echoeee Місяць тому +1

    osu

  • @usuyus
    @usuyus Місяць тому +2

    that looks painful to make
    respect

  • @muslimgamerrr9479
    @muslimgamerrr9479 5 днів тому

    ARCHCRAFT RAHHHHHHHH

  • @osurestrict
    @osurestrict 8 днів тому

    peppy in 2006 be like:

  • @m4rt_
    @m4rt_ Місяць тому +3

    why not just C?

    • @melkiorgabriel9539
      @melkiorgabriel9539 Місяць тому +2

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

    • @ohasanov
      @ohasanov  Місяць тому +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 :')

  • @Aestareth_
    @Aestareth_ Місяць тому

    simplest c++ program:

  • @oglothenerd
    @oglothenerd Місяць тому +2

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

  • @sinom
    @sinom Місяць тому

    "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  Місяць тому

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

  • @VoxelPrismatic
    @VoxelPrismatic Місяць тому +7

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

    • @ohasanov
      @ohasanov  Місяць тому +6

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

  • @himalayo
    @himalayo Місяць тому +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  Місяць тому +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 Місяць тому

      @@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  Місяць тому

      ​@@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...

  • @bacon_with_brussels_sprout
    @bacon_with_brussels_sprout Місяць тому +1

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