I didn't really get a lot done today. I mean, I got stuff done. But as far as work on this yet unnamed project, not a lot.
I added some functionality for single player. Mostly just movement and jumping. But, it's a start. I'll have similar NPC pathfinding and AI for both singleplayer and multiplayer, but singleplayer AI will be handled client side. Obviously. Multiplayer AI will need to be handled server side so that we can sync positions and decisions between various NPC entities and propogate that information to client players. I did end up starting to build a new world. The plan is to have a few different levels to play in. And all levels with be both multiplayer and singleplayer capable. The world is build locally for right now, but it will be easy to move it to the server for multiplayer. All I'll have to do is copy the files to the server build package. Easy.
That's really pretty much it. Short and sweet, but building new levels takes FOREVER.
I've added some screenshots below to show what I've done so far. It's basically just a enclosed subdivision. I plan on extending the viewable objects, but the fenced in area will be the entire playable area. Instead of a fence running through the road, which makes no logical sense in the first place.  I plan to have a more natural looking boundary. I don't want to have an invisible wall because that can break immersion, but will probably put something that makes sense, like a car accident that blocks to road or a downed tree. Wall TBD.
I also added the ability to use a console controller to move the player. In player controlling, you have two separate Vector2 variables to control player movement. There is the physical movement vector that controls walking forward and backward, and strafing. Then there is the Look vector that controls what the player is looking at. I'm having some trouble with the looking function with console controllers, but there are 600,000,000 YouTube videos, articles, and forum posts about how to do stuff like that, so I'm sure it won't be difficult to figure out. But then I need to add that functionality to the server side, which might be a little more difficult...
Also, I'm realizing that blogging everyday is exhausting... It takes minimum 30 minutes just to type up this text for the post. Then I have to add various html tags for bold, italic and linebreaks because I haven't built/chosen a CMS yet and everything is hardcoded instead of being managed. And also I have to create the link to the page and make sure everything looks good.
All told, it probably takes at least an hour to create these blog posts. So I'll probably only do them every other day. At most.
If by some miracle you're not one of the people who I force to read these posts for feedback, I'll eventually create a mailing list for newsletters so you can be notified about new posts, updates and future news. But since only about 5 people know this website exists, that seems doubtful.
- Mostly just try to get more sleep lol. Building a game and building a website/learning to buid a website/creating these posts is exhausting and eats up 114% of my time
- Create several more models for level and flesh out the first main level more
- Add client side NPC AI for singleplayer and then figure out how to handle that server side
- I'll probably just take the position and rotation of NPCs on the server and send UDP data to clients so they can update position and rotation
- More/better console controller input functionality. It probably won't be hard, but when starting projects, I always have a million ideas and always try to get them all started at once so I don't forget them but that just leads to me having 300,000 half finished ideas...
This is a shitty model I made of a shed in a yard. It took me about 30 minutes, but I wanted to try to find the scale that I needed for structures and a tool shed is way more simple than an entire house. The green lines are collider boundaries. They are invisible (in the actual playable version of the game) objects that keep other game objects from entering certain areas, or can act as zones that can trigger events or blocks of code.