To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/LandonDevelops/ . You’ll also get 20% off an annual premium subscription.
@timmygilbert410212 күн бұрын
I just hash time, use the hash as index in the schedule, then lerp between spot, and apply the hash of the lerp value to a list of points that encode the path between spot, spot has an animation tag for context emotes. No simulation as the map areas hold reference to possible npc relative to time, npc position is a stateless function. Random schedule entry for variations, deterministic with a seed, abuse determinism to query were a character would be at all time, useful for a pseudo simulation of knowledge without storing anything.
@LandonDevelops11 күн бұрын
That's a lot of words I don't understand 🤣For real though, that sounds like a much more clever solution than what I've come up with
@yt_n-c0de-r10 күн бұрын
@@LandonDevelops Hashing is essentially calculating a very specific value from ... well... anything - objects, values, strings. A good hash is (almost) perfectly unique and as such can be referred to get destinct data(points) in a collection. And I'll try to explain it a bit more, if I understood the idea correctly. For the example mentioned in your video: hashing the times between entering the house (let's say 7:50.00) and reaching the bed (for example 5s, so 7:50.05) would give you 5 specific values (for each second) your code could refer to. When the Player enters the house, for example at 7:50.03, on loading the scene your NPC would check the time, calculate the times curent hash value and look for a hash in its own list, telling it where it should spawn. That way it "looks" like they advanced towards the bed, but have obviously not reached it yet. The idea is very good, hashes are very quick and efficient!
@LandonDevelops10 күн бұрын
Yeah that does sound cool! Would you then just precompute the paths and associate them with the hashes?
@yt_n-c0de-r10 күн бұрын
@@LandonDevelops Oh sorry, I forgot about that part. Yeah, you would build a table with hashes (for times of a day an NPC would experience) and some waypoints - usually a HashMap (very popular data structure) is used. Hopefully, you'd need this only for transitional events, but could in theory every NPC could have their own hashmap for all seconds of the game day and where they should be. Maybe the OP can explain the concept better. (Now, I wonder how TLoZ:MM did it on the limited tech of N64...?)
@honaleri7 күн бұрын
@@yt_n-c0de-r That's actually an excellent explanation, OP made it sound like wizard incantations but its straight forward once you know what those words mean. You did a great job laymenizing that information, thank you. ❤ I learned something.
@Fentiman7 күн бұрын
I would consider giving items you can pick up a floating animation with a shadow. This would make it easier to distinguish items from terrain decoration.
@LandonDevelops2 күн бұрын
That is a great idea!
@FillMakesGames14 күн бұрын
This is a cool logical way to make NPCs feel more alive! Sadly, I don’t have any NPCs in my game so I can’t steal your idea 😁 Overall, cool concept and cool video! Thank you.
@LandonDevelops14 күн бұрын
Thank you!
@yt_n-c0de-r10 күн бұрын
I always like games with clockwork-mechanics, where NPCs behave like cogs in a complex machine (similar to real life, but obviously smaller). GOAP is a great way to do this. Hope to find some NPC-NPC interaction events soon ;) Reminds me of Zelda: Majora's Mask every time... ^^
@LandonDevelops10 күн бұрын
Yeah I really love when NPCs feel like they have their own stuff going aside from what the player is doing
@honaleri7 күн бұрын
I wanted to build my system on the paradigms of persistence. So, the backend concept is very similar to what I wanted to do. Basically an invisible simulation of everything is always happening, but the player pops in to just see a small scope of it rendered in front of them. Then again, I also want the full simulation route for my game. So need/want based decisions are apart of that. I feel it's more necessary for that method of design, because if persistence matters, the players interaction with the world shouldn't break the persistence of simulation. They have to integrate seamlessly to be convincing and constructive. But, I love to see how other people have handled these things, and love to see their differing solutions. Knowing what you need to achieve is half the goal it seems sometimes. lol.
@LandonDevelops2 күн бұрын
That sounds like a pretty cool project! I think Dwarf Fortress does something like that where they're constantly simulating everything
@Negreb2514 күн бұрын
Good job! 👏 I really like what you did, tho i think they shouldnt come to a full stop for so long
@LandonDevelops14 күн бұрын
Thanks! Yeah the schedules in the actual game will definitely look different, this initial version was just a proof of concept 😊
@WRONG_WARP8 күн бұрын
Hey there, this game looks super cute! If you're looking to work with a composer to write the soundtrack I'd definitely be interested in discussing that with you. Let me know!
@LandonDevelops2 күн бұрын
Hey thanks for reaching out! I'm actually a composer myself so I'll probably be doing most of the music myself but I'll reach out if I need any additional support!
@WRONG_WARP18 сағат бұрын
@LandonDevelops Sounds good, thank you!
@sixty5notch7968 күн бұрын
dude, you know im not gonna use brilliant, just cause their service doesnt intrest me, but the fact that they are supporting someone with less then 1k subs? i just gained a lot of respect for brilliant. also new sub!
@LandonDevelops2 күн бұрын
Thank you!
@joshuaneiswinter25312 күн бұрын
I am making my own game, but in Unity. I too am just getting to the point of wanting/needing to add NPC scheduling. You went with a very similar method as I did. I have a custom script for "waypoint" which currently consists of a time (just the hour) to leave the current waypoint and a vector3 for the location. On the NPC script I have an index and a List and if the time matches the current index's time, the counter goes up and updates the target position. I was really hoping for more .. insight.. as to how you were going to approach the zoning of the NPCs as well as what your approach to having them do something besides go to the next location. For me, (using you to bounce ideas / check high level logic) I am thinking of having an enum with different states that can get set once they reach their target position and then some kind of check for which state they are in and have an AI function/loop based on their state. As for the different areas/rooms/zones/scenes... honestly mine is still just the one area because I haven't had the mental fortitude to tackle zoning properly yet.
@LandonDevelops11 күн бұрын
Yeah I think a sort of "sub-FSM" using an enum would be a good idea! Once I have the insight myself, I'll be sure to share it 🤣
@yt_n-c0de-r10 күн бұрын
How about a distict "state" datastructure that you can design yourself? Gives you more advantage and control (yes, more work too ^^), and fits FSM rather well. I love enums, they give you lots of bit operations to play with (especially in C#), but they can be a bit limited imho. They can work if you have different "types" of enums, that can be "combined" to reflect very unique state(-structures). Very interesting :D
@joshuaneiswinter25310 күн бұрын
@@yt_n-c0de-r I already have in place things for day (number), day name (string), enum season, all of those are in a "time manager". My idea is to basically let the NPC choose what state it should be based in off of those global variables, and some local ones for the indivisible NPC. Honestly I haven't even opened it in a couple of days because I've been kind of chaise-paralysis with it. I'm probably going to take a pad of paper and pencil somewhere and sit down away from distractions and figure out what I actually need to do.
@yt_n-c0de-r10 күн бұрын
@@joshuaneiswinter253 Just a design question: why not make "day of a week" (aka "name") an enum too? Internally they are just numbers which you can do math on and more, but also gives you type checks, easier comparison and auto complete - more code security and correctness - compared to strings. And if needed you can always get the "string" representation of the enum with less room for typos ;) I love taking time off from the screen and design on paper (it's used in the "industry" too). Take your time. It all sounds pretty well so far :D
@joshuaneiswinter25310 күн бұрын
@@yt_n-c0de-r I originally did that, but I couldn't figure out how to blah blah = Dayname[date % 7] so I just made it a list of strings. The dictionary key will be something along the lines of "Spring3" or "Autumn25". I tried getting an NPC to use a few different navigation methods tonight but struggled and now I'm tired lol.
@zejugames504513 күн бұрын
Wait, what's the game again? I lost the plot!
@LandonDevelops12 күн бұрын
It's kind of like Stardew Valley mixed with Mount and Blade but I'm realizing that might not be the best description. I think in my next video I'll go over the whole idea of the game because I don't think I've ever actually done that lol