Day 4. Or 5? The days mostly blend together these days. Not just because I spend 5+ hours per day on this project, but also because my life is a whirlwind of dark thoughts
and never-ending turmoil...
But! I added the ability to damage other players! There is no visual, auditory, tactile, olfactory, or gustatory feedback. However, it is possible to kill another player. At which point, they will wait 5 seconds before respawning and dropping back into the game. I also managed to get more RAM for the server. It turns out 4GB of RAM is not enough to run a FPS game server. I got two 4GB sticks of RAM for a total of 8GB.
It's still not a lot for an actual production server, I'll need about double that, but it works fine for a testing server. It allows me to at least run the server code and 2 instances of the game client without becoming unresponsive or insanely slow. I also managed to fix an error with the client instance instantiation. It was throwing a dictionary key error and not allowing the player to connect to the server. This usually happend when trying to run two instances of the game client at the same time. Although unconfirmed, I'm sure this error would have happened even if the game clients were run on separate computers.
It was being caused by a failure to increment the client instance ID count on the server side. So if the first user connected, and then a second user tried to connect, it was trying to use the same client ID as the first user, which was obviously already taken.
I did some tests to figure out how to add multiple different user input types such as Xbox controller, PS controller, etc. ( Shoutout to Brackys!). I still have a lot of testing to do with that as it's still very new to me, but I have a basic understanding of it now which is good enough for super early pre-alpha testing.
I also did several tests. Some related to this project, some just for shits and giggles.
I played around with emissive materials. These are simple game objects that have materials that allow them to emit light, thus acting as a light source. The issue with these is, in order to make them look good, they have to bake. Which means they are pre-rendered into the scene and do not reflect onto dynamic game objects (such as player characters. Or really any object that moves) It is possible to affect non-static objects, but it does not look nearly as good and is very CPU (or probably GPU?) intensive as it has to raycast several thousand rays every frame. I'm sure there's a better solution, but it is not a priority currently.
In the same lane as emissive materials and light baking, but not as detrimental to the physical shape and health of my computer, I did some tests with dynamic lights in an attempt to create strobe lights and moving "concert" lights. I was going for a dance party type scene. Everything worked pretty well, but I don't know if it's something I'll use in the near future.
I finally added a favicon! Check it out in the browser tab above. ^^
The little pictures you see in browser tabs are favicons. It's literally just the logo, but smaller. I think it just looks a little nicer and more professional. Even though the rest of this website looks like a heaping dumpster fire.
Tomorrow the plan is to fully implement controller input functionality for at least an Xbox controller. I'm going to try to make it generic so it will work with any current gen plug-and-play controller, but without other controllers to test with, it will probably be a crap shoot at best.
I'm also probably going to start organizing blog posts. Even with only two posts, it already looks like hell. But that probably says more about my website than my organizational skills.
And finally I plan on doing more tests and learning more about custom installers. Right now everything is pulling from the remote webpage server, but since space is limited, I'll probably have the files pulled a read-only FTP server. Since I completely own the FTP server, it will be easier to upload files and expand space as needed.
Short term future plans include:
- Figure out a way to use less resources on server and especially client side. I want the client side to be able to run on a potato clock...
- I want to add server side pathfind and net mesh mapping by the end of the week. Once that and the installer template are done, I will be able to start pre-alpha testing. It will be a super shitty version of the game, but at least it will have an objective!
Also, hover the cursor over the small blue numbers in brackets above for notes, comments, and terrible jokes.