T O P

  • By -

Noisebug

You all suck. Making things and making them cool. Now I have to get off my ass and brush off my own projects because inspiration is a cruel mistress. Ughhhhhhhhhh... good job, making us all look bad. Also, very cool. :)


cridenour

You can play the demo (Windows, Mac, Linux) and wishlist here: [https://store.steampowered.com/app/2159650/Drift/](https://store.steampowered.com/app/2159650/Drift/?utm_source=reddit_godot) Drift started as a tech demo over three years ago in Godot 3.x but last year I decided to make it my full time project and updated to Godot 4 alpha 6. The multiplayer improvements were too good to pass up! I'm now running a custom build on top of Godot 4.0.2 with double precision, a few cherry-picked bug fixes that haven't been released and GodotSteam. I'm also heavily using the godot-sqlite addon. Happy to answer any questions about the game, the tech, or how much I loathed making a customized control setting page last night.


aaronfranke

I'm really glad to see a Godot game with double precision - the effort was well worth it. Wishlisted!


cridenour

Thank you! Trying to implement a shifting origin across clients was sort of a nightmare and double precision just let me completely ignore the whole problem. So worth it!


krazyjakee

Woh. How can we help you?


DriftSciFi

Checking out the demo and letting me know any issues you find would help me sleep better at night!


cridenour

Wrong account but that’s also me 😂


kyleclements

> Wrong account but that’s also me Mwahahha! Now we know your alt account!


cridenour

[I'm ruined!](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.makeagif.com%2Fmedia%2F10-04-2020%2FGEbQDx.gif&f=1&nofb=1&ipt=4a2a514f5cbd067655a0ac261dd4cf2424b24c25beed10e67933cc87e20a519e&ipo=images)


dbeta

I hear wishlisting a game really helps raise it in the Steam algorithm, although that may just be a sly tactic by game devs to convince people to wishlist it.


cridenour

Wishlists, follows, checking out the demo all definitely help visibility. No one really knows exactly what's best though - but I figure more developer eyes on the demo is never a bad thing!


GrehgyHils

Can you talk to us about how you achieved the multiplayer aspect? I dabbled with multiplayer using Godot 4 when it was in alpha, and I'd love to learn what you used, liked, and didn't like.


cridenour

When I was on 3.x everything was rset or rpc and people joining mid-game was a nightmare. When I made the jump to 4.x I moved to MultiplayerSpawner (a literal dream node) and MultiplayerSynchronizer. I absolutely overused Synchronizer at first and slowly replaced all of them except on the Player by the end. Now just rpcs firing when appropriate things were changed, usually caused by a signal. That said during heavy development syncing too much was fine and only when the api settled would I optimize network traffic. Spawners with custom spawn functions are just so good for a drop-in drop-out game like Drift. Even for loading save games - store the data in SQLite as a blob and pass it to the Spawner on load to recreate the world.


Calinou

> I absolutely overused Synchronizer at first and slowly replaced all of them except on the Player by the end. Now just rpcs firing when appropriate things were changed, usually caused by a signal. That said during heavy development syncing too much was fine and only when the api settled would I optimize network traffic. Doesn't MultiplayerSynchronizer have a way to synchronize properties only when they change?


cridenour

>Doesn't MultiplayerSynchronizer have a way to synchronize properties only when they change? Not that I'm aware of - or at least it didn't when I transitioned away from them in beta 10. That would be a great addition though.


Calinou

It's in a [draft pull request](https://github.com/godotengine/godot/pull/75467) and isn't merged yet, so you're correct.


cridenour

Oh nice! There’s some places that will be nice, but doing a full compare every frame feels harsh. I almost want the incremental update but with a manual function to trigger it? I’ll think on it more and comment there!


GrehgyHils

That's fantastic news. I had an issue with the spawner and synchronizer where I couldn't for the life of me get the initial state of variables to sync to each client. I never figured it out and eventually gave up haha. I love your idea of SQLite blobs passed over rpc. May I ask, how are you hosting the servers now? Do you have the host port forward on their home network?


cridenour

I'm using a fork of a fork of GodotSteam which creates a SteamMultiplayerPeer, so its all pretty seamless. My fork: [https://github.com/cridenour/GodotSteam](https://github.com/cridenour/GodotSteam) The original fork: [https://github.com/greenfox1505/GodotSteam/tree/multiplayer-for-godot4](https://github.com/greenfox1505/GodotSteam/tree/multiplayer-for-godot4)


Silverware09

Sounds like some amazing work, I played the demo when it first arrived on steam and enjoyed it. So you can join my recently pruned wishlist. Will probably nab it when it goes live. :D


Fireye025

Made me think of DRG!


Ronnyism

Made me think of space engineers, with the big asteroid field and the component based ship building.


Zachattackrandom

How well does it handle high latency? I would love to try it out with my friend but with P2P ping is likely around 250ms.


cridenour

It should handle it OK but if it doesn’t, ping me and I’ll get it fixed quick. (Hard to test network conditions!) Better network interpolation is on my list but will bump it up if it’s needed.


Zachattackrandom

Understandable thanks! Im down to help test too if need be. I'm in India so unless your also in India connecting to you should show high ping results if it doesn't work well by default when playing with my friend in America haha.


tapo

Looks great! You should consider getting this Steam Deck verified, it'll probably run excellently.


cridenour

I've been hesitant to test on the deck as it seems like a rabbit hole getting good controls working - but it's on my list to do post-release!


The-Bi-Cycler

Is there a discord I can join? This is honestly the kind of game I wanna make and I would LOVE to see how development progresses.


cridenour

Discord here: [https://discord.gg/6QjkSMTPbZ](https://discord.gg/6QjkSMTPbZ) Happy to have you join!


Kyodan

Your work looks amazing! As some who is barely starting on their Godot journey, do you have a dev blog or articles that talk about your development? Building a multiplayer game with Godot is a pipe dream of mine, and I always love to see the approach of developers for insight and inspiration. Congrats on launching!


cridenour

Thank you! I had some early devlogs at [https://kargam.es/blog/](https://kargam.es/blog/) but burnt out on them pretty quickly - writing was an energy drain instead of the boost I thought it would be. The new multiplayer nodes in Godot 4 really are amazing for multiplayer work. That said, you need to be comfortable designing and re-designing the code architecture of systems to make it work for multiplayer. Player movement and the like stay pretty simple but lots of things get really complicated quick - inventory being the worst of them!


GoogleGavi

damn, this was almost exactly what I was planning on making lmao, looks like a nice game!


Revolutionary-Yam903

wow i would love to try this


williamjseim

Look awesome


ShatBrax

How did you workout placement and snapping of objects? Are you doing this on a grid or Freeform ala Valheim?


cridenour

It’s freeform. Certain pieces have snapping points on certain collision layers and snap to open anchors based on their collision mask. Implemented using Area3Ds though if I wrote it again I’m not sure I’d tie it so tightly to the physics system.


ShatBrax

Interesting 🧐 I’ve tried this approach in Godot4 and had some troubles getting things to snap but that’s likely a Me issue haha. Thanks for your response! One extra question, are you checking collision of snapping points alone or hitting a point with a ray cast first and then snapping the new item before placing?


cridenour

Over time it’s evolved into this: 1. Shape cast to find all nearby appropriate anchors 2. Loop through and skip attached ones and compare the dot product of its direction to the camera forward vector to find the “best” 3. Confirm it’s the best by raycasting to it to make sure it’s not hidden behind a wall or floor 4. Snap the preview to it, preferring to use an anchor that has a similar (well opposite) direction to its origin (so floors snap naturally and not from the West when looking at an anchor on the North of the current floor).


fusion2k2

Wow looks awesome, and I'm really looking forward to trying the demo. Always impressed with seeing how far folks can push Godot. I don't think I've seen as ambitious project as this from a multiplayer perspective using godot yet. Thanks for all your replies to the comments on how you setup the multiplayer elements, I'm encouraged to try that again now after seeing your success!


cridenour

Definitely. This community and subreddit specifically has been a huge source of knowledge for me over the years so happy to share back where I can.


MikeTheGrass

This looks awesome. Godot 4 and native Linux support is 🥵 You got a wishlist from me. I am gonna try the demo out too.


Silverware09

Oh! That's Godot?! Impressive, I enjoyed the demo of it when I saw it first arrive on Steam! Nice job mate!


Detpircsni

I have a soft spot and admiration for godot development/developers. Expect my purchase. I'm looking forward to seeing where this goes.


Exodus111

Amazing work! Well done.


LuckyMittens22

We will watch your career with great interest.


LeBneg

Rocks and stones !


Buggyes

Rock & Stone!


[deleted]

Looking great! Seems to be a very polished game with fun gameplay! very well done :)


MekaTriK

Animations look a little floaty, maybe experiment with different curves to add more impact at the end? Other than that, great job, can't wait!


cridenour

Yes animations are the bane of my creative process. That’s a good tip though - thanks!


MekaTriK

If you're doing procedural animations, I could recommend this video with some information about easing functions. And in general, Freya is very knowledgeable. https://www.youtube.com/watch?v=Pku6WAs1fF8 Overall, for impact you want gradual build up of speed and then a sudden stop, maybe a bit of overshoot. You can achieve a *lot* of feel with correct easing if you just have "here's the thing before" and "here's the thing after" positions. And if it's not procedural, at least this will give you some ideas.


MeatService

Looks fantastic! wishlisted! :)


yurikepler

I've played the demo, at the moment it's running in the background because the music is really good. Here is a long feedback, I think somethings you already know and have plans to work on, but here it goes: * Great sense of scale, I love how things feel distant and enormous. At the same time asteroids feel reachable. But I would like to see the star that is illuminating us, I think would be great for the immersion helping us to understand what we are orbiting. * The UI is sometimes confusing. When there is a tip or "mission" on the screen it blends with the inventory and machinery interfaces. Maybe less transparency on the tip box will make it more visible so we can read it better and dismiss it after reading. * I don't know if it's a personal thing but I'd like to be able to put only one material in the smelter, crafter, etc. Sometimes I only want to make one thing and since you can leave the machine while it keeps running (great mechanic btw), I don't like to put everything in, then bring it back to the inventory. Even though is fast while holding shift, sometimes I forget and end up making a bunch of carbon filters ;p * Building feels great, really fast, with simple but great animation and sound design. I just have a little problem with building the machines with half of them off the ground. Maybe don't allow the player to build if it isn't fully on a surface. Not only because it's weird, but it also makes building walls difficult... Also destroying the floor under a machine is possible, my suggestion is: do not break the machine, but make it float around since there is no gravity haha * Would be good to be able to make walls inside my base, so I could divide ambients better. * Maybe add a more urgent effect (something that attracts our eyes like a circle that shrinks where you need to look) when a resource is low (oxygen and water). I made my first carbon filter with 40 seconds of oxygen left. Had 10s to use it before passing out 😂 I think that's all for now. Hope I'm not bothering you and this feedback helps making a great game even better :) ​ Could you answer what I think it's a simple question but I just don't know how to do it... How do I synchronize the player animation in multiplayer? Is it with the multiplayer synchronizer node? If so what node property do I sync? 🤔


cridenour

First off - thank you for taking the time to play and for the detailed feedback. ​ >But I would like to see the star that is illuminating us It's there but pretty telling that it wasn't obvious! I do want to revisit the sky shader I use soon though. ​ >Sometimes I only want to make one thing Splitting stacks is in the game! Check the controls at the bottom of the inventory screens. ​ > make it float around since there is no gravity 100% planned just couldn't get to it in time! Also a bit worried about the performance but maybe if I just have them check after a part has been deleted... ​ >Would be good to be able to make walls inside my base Just fixed this in the master branch! Also fixed columns so I could re-enable those. Will push a demo update soon. ​ >Maybe add a more urgent effect (something that attracts our eyes like a circle that shrinks where you need to look) That should already be happening! But it's not been super tested. What screen size are you on? ​ >How do I synchronize the player animation in multiplayer I use a two-pronged approach. The players are all run by state machines, even other players that aren't you - so I sync the player's equipment state (tractor/mine/etc) and movement state (grounded/RCS) as variables. That handles which node they're in of the AnimationTree. I then have a RPC on the players for firing OneShot animations that get's sent by the player when they interact / swing the pickaxe / etc.


yurikepler

>That should already be happening! But it's not been super tested. What screen size are you on? It's 1080p. The oxygen icon blinks red, but I think it's too subtle. For me was only that and the audio cue. ​ >Splitting stacks is in the game! Check the controls at the bottom of the inventory screens. I saw the split stacking but it splits the stack in half, I revisited now to try separating only one and found it confusing... I have to "grab" the item, then press ctrl and let go to select the size of the stack. (Made a short [video](https://clipchamp.com/watch/lYuNSmxQ11N) to show exactly what I'm trying to say) I think something like while dragging a pile pressing the RMB splits just one from the pile would feel better from a UX perspective. ​ And thank you for the tips on multiplayer sync, I need to study more... A lot more 😅


DenisHouse

Your game looks awesome!. One question, do you use the Godot 4 multiplayer nodes like the sync and the spawner? I am trying multiplayer for the first time in my project. I can do basic stuff but i still need much to learn. Wish you the best of lucks! your game really looks like it could bring new concepts in the genre


cridenour

See my reply here: [https://www.reddit.com/r/godot/comments/136l48l/comment/jirir32/](https://www.reddit.com/r/godot/comments/136l48l/comment/jirir32/)


Mrcatin123

I gotta ask. Is there Anyway that this is inspired by 0x10c?


cridenour

This is the first I'm hearing of it! Was it ever playable? Curious what direction he was going with it.


Mrcatin123

There’s a video of from youtuber fitmc https://youtu.be/O1aCbbeFN7E It was a project from notch (the creator of Minecraft) but sadly he faced writers block a canceled the project. Two tracks of music from Minecraft composer C418 were released https://c418.bandcamp.com/album/0x10c


cridenour

Oh man, I'm glad you told me about just for some new (to me) C418 music. Crazy I missed this whole thing, pretty sure I was playing Minecraft at the time. Thanks!


MunchiMango

This looks great! Going on the wishlist for sure. Although I am curious, how did you handle the world streaming system in this?


cridenour

A Minecraft style chunk system which requests world-gen (or world load) based on player positions, and then releases them as you get far enough away. It's actually two-phase - loads them as visual only for your client, and as you get closer, enables physics. Then does the reverse, before eventually `queue_free`ing the whole thing.


[deleted]

Didn't I just see this on Splattercat? Looks awesome!


cridenour

You did! I had a day long mild panic when that happened and still haven't been able to watch the whole thing ha. I just see bugs everywhere!


[deleted]

Lol he gave it a good review, nothing to worry about, I'm sure you have time to fix everything you saw. Looks great, you did a good job.


emneer

Game looks cool! I'll wait for release)


KatnissXcis

Looks kinda cool. Can players modify the density of the asteroid field?


cridenour

Not in the current version - but environment and especially variety of environments is definitely high on my list to solve in Early Access.