Daily* Devlogs
These are my semi-regular updates about the progress with my projects and just general life thoughts.
133 topics in this forum
-
You might not know this but Unity has some pretty strict serialization rules. It's a very lean system that is designed to be very very quick. Unfortunately as you get further and further into C# you'll find yourself wanting to use systems that aren't supported by Unity. You can achieve this through Odin but it does have some quirks. The first is that serialization will ultimately be a bit slower. I've never noticed the difference but we'll see if at scale it becomes much more noticeable. If push comes to shove I can always write an editor script to save all my data to disk, then swap back to the default unity serialization and have it apply the settings again. …
-
- 0 replies
- 1.5k views
-
-
Today was something of a day of hope for me. I went to the doctor and I might be on a path to help reduce the pain I'm always in. I don't mean this in the metaphysical sense, yes, I have serious anxiety issues, but actual literal pain. It is likely that lucky me caused some serious damage to a nerve. This happened about three years ago now I believe. Time has both been moving and frozen this entire time since it happened. The pain at times can be so intense that it erases all thought from me. But we'll see if I can overcome it. After meeting with my doctor I had a glimmer of hope and I channeled that into the project. Each node was a fair amount of work to…
-
- 0 replies
- 1.5k views
-
-
No pictures today. But we've still made progress. After a hearty run of Randomized BG3 I started work on the collection system for Moosecats. This database will store all of the Moosecat information for each kitty that joins your care. These systems require creating the single unit object, I call those Datum as you've probably seen. Then it requires a Data object which is a collection of Datum with various helper functions for adding and getting data from the database. Finally we make an artifact that contains the Data Object so that we can easily share our data between any number of in game objects without creating a bunch of duplicates or otherwise doing something else …
-
- 0 replies
- 1.5k views
-
-
Alright, the next feature we needed to hook up was looking around. This is already squared away for controller but with KBM (Keyboard and Mouse) this was a little less clear. Initially we had the camera always looking whatever direction you were moving the mouse. But as my wife wisely pointed out to me "So I need to let go of the mouse when I want to stay looking in a certain direction?" Well, the moment she asked that I realized I'm an idiot and decided that today I would be fixing that. So now, we have a button mapped to looking. Currently it is the left mouse button, but I think by default I'd rather it be the middle mouse button. Regardless we will allow for bu…
-
- 0 replies
- 1.5k views
-
-
Alright, I'm sick today which is fun. But I wanted to write an update regardless. Tonight I began designing the AI for the Moosecats. Now this isn't AI as it is being used currently in marketing. I'm literally trying to build up a wants, needs, and problem solving system for the Moosecats. The end goal being that if you don't give them dedicated things to do they'll act a bit like a little living critter. There are currently 8 obvious states that we will need. I'm working through the truth tables and what we need to track to keep this all sensible. The ultimate goal is that each state is fairly dedicated. We want actions to not be enormous and we want everything to m…
-
- 0 replies
- 1.4k views
-
-
Tonight I found myself wasting a lot of time on two things. Oxygen Not Included (market research, I swear) and editor scripts. The latter was definitely a genuine waste of time. What I was trying to do is not urgent or necessary as I'm the sole engineer on the project. Once I broke out of that hole I started working on the status update action for the state machine of our kitties. We've now got a container within the cats that houses the state of their needs, what that particular cat thinks is urgent or critical, and how quickly their rate decays. What I haven't decided on yet is how long an in game hour will be. This will likely dictate the true update frequency of …
-
- 0 replies
- 1.4k views
-
-
Unity doesn't let you serialize Guids without a lot of headache. Odin Inspector makes this easier on serialized monobehaviors and serialized scriptable objects, but guess what? Did you guess? Yep! You can't use the monobehaviors in prefabs. And that's what I'll need them for 99% of the time. So I had to get sneaky, smart, devilish even. Ended up finding a wrapper for Guids and doing some seriously heavy edits on it. The original was fine but it could be finer. I've now got it so the "serialized" part that we see in editor doesn't actually get built at compile time (since it won't matter anymore). I'll test it out on a build this weekend but I'm optimistic. Every…
-
- 0 replies
- 1.3k views
-
-
We've officially got a container of all the supported needs in the game. These come with a decay rate, and urgency cutoffs. Even cats made before this work was introduced will work with it, which is a design scheme I'm planning to keep carrying forward. This should mean as we move into alphas and betas we might not need to clear data unless we want to. Tomorrow we'll start work on having the cat searching out their needs. I'll make a "bed cube", we'll have them try to eat, and then I may try to have a cat meet up with another cat to talk. But we don't have emotes yet for that last bit, so I suppose it'll be in a debug log once they reach one another.
-
- 0 replies
- 1.3k views
-
-
Some days are more productive than others. For tonight we didn't get a whole lot done. The action bar slots are now hooked up to the player's save data. This will mean that your action bar status will persist between sessions. Or at least, it will once I hook up the state actions to initialize the action bar. This will be pretty straight forward, I need to implement the initializable interface, then add our action bar to the initialize state action. That will trigger after the load event and BOOM action bar is populated. Won't be doing that tonight though, too tired. Long work week, lots of challenges. But hopefully the coming weeks will be much more quiet. I'll ac…
-
- 0 replies
- 1.3k views
-
-
So today I noticed I've got a mistake in the logic for assigning IDs to assets. So my question is how much time should I put into fixing it now? Would it make more sense to just move onto other work and simply make a note that I need to fix this? That's kind of a hard question for me to answer. I'm sure it'll just annoy me until I do solve it. Perhaps just in terms of mental health it might be best to handle it now. If not, perhaps I should start a section for this game that is known bugs. Then as we solve them we can update the bugs as fixed. That could be fun for tracking how many things are good (or bad). And it allows me to have the fun part of bug fixing witho…
-
- 1 reply
- 1.2k views
-
-
Working through the catalog system now. One of the first we need is for prebuilt kitties. These will be our friends like Moose and Bean. Because obviously they'll have a specific look. But other custom kitties will exist beyond this. I'll need to have the collection store both the cats themselves and some ID Artifacts for easily finding them in other work. This will require a bit of thought on my part, maybe I'll write something up tomorrow. For now you can find them via the unique IDs assigned to them, but that might not be entirely sufficient. I may also add in a getter lookup by string, or something else identifiable. If we do go the artifact route we can just inc…
-
- 0 replies
- 1k views
-
-
Alright, I didn't expect to do a bunch of coding today. But sometimes you get inspired and the changes just kind of flow in a beautiful way. I've now got three unique concepts for data storage. The keyed database, this acts like a very fancy serializable dictionary. The keyless database, this acts like a very fancy list with all the bells and whistles. Finally there is the catalog which acts like a read-only combination of the prior two sentences. I was able to remove between 1 and 2 hundred lines of code today. Without actually limiting myself in any appreciable way. As far as refactoring goes, this felt exceptionally productive. But now, my eyes are heavy and I wan…
-
- 1 reply
- 1k views
-
-
I had been mulling all the different ways that we could validate if the actor receiving an event response is the one that should be responding. But seeing as our act calls are unique per actor I can just do a simple equivalency check. if (data != Accessor.ReturnComponent<HandlerMoosecat>()) { return; } It is literally this easy. At the start of my act function I just compare the incoming data to the same data that is on this state machine. If they match its the same object that made the call, if not it is just another live actor that matches the type. You might think "Will this scale?" and the answer is basically yes. We'll have a finite number of actors,…
-
- 1 reply
- 1k views
-
-
Today, our little Bean, of Moose and Bean fame, has a limp. Not sure what she did but clearly her body didn't appreciate it. I know it might sound a little silly but it completely threw out the window any chance of me concentrating at least for today. Hopefully by tomorrow with a bit of rest she'll be back to normal or at least less pronounced in her pain. We've scheduled a vet appointment. I still plan to do dialogue work in the morning tomorrow but I'll be keeping a close eye on our little kiddo. They are both too sweet to be dealing with injuries.
-
- 0 replies
- 1k views
-
-
I'm almost finished with the first draft of the world item database. This will be our lookup table for all the items that are in the world for our kitties to path out to. We could find this data each time a cat is curious, updating it constantly, and generally just making a lot of garbage. Or we could track it through a table like this and have a fairly consistent memory footprint. I do have a bug with my component return feature. I'll need to look into that and see what I'm forgetting, it'll likely be obvious and silly but for now I'm not entirely sure. Otherwise I don't have much to add! I don't have any gifs for you at the moment but the cats are able to navigat…
-
- 0 replies
- 988 views
-
-
It is a bit of a cliche with my updates but I am, shocker, very tired. So what I'm about to write not even be very coherent. Today I did manage to create the speech game action, and a very basic sign made out of a thin cube and a cylinder. When you interact with the sign it triggers the speech action which then prints to the console log. The next step is adding in a handler for this object that is raised by the game action. This would contain the text and other details pertaining to this actor, and all others like it in the future. Once I have that done I'll have the interaction medium and the data storage and recovery system. What I am also working on is the po…
-
- 0 replies
- 987 views
-
-
So off and on for a few weeks I've been toying with having a unique identifying value for each object in the scene. A big part of this is just being able to guarantee uniqueness and to keep the data that guarantees that information as small as possible. I tried a number of things, some involving pretty complicated editor scripting, and ultimately in the end I felt like the effort wasn't really paying off. I was making something that would not be fun to maintain and might be hiding secret evils in my future. I decided today that I would instead have a catalog (well Artifact) that tracks every item in the world. I specify item here, because we don't really car…
-
- 0 replies
- 971 views
-
-
Tonight we didn't see any updates but for good reason. Work today encompassed basically the entire day until it was sleepy time. This happens sometimes, that's just how life goes from time to time. The next step of our work, I believe, will be starting on dialogue. It does feel like we've officially hit that point. This will either be fun or frustrating, either way I'm looking forward to it.
-
- 0 replies
- 969 views
-
-
I love watching the systems fleshing out in the game. We have issues, certainly, but over time, more and more of it is coming together. We still have an issue with needs for the cats but this comes from the new artifacts generated to store our data. The ease that you can access any component on any object has really pleased me. I do have a bug involving polymorphism which I think I mentioned, I haven't solved that yet, for now on those RARE cases I'm going to just use getcomponent for now. Once I have time I'll look into it more, find a smarter way to hand the key side of the key object dictionary. And as I'm saying this to you I'm realizing... We could alwa…
-
- 1 reply
- 949 views
-
-
I've got support added for very fun and animated conversation text. So this weekend my goal will simply be to add a sign into the game that has some message. Once we've done that, which I think will be an overhead box above the sign, we'll start thinking about text boxes with cutins for people. I think that's something I want to do and the next part of this whole party. Should be a fun weekend!
-
- 0 replies
- 944 views
-
-
Over the next few days I presume I won't be getting a lot done. We are preparing to see the eclipse and that means I'll be away from my standard hardware. However that doesn't mean we won't be able to do a little bit of theorycrafting as we lead into the next steps. For now I know what I need to do is get the hooks in for our Moosecats sending themselves on Adventures. We know that we can do it through UI (or direct function calls) but we haven't discussed is how to handle it happening automagically. Can the same adventure be running with multiple instances at the same time? I mean...do multiple people go on vacation to Hawaii at the same time? Probably. Also, a ra…
-
- 0 replies
- 908 views
-
-
So I've found a flaw in our adventure design but believe I've already got the solution. Much like our adventures should use modules to determine "what" they do when you finish them. We should also use a modular system for determining "who" they are as well. The plan then is as follows. Our Datum Adventure, so called because its a single unit of Adventure Data, will contain an Artifact of a Container Datum Adventure Info. This one gets the name from being a container of a single unit of Adventure Info. We name our assets like this so that you know what they are, generally, just by reading the name. The reason Info doesn't come before Adventure in this example is tha…
-
- 1 reply
- 872 views
-
-
Alright, we've shifted away from needing response objects. I believe this will be fine. One thing I need to sort is having our kitties enable and disable their listeners as their states change. This will help reduce the number of objects listening for certain event calls. I can't imagine this will have a HUGE impact but its one less variable when testing out new systems. That'll come tomorrow. But for now? I need to go get some sleep, it is mighty late.
-
- 0 replies
- 860 views
-
-
Alright! First we've got good news, N number of cats is now working with the state machine. My individual cats all have their own behaviors and are walking around, eating, sleeping , etc, on their own time and personal needs. This is HUGE! I'm very happy with this and it will be a good stopping point for the night for me. A very, very large commit to be pushing. I've moved away from custom plugins for Guids and Dictionaries, I've just spun up my own solutions and they work without issues. This will also help reduce variables going forward in case anything breaks. Also for those of you playing the home game, I realize now my mistake on ID management for assets in th…
-
- 0 replies
- 860 views
-
-
Today was quite an experience. Truly something that I was never expecting to see. And I'm happy to report I did not blind myself. Also last night when I should have been sleeping I had a revelation about naming conventions for collections of data. We'll use DataBase to represent any collection of data that can be modified at runtime and Catalog for any collection of data that is read only. I'll adjust my classes when I get back home tomorrow to meet this. The nice thing is that will also mean that I can tell which is which much easier, right now they are kind of interchangeable and I think that's not good for my own mental capacity. Anywho, have a great night!
-
- 0 replies
- 857 views
-