Saw now I’m back with actually getting building on this. If you missed what I’m working on, take a look at the previous post here.
Familiarized yourself with the idea? Okay, good, let’s get started.
The first thing I want to do is build a small scale prototype. I’m working with a TON of different features, so I’m going to need to start with something very basic, and then add on pieces bit by bit. My first goal is to make a small farm, with a single inhabitant, and have him go about a routine based on time of day.
Meet Arglebar. He is a farmer. His main routine is tending his field. He eats in the morning, has a light snack at midday, and eats again at the end of his day, then enjoys sitting in front of his fireplace and going to sleep.
The first part of my plan is a little looney, and actually breaks one of my cardinal rules of RPG Maker, I’m going to treat Events like NPCs. Now, I’m not going to try to have each of them handle their own stuff internally, that would get a bit crammed and that many processes running would probably lag something awful. Instead, I’m going to run his routine all using a common event. But, this one single event will be Arglebar in the world, and there is no other Arglebar event.
There are many advantages of this. Because he is a single event that is always moving from place to place, I don’t have to worry about duplicate events. It also lets me store information about the character in self switches (and self-variables as well, which I will eventually add with scripts).
I know what you are asking “but how is Arglebar going to go inside his house”. And that is a good question! The answer is in thinking outside the box. The entire playable area of the town will be one map, things will just be spaced so you can’t see more than one “map” at a time. I can use other maps for places that the villagers will never go, but this keeps things much simpler for me to run routines.
But I know what you are thinking: Wait, won’t that mess up because they use different tilesets!?
I’m glad you asked that! There are two ways I can fix this.
- Cut together the two tilesets using only what I’m using on interior and exteriors. This wouldn’t be too hard, only the TileA stuff would have to be copied, since both the exterior and interior tilesets have only 2 B-E sets, so I could fit both of those.
- Just have the game change tilesets when you go through the transfer event.
I’m going to just go with #2 for now, though I may switch to doing #1 later. There are several advantages for doing #1 (passabilities won’t change, which may matter for events acting in their homes, but more on that later), but for a quick throwtogether prototype, I’m going to go with the faster solution, which is #2. The event should look like this:
There is another great advantage of doing it all on one map. I can keep everyone’s routines constantly running, without worrying that it will mess up when the player is away. This is something you couldn’t do on a grand scale, but for a single village, I should be able to get it to work out.
For right now, I’m just using the Mountain Village House Exterior and Interior sample maps kludged together for my maps. Sample maps are GREAT for prototyping. They save a lot of time over making a custom map just to test something out.
With that out of the way. I’ll move over to some other planning steps. For this to work, I’m going to need some kind of timekeeping system. Its going to need to be extensible to further planning, as right now, I’m only working on something small, but I need to be able to add weeks/months/years etc.
After going through a lot of options, I finally settled on a script by Solistra called SES Dynamic Time. The reasons for this decision are pretty obvious when you read the description. It lets me create my own timeline, pace everything the way I want, and have many different combinations of time periods. Its also made by someone I know, and can therefore trust to not be an idiot who has slapped stuff together.
For moving around Arglebar, because this is a much simpler setup than my full implementation, I could probably just use normal move routes. But I know it won’t cut it once we get into more dynamic ideas. With that in mind, I’m going to go ahead and try to use a pathfinding script instead.
What is a pathfinding script? Basically, instead of telling the event every single move up, move left, move down, move right, you can tell it an end location, and it will find its way there on its own. This will be great for later on, when I’m having a person have a dynamic routine, where he could go to one location from many different locations. Implementing this script earlier will mean less fiddling with it on the grand scale.
The Pathfinding script I have chosen is one by Jet and edited by Venima. Once again chosen because I know the creator isn’t an idiot, and it does what I want.
Now to develop a routine. I’m going to use a time scale of about 60 to 1 for initial testing. This will mean that for each minute that passes in real time, one hour will pass in game time. 24 minutes will give us a full day.
Arglebar’s routine in the first prototype for each day will be this:
- 6am: Wake up and fix and eat a breakfast
- 7am: Go to the field and work
- 12pm: Sit on his stool near his campfire and eat a light lunch
- 12:30pm: Go to the field and work
- 7pm: Come home, fix and eat a dinner
- 8pm: Sit in front of fireplace and rest
- 10pm: Go to bed
He will repeat this day infinitely. What a boring life! Fortunately, this is just the beginning, and he will have much more to look forward to in the future. Now that I have things planned out, next time, I’ll actually get into the guts of my prototyping. Any questions so far? Have any thoughts on how things are proceeding? Or want to tell me how I’m doing it all wrong? State your case in the comments section below, or you can also join in on the discussions on our forums here.
As for materials: I didn’t really add much this week, as I didn’t write down any notes that didn’t make it directly into the article, and I didn’t do enough work in the editor to really show anything. Not enough to upload. You can check out the scripts I’m using and try to familiarize yourself with them, though. Or maybe search and see what other options I had that I turned down.