Wave Defense, Spatial Hashes, and the Pain of Browser Issues [MMO Devlog]

Поділитися
Вставка
  • Опубліковано 5 бер 2023
  • ⁍ Discord: / discord
    ⁍ Twitter: bit.ly/UnitOfTimeOnTwitter
    ⁍ Play: mythfall.com
    ⁍ Github: github.com/unitoftime
    // References
    ⁍ Ebitengine: ebitengine.org/
    ⁍ Javascript EventLoop: • Jake Archibald on the ...
    // Description
    This week I implemented a wave defense mode, improved the collision detection by using spatial hashes, and struggled through some performance problems in Firefox.
  • Наука та технологія

КОМЕНТАРІ • 14

  • @linewizard
    @linewizard Рік тому +2

    This reminds me of the time I spent hours trying to optimize my 3D rendering code to no avail, only to realize that hardware acceleration was disabled in firefox :X

    • @UnitOfTimeYT
      @UnitOfTimeYT  Рік тому

      haha yeah I saw that setting when I was solving my problem. I spent a good couple hours trying to be really sure that it was actually using the GPU lol

  • @KaceyXamComics
    @KaceyXamComics Рік тому +1

    I do front-end web development and one time I spent half an hour trying to figure out how to use the CSS :has selector, only to find out that it doesn't work in Firefox.

  • @WomboBraker
    @WomboBraker Рік тому +3

    Man you spending time with debugging the browser issue is too familiar. Hope you got a rush of dopamine after that tho

    • @UnitOfTimeYT
      @UnitOfTimeYT  Рік тому +2

      Yeah I was definitely happy, but with lots of regret that I couldn't figure it out faster. But I guess that's how it goes sometimes lol

  • @jaughtdev2648
    @jaughtdev2648 Рік тому

    Thanks for the video! Extremely well presented and succinct. I'm devving an MMO backend right now with the ambition of using C->WASM and WebGL (or WebGPU if that becomes a thing soon - of which I am entirely naive of) for the frontend. Do you have schemes on how you will deploy and orchestrate with respect to cloud, k8s, or other?

    • @UnitOfTimeYT
      @UnitOfTimeYT  Рік тому

      Thanks! Yeah definitely a neat topic. Right now I'm doing docker compose but I don't really have anything planned for multinode management. Eventually I'll probably build something to manage my docker deployments, I'm not sure about kubernetes. I've used it a little bit but I'm not sure how it'd do for something with persistent state. I'll have to think about it more as my game scales I think. Good luck with your project too!

  • @AldenPeffer
    @AldenPeffer Рік тому

    Nice stuff. What's your server-side tech stack?

    • @UnitOfTimeYT
      @UnitOfTimeYT  Рік тому +1

      I use Go for all the backend related stuff. Stack is Client -> Custom Proxy -> Game Server (all written in go). Then I launch and run everything in Docker (with docker compose) and do monitoring with Prometheus. In my last devlog I go into a bit more detail on the backend: ua-cam.com/video/UiuM8iHGyzA/v-deo.html

  • @dandogamer
    @dandogamer Рік тому

    Instead of generating each query function like that, could you instead use the functional options pattern to make a query struct which has different options?

    • @UnitOfTimeYT
      @UnitOfTimeYT  Рік тому

      Yeah you could definitely do it that way. The way I'm doing it is very similar to that. Where the user passes in the different filters (ie With(), Optional(), etc), and each of these filters implements an interface called "Filter" which could just as easily be replaced by just a function instead (where the data is just captured by a closure). You can look at how it's currently implemented at the top of this file, if you like: github.com/unitoftime/ecs/blob/master/filter.go

  • @juanmacias5922
    @juanmacias5922 Рік тому +1

    LOL developing for web is such a pain, having to debug every browser, and its quirks. >...

    • @UnitOfTimeYT
      @UnitOfTimeYT  Рік тому +1

      Yeah I agree, there's definitely some added pain in making things more cross platform. In this case though I think something is bugged with my Firefox install.