NB's Devlog #01


NB's Devlog #01

Hey.

I decided to start a devlog about the development of my game. I hope to create some exciting content, but I mostly do it because I want a place where I can share and show stuff without restrictions that you can have on websites like Twitter. I have wanted to do it for a while now but never took the time.

Anyway, here it is!

What is this game?

Even though this is the first time I post about the game, I have been working on it (on and off) for more than a year at this point. It started as a prototype / POC for my network library, nbnet. The idea was to create an online 2d top-down Battle Royale game running in a web browser; I would develop it in C with raylib and nbnet and compile it for the web with emscripten.

The project has changed a bit since its beginnings. It's not only a nbnet showcase project anymore, it's a real game that I intend to release. It's also not a Battle Royale anymore, it's just a 2d top-down shooter. I want to introduce different game modes, maybe even Battle Royale in the future, I just felt like it was too much to start with, so I reduced the scope and focused on stability and simple core mechanics. A few months later, I believe it was a good choice.

What stage is the game in?

The game is currently in "closed" alpha, it's not released yet; I only run a few playtest sessions from time to time with people that joined the game's discord server. I have been focused mostly on stability with a limited amount of features. For now, the game has two classic game modes (deathmatch and gungame) and some basic weapons and game mechanics. The game is currently limited to 8 players per server, but I intend to increase it to 16 in the future (baby steps).

What's next?

I'm working toward a public alpha release with a few servers available for both game modes that can support 10-12 concurrent players. I would also really love to introduce a team-based game mode.

Can I play?

Yes, join the discord server and be notified of the next playtest sessions.

What have you been working on lately?

A lot of stuff, actually... but I'll pick a few of the things that I believe are worth mentioning.

Chat & Command system

The chat is just, well, a regular chat... It allows players to communicate and be mean to each other (obviously...). One interesting thing though is that the chat can be used as a command prompt. I felt like I needed a way to run commands to help me test the game, you know, things like getting a certain weapon, a ton of grenades, teleport, etc. I also implemented moderation commands like kicking (for especially mean players). The chat UI is implemented with raygui, probably not the best UI library for games, but it's simple, the API is lovely, and it works for me.

Game configuration file

All game configuration is in a config file loaded when the server starts and shared with clients when they connect; this is something I should have done a lot earlier, maybe even right from the start. For a long time, I used hardcoded values for almost everything, and it became a pain to tweak stuff. I always had to quit the game, recompile and rerun it. A file is a lot more flexible; no need to recompile, changes made in the file can be reloaded while the game is running, and it makes tweaking gameplay a lot easier and a lot faster. In the future, I even want to use the command system to change configuration values within the game, but I'm not there yet.

Here is what the configuration file looks like at the moment:

min_player_count=1
max_player_count=8
map=1
mode=dm
# General gameplay
# Respawn
game.respawn.enabled=true
game.respawn.time=5
game.respawn.invincibility_time=3
# Player
game.player.base_speed=4
# Bonuses
game.bonus_respawn_time=20
# DM game mode
game.mode.dm.weapon_time=30
game.mode.dm.kills_to_win=1

Extremely simple. No format like JSON or YAML. With this format, I don't have to deal with nesting; to change a value, you only need to know about the key; it makes working with configuration a lot easier, I believe. Also, I use special formatting for the keys so I don't get confused; for instance, anything related to gameplay starts with game., player stuff starts with game.player, and so on.

Weapon spray

Up until now, all weapons would shoot in a straight line. I recently introduced bullet deviation when spraying weapons. I want to create more weapon diversity and strategy as you cannot just spray your gun until you run out of bullets. Each gun will have more or less bullet deviation. Closed range SMG weapons will have almost no bullet deviation but won't deal much damage and have shorter ranges. On the other hand, powerful long-range rifles will have strong bullet deviation but deal a lot of damage at greater ranges.

Here is a video showcasing the difference in bullet deviation between the P90 and the Uzi. The P90 has a longer range and a higher magazine capacity but has a relatively strong bullet deviation. The Uzi has almost no bullet deviation, shoots faster, and is short-ranged, making it a very good close combat gun.


That's pretty much it for this first devlog entry. See you for the next one, take care.

Nathan.

Leave a comment

Log in with itch.io to leave a comment.