Oh man, this is a really good video. Thank you for sharing!
@UnitOfTimeYT Жыл бұрын
Glad you liked it!
@chicoworry Жыл бұрын
nice video series Unit! keep doing this amazing content
@UnitOfTimeYT Жыл бұрын
Thanks! Glad you're enjoying it!
@billynugget7102 Жыл бұрын
The ci/cd system is crazy. Impressive af
@UnitOfTimeYT Жыл бұрын
Yeah Github has definitely worked hard to make Actions very simple to use. And it pretty much is. There's still a little user friction with setting up credentials to other cloud providers, but other than that I've been pretty happy. Then docker and docker compose are suuper nice. I highly recommend them if you just want to deploy a bunch of containers to a single host
@billynugget7102 Жыл бұрын
@@UnitOfTimeYTive definitely gotta check that out!
@sveculis7369 Жыл бұрын
Even though this is not something EXTREME, it represents a rare symbol of what Go is capable of. A shame a lot of developers don’t know Go allows you to go as low-level as you want, whilst still providing a SOTA GC. Bravo!
@UnitOfTimeYT Жыл бұрын
Yeah I agree! I think if you're careful enough you can make Go code very fast. But honestly, one big selling point for me is just how easily I can snap things together :) Thanks for watching!
@dandogamer Жыл бұрын
it can't go super low level like linux kernel because it relies on sys calls from the operating system to work properly, but i love using go!
@sveculis7369 Жыл бұрын
@@dandogamer Well you can always bind it with C or just use GOASM, but that’s not really what I meant. Go’s low-level and optimization models are opt-in, unlike other languages like C++ or Rust which enforce them due to lack of a GC. That being said, I wouldn’t write single-threaded, nano-optimized code in Go, but would rather use C and wrap the rest of the codebase/non-hot paths in Go.
@sveculis7369 Жыл бұрын
@@UnitOfTimeYT Always looking forward to your great content, especially in Go!
@AnEmortalKid Жыл бұрын
For Prometheus and graphana are you storing the data on a Mounted volume? I had it running once with docker compose and when I restarted all the data disappeared since it was stored on the ephemeral container disk. There may be a way to specify a port for your compose setup to not have to use the host network, if usually is some env var on the image (unless it’s your own image)
@UnitOfTimeYT Жыл бұрын
haha Yeah I ran into that exact same problem! It would lose all my monitoring data every time I redeployed. I ended up switching to the mounted volume after that. For the WebRTC problem, I think I would have to expose the entire UDP port range because I'm not sure which port is going to get used for the connection. The WebRTC library I'm using has two functions which I think might help my situation: 1. pkg.go.dev/github.com/pion/webrtc/v3#SettingEngine.SetEphemeralUDPPortRange 2. pkg.go.dev/github.com/pion/webrtc/v3#SettingEngine.SetNAT1To1IPs I think I'll play around with these in the future. WebRTC is still somewhat mysterious to me. Thanks for watching!
@MaiuOnline5 ай бұрын
Hey, I remember that You were using websockets but later changes to the WebRtc. Can You remind me how big improvement in the latency did You achieve?
@UnitOfTimeYT5 ай бұрын
It's not that the latency will decrease. It's that if a packet gets dropped there will be less of a latency spike. So in that since you'll have better average latency. I didn't explicitly measure it, but everyone seems to report less latency spikes with the webrtc connection, though they could've been biased because I told them the connection type was different. So it wasn't a blind experiment or anything like that.
@dracula5752 Жыл бұрын
Let's gooo
@jomy10-games Жыл бұрын
Noice
@PicoBellum Жыл бұрын
Hi, from what I am seen with the amount of rendering that you are doing you should be ok with regenerating the a batches each frame. There is no need for caching system you just rebuild every thing each frame. For less than 5k sprites it should not take more than 1ms (I am talking about a native executable not WASM, maybe WASM is the problem). From what I see you are using a generic Mesh type, I would recommend to use a Sprite type with (pos, rot, scale, texture_id, ...) and create a batch of sprites, that way you get continue chunk of memory and only need to do two copies, first you fill the buffer and then you send it to the gpu (Using the Sprite type will also allow you to use instancing more easily because you know your data). Also if you want animated tiles you can animate them in GPU by sending the current tick (or dt) to the vertex shader and calculating the current frame in the shader, no need to rebuild the geometry if it is static.
@UnitOfTimeYT Жыл бұрын
Thanks for the suggestions! I'll definitely agree. WASM is a bit slower than native, so caching probably helps a little more there. I think that I'll eventually rewrite my rendering library from the ground up, now that I understand how it works a bit more (and hopefully learning from the mistakes of my first try). Luckily, like you said, 2D doesn't take that much performance - But it would be nice for it to run smoothly on low-end devices. Anyways, thanks for watching!
@bobsmithy3103 Жыл бұрын
4:38 I love webrtc xD
@UnitOfTimeYT Жыл бұрын
Haha yeah. WebRTC has been super nice so far. If you're using Go, I highly recommend the Pion stack!
@milosancheztv8432 Жыл бұрын
I love your devlogs they are really neat. Suggestions : [you speak too fast. Please edit out the mouth noises.
@UnitOfTimeYT Жыл бұрын
haha thanks. I appreciate the feedback. Yeah I agree, I'll try to work on both those things!
@milosancheztv8432 Жыл бұрын
@@UnitOfTimeYT But apart from that, I liked the explanations. And the art is cool. Cant wait to see more gameplay !
@UnitOfTimeYT Жыл бұрын
@@milosancheztv8432 Thanks! Yeah, I'm always wanting to improve the quality of my videos, so please continue to say something if you think there are areas that need improving!
@milosancheztv8432 Жыл бұрын
@@UnitOfTimeYT Well apart from that I think everything is really great but If i find something ill tell you. Cant wait to try your game !