• Welcome to droqen's forum-shaped notebook. Please log in.

Learning/Exploring Ambient (game engine)

Started by droqen, May 05, 2023, 12:34:39 AM

Previous topic - Next topic


I'm trying out Ambient.

I forgot to start a devlog for this, but I feel like it might be interesting to document my thought process. Here's a rough overview of my journey:


Naively gave Ambient a try thinking it was something I could knock out in a few hours--embarrassingly presumptuous of me. I got stuck on some basic stuff and it actually sent me into a small existential spiral, like, I guess I can't do programming anymore, I'm just a helpless designer! Bad feeling, but got through it. Had a conversation with a small games community that refreshed and rejuvenated my energy and confidence.


Asked Tanner what he thought of Ambient, he shared with me the list of Rust engines that exist out there, and some opinions. I won't share them here, but it all had the effect of reminding me that Ambient is just one little fish in a big pond, it has weaknesses and strengths like the rest, and if I'm having trouble, it's not my fault.

So I got back into trying it, I spent about 3 hours squirming around trying to learn Ambient using a bunch of tutorials written by users in the Discord -- switch to a Rust tutorial to learn the basics of the language which I realized I actually didn't know at all in the first place -- then came back to Ambient, Owen Palmer helped me out in the #beginners-corner, and I... got exactly nowhere in terms of building a game.

Wrapped up the window of time I'd set aside for trying to learn Ambient.

I've been thinking the whole time, "How does Ambient want to be used?" I was really tempted to just figure out how to hack in a 2D rendering scheme and make a platformer, but it felt wrong. I felt like I was going in the wrong direction. I thought about some recent thoughts about nonresistance and realized that I shouldn't just be learning from the examples, I should literally be using them to find fun things to do.

Next time I'll build off one of the examples rather than starting from scratch. There is already a tiny bit of fun to be found in these folders, and I can do a little work to bring it out. That has the nice added bonus of also being basically the easiest way I could possibly do things.



I'm not sure how it came together that quickly. I thought I'd be screwing around for a lot longer, lost. I put together this 'first person moon finder' in... under two hours. My estimate is only an hour and a half. It's almost unbelievable that I put this together in such a short period of time.

It's nothing impressive, but I really enjoyed putting it together, it came from a very simple idea and arrived at a place I was roughly happy with. I copied the first_person_camera example and added some rudimentary '3d platformer' physics, as well as a particular environment. It was cheaply made, no doubt. But it was made.


I ran into a few issues. Notably:

- I didn't understand the difference between add_component/set_component which confused me

- The ordering of parameters in Ambient's 'message' was confusing, because it automatically (and secretly) sorts them in alphabetical order (I guessed this and figured it out)

Philpax in the Discord helped me confirm my suspicions, which was very important. Without that I might have spent a lot more time testing and wondering.



About a week of intensive Ambient-ing has passed! I kept an internal document rather than posting all of my thoughts here. In short, I am enjoying the engine, I'm having the easiest time with entities and physics, would like to spend more time with UI. There are a bunch of small QoL snags that caught me along the way. Nothing insurmountable.

I made a very small cheap sort of 'racing' (well, just obstacle avoiding) system and I think I'd like to try making a more complicated system, something like boids with a life of its own. That should really be my next subproject.

Now it's important to start thinking about what a fun, unique standalone experience might look like. I've got the engine very partially internalized, in terms of its capabilities, and I need to start using that to begin imagining games to play. Forms of play.