Making a Game in Unity 002: Basic Player Movement

Just so you know, this is not a tutorial series! I am writing this series mainly to give you a behind the scenes look at the process of making a game in Unity, and to document the development of this project.

See other posts in this series.


Making a game in Unity 002

Between my parents needing to use my computer and the current semester at school coming to an end, I haven’t had all too much time to work on the project these last two weeks.

Despite all that, I did manage to make a decent amount of progress.

After reading through the progress section of this post just before publishing it, I did realize that I didn’t include as much detail as I would have liked. So over the next two weeks as I’m writing the daily entries for part three of this series, I’ll try to provide explanations that are a little more engaging!

Monday

Today was the first day back at school, and when I came home, I found out that my parents’ computer had broken down. Fortunately after several attempts and a few variously colored screens of death (even in recovery mode), we were able to grab some of the more important files.

Sadly, this left me with little time to work on the project. I did however manage to get some admin stuff done on both the blog and my Discord server.

Tuesday

Today was another day of mostly admin work and doing various odd jobs, as my parents had to use my computer for some business work. This may continue for the next week or so, but I’m hoping to make some solid progress on the game tomorrow.

Wednesday

This afternoon I modified some of the server code for handling data. Then I did some research on game loops and tick systems, and proceeded to implement one. That means the groundwork for server-side physics and other goodies has been laid.

I also added support for console commands. Currently this only includes the stop command which shuts down the server, but I will continue to add more as the project evolves.

Additionally, I made some modifications to the way the server runs as a whole (it now uses multiple threads). Unfortunately, this caused some problems in my Logger class so I’ll have to fix those tomorrow.

Thursday

After trying several different approaches to fixing my Logger’s formatting issues when running multiple threads, I was successful. The solution I ended up with was so much simpler than what I’d been attempting before—that’s often how it is.

Console with command support, properly formatted
Console with command support. Everything is colored correctly, even when using multiple threads.

More than once I’ve solved problems in ways that are so simple I hadn’t even considered them before.

This evening, I took some time to answer questions on Discord, and to comment all my networking code. Commenting your code is vital, especially when working on projects that will grow extremely large. It’s also great for learning—as I went through and explained everything in my own words, my understanding of networking improved.

Friday

Today was quite busy, so I didn’t really get much work done on the project. I did however give Kevin a hand with some website work. I guess that’s sort of my way of saying thank you for all the videos he has put out about networking.

Saturday

Today, I found out that my AdSense application was accepted! This means I can finally put a couple ads around the website to help earn some side income.

This morning I spent a little more time working on Kevin’s site. The backend stuff is done now, so all that’s really left is to add some content, but I think I’ll leave that up to Kevin.

Afterwards, I spent quite a bit of time modifying my own page. You may have already noticed that there are two sidebars now, and the widgets stay visible even when scrolling down a page.

Sunday

This morning I spent some time trying to get Google Analytics working for the site (it was sort of working but not really) and I did some other behind the scenes stuff.

I then spent a good chunk of the day writing today’s blog post about if you need a computer science degree to become a developer.

I also had some homework which I didn’t even get to, so unfortunately I haven’t worked on the project much. Hopefully this week will get better, but exams are coming up now so I can’t really promise anything.

Monday

Today was a busy day. There was a whole bunch of homework I had to do and various other things going on, meaning I had little time to make progress.

Tuesday

I managed to make some solid progress today. I’ve started working on basic player movement, but it’s quite slow and a lot of stuff behind the scenes. This means that unfortunately there isn’t really anything to screenshot and share with you.

Wednesday

I once again had no time to make much progress, but tomorrow I’ll start working on collisions and rotational player movement

Thursday

Today I kept working on player movement. In order to make a server-side collision system, I essentially need an instance of the game world on the server. This means I’m pretty much building a (simplistic) game engine, minus the graphics.

Wrapping my head around calculating rotations in 3D space is proving to be a challenge, which I’ll have to keep working on on the weekend since tomorrow will be another day without progress.

Friday

Despite the fact that I had little time to work on the server today, I managed to make a some progress with rotations. Objects can now move on angles, but they don’t visually rotate yet.

Saturday

Today I managed to get a decent amount of stuff done. Players can now rotate and move on angles using the A and D keys (controls are temporary), all of which works over the network. However, I haven’t figured out how to make their colliders rotate yet, so collisions are currently a little inaccurate.

Sunday

I kept working on collider rotation, and it turns out it’s a whole lot more complex than I thought. I found this explanation about rotating points in 3D space on Stack Exchange. Cos and sin functions take quite long to process so I’m really hoping I can find away to achieve this without the use of a collision matrix as described in that answer. Unfortunately, I’m not even sure if that’s possible.

See other posts in this series.