Royale Battle: A silly Battle Royale game (with physics)

WittyAdrian GameDev DK30 Fall 2021 16 16

Description

As part of the gamejam, I want to make a silly battle royale game for this DK30. I’ve got a bunch of asset packs already picked out that will be well suited to create a nice environment and have some fun with physics. This will be fully singleplayer, since multiplayer is really out of scope for a small gamejam project like this. I’m going to be focusing on creating something silly and fun, with physics playing a big role in that.

Recent Updates

WittyAdrian 3 years ago

There is so much left on my backlog, so many ideas that never made it in, but I’m calling the game done for now. I’ve come to a point where adding new things onto it is starting to become quite a bit of work and usually causes all sorts of bugs to pop up. There might be some feedback I could incorporate into a future version, but the 1.0 version has been released and that makes this project completed!

As a fun little challenge, I tried making a little game trailer for the game, which you can find below this post along with the itch.io page where you can download the final version. If you do give it a try, please let me know what you think! I always love hearing from people and if you have any feedback for me, I’m all ears!

You can download the game at wittyadrian.itch.io/royale-battle.

WittyAdrian 3 years ago

Since last time I’ve just been hard at work polishing the game. The basics are working pretty well, so I can use this time to further refine and improve every aspect of it. I’ve picked some new fonts for the game, added a better victory/game over screen and put in a scoreboard you can view during the game.

All of these changes have just been building together to really improve the feel of the game, which is exactly what I was aiming for. I definitely won’t be able to get all of the ideas I had into the game, but it’s already starting to improve on a lot of fronts. I’m also hoping to get a bit more physics-y elements in, so I can adhere to the theme a bit better, but I’ll see where that ends up going. In any case I’ll have a complete game by the end of the DK30 and I’m already very happy about that.

If everything goes according to plan, I’ll have an itch.io link ready in the next update!

WittyAdrian 4 years ago

From the looks of it, not that much has changed since the last update. But under the hood, a lot of improvements have been made. The AI used to be a real performance hog, driving the FPS down repeatedly, but that has been dealt with. Besides that, I’ve also made some improvements to the bullet mechanics and added a bunch of small things like menu’s and a game over/victory state. This way the game can actually be won and lost!

I’ve also slowly started to add some more character to the game. Most notably with the addition of usernames and a kill feed. Every AI now has a username taken from the top 1000 users on Twitch in the Day9TV channel. This already makes it a lot more interesting to play, as you can see kills happening in real time. Sometimes you’ll even spot a certain AI go on a small killing spree.

With all these changes and updates, the game has finally reached that pivotal MVP status. While it’s not all that special and doesn’t really have the unique flavor that I wanted it to have, the game is playable and fun to run around in. Even though I had hoped to achieve this about a week earlier, I did it and I will at the very least have something functional to show off at the end of all this!

In the coming week I just want to polish the project, add more flavor and features and just expand the entire world. There are a bunch of things I still have in mind to add to this and I hope I get to implement a lot of those before the DK30 is over.

WittyAdrian 4 years ago

I ran into a bunch of issues getting the AI to do some more complex tasks, like detecting and shooting at enemies properly. Finally I had a breakthrough today which got me some basic functional behavior. Each AI is now properly detecting and responding to an enemy presence, reacting to gunshots and shooting back! They even have a built in accuracy modifier, so they don’t laser you down instantly.

As you can see from the video below though, it’s definitely not perfect yet. Sometimes they get stuck in their attack state and bullets don’t often register hits as they should. These are all things I’ll have to address before I can call my MVP finished, but I am getting much closer! I definitely think I can release the first prototype over the next couple of days with basic functionality working. Fingers crossed!!

WittyAdrian 4 years ago

Now that the AI is moving on its own and starting to explore the different spaces a bit better, I wanted to work on getting them to interact with the environment. This starts of course with looting. A key component in Battle Royale games is the concept of finding better equipment around the map, so the AI also needs to be able to do that too.

In order to achieve this I made the AI look around their current location periodically to see if they detected any loot. If so, they look at their current equipment and decide if it’s worth it to go for this piece of loot or not. Then they either move on, or start moving towards the loot in an attempt to pick it up. Once they get close enough, they can interact with it, pick it up and use it. In the case of health items, it can also be possible that they drop the item they’re currently carrying in favor of a better one.

This already makes the AI move around the different areas more logically and it’s fun to see them equip different items and behave in interesting ways. Next up I want them to be able to actually use the equipment and engage others in the area. Once this happens, we should finally start to see some actual gameplay emerge and this will hopefully form the basis for week 3 and 4. Then I can really start to have some fun with the game world I’ve created and introduce a whole bunch of random nonsense.

WittyAdrian 4 years ago

After the AI used to drop from the plane, they would just walk around a bit aimlessly, so that was the main thing I tried to tackle this time around. I created the first bit of a state machine and some basic AI to make them walk around the map in a semi intelligent manner. Each AI will now choose a zone to move towards and then navigate around inside of that zone as they see fit. They won’t pick up guns or do anything else, but this is a good start.

I also made sure to include a bunch of variables that can be tuned later on. Things like “when to start sprinting, relative to your target position” or “how quickly do you move on from a zone and go to the next one.” Currently those variables are just hardcoded to certain values, but in the future I can randomize them and create a bunch of AI’s that all act a little differently. This should make for some more interesting and diverse gameplay.

Next up I want the AI to actually start interacting with the gameworld. Picking up items, guns, looking around their vicinity and interacting with each other and the player. As soon as that start to work, I’ll be getting closer to the first playable prototype.

WittyAdrian 4 years ago

Since my AI can now finally navigate around the landscape, I’ve been working on getting the animations right. Luckily I can just re-use the same animator I made for my player. The only thing I have to do is make sure the animator is getting the same data fed from the AI script as it would be from the player. Luckily that turned out to be not too difficult.

Next up was getting the AI to actually drop from the plane instead of just spawning on the ground. That was a bit more tricky, since I wanted to create a bit of a variable/dynamic spawn pattern, where the AI would “choose” when to drop from the plane. Currently I have them looking at how close or far away from a zone they are and then drop in clusters. In the footage below you’ll see them always jump in groups and that’s fine for now. I might tweak it a bit later, but it’s a good base to start from.

So, now that I’ve got AI dropping into the world, with working animations it’s time to make them actually do functional stuff when on the ground. Right now they just start walking and running back and forth between two points, as I was testing out those animations. But I want them to be running towards areas, finding equipment, avoiding the zone, engaging in combat and much more!!

WittyAdrian 4 years ago

My work on the AI opponents hit a little roadblock. The navigation component that Unity uses to let my AI walk around really didn’t want to play ball with my world. Not only that, but anytime I wanted to try a different setting, it would take 30+ minutes to render out. This made tweaking and testing extremely tedious and was killing my motivation rapidly.

Luckily after some back and forth, groaning and moaning I finally realized what was causing the issue and was able to fix the bug. This resulted in the “amazing” AI you can see in the gif below. Might not look like much, but I’m very happy with it, because this is going to be the foundation for any future AI movement to come.

With this roadblock finally out of the way, I can keep going as planned. I should still be able to reach my goal of finishing a basic AI by the end of week 2, so that’s what I’m going to try and do. To be continued!

WittyAdrian 4 years ago

The last item on the MVP list before I tackle AI is to create the Zone. This will shrink and move around as the game goes on and create interesting moments of play and is traditional for any battle royale game. To make it look a bit interesting, I used some shader magic with a cool plugin for Unity. This creates a sort of alien looking, moving bubble that closes in around you and should be threatening enough to make the player move. Once you exit the zone, you start taking damage and your camera gets a little breathing vignette effect. I might add or tweak this later on, but for now it’ll do nicely.

So, next up is the AI. This is the one thing I’ve been pushing off so far and didn’t want to start, because of how daunting it is. I’ve already written down some technical things I need to get started with, which hopefully will help me ease into it. One way to find out though! Just get started!! So that’s what I’m going to do. My goal is to have basic AI moving about, shooting and murdering fellow AI and players before this week is done.

WittyAdrian 4 years ago

Any shooter game, no matter what the genre, can’t be completed without some sort of health system. So that’s what I’ve been working on next. I added a little health-bar in the top-left corner of the screen and created a bunch of food items that give you health. Each item has a different amount of health that it will give you and they all evaporate in a wonderful array of little bits and pieces after usage. Most of the zones have gotten some extra loot in the form of these food items scattered throughout them.

There’s only a handful of things left to do before I can call my first prototype playable. Of course there needs to be some sort of zone created by the island, so people are driven to its center. That’ll be what I work on next. The bigger item however, is to add AI opponents in, so you have somebody to actually fight with. My plan is to use week 2 to build and fine tune the AI, so I have about 2 weeks left to polish and add silly nonsense to the game.

WittyAdrian 4 years ago

After I got the script to spawn loot, I’ve been putting a bunch of loot in each of the zones. I plan on adding more variety in the terms of loot you can get, since it’s a bit sparse as of now. Of course, what good is loot if you’re not able to use it? So I also spent some time making sure you can pick up and use the guns and the medkit that’s part of the loot pool.

To make a battle royale game, I also need a plane, so now the game starts with you in a plane going across the map in a random direction. At any point you can choose to drop down and land somewhere on the map. I added a little landing animation to close it off and made sure you couldn’t move during that, so you actually feel like you’re landing on something.

Next up, I’m going to be introducing the zone which closes in around the players and maybe add something to obfuscate your vision a bit. One of the biggest things left to do on the MVP list is to add AI, but after that I should have my first playable prototype. I’m aiming to get this done by the end of next week. That should give me plenty of time to add fun details in and mess around with some polishing.

WittyAdrian 4 years ago

Today I worked on making sure the loot is randomized throughout the zones I’ve made in my previous update. I selected a few basic pickups that I want to be working with and made a generic script so they all can be interacted with. Then I made a loot manager script that makes sure only a portion of the item I place throughout the zone actually show up. That way the player is always searching for loot instead of knowing exactly where everything is.

In the gif below I’m running through the harbor area, looking for an item. This basic interaction already works quite nicely. Next up I’ll be going through all of the zones, placing a bunch of items everywhere so that all the zones have some sort of loot distribution. I’ll also be thinking about what loot makes more sense where, like the military base having more high tier guns and the hospital buildings having a lot of medpacks.

WittyAdrian 4 years ago

I’ve been hard at work during the past few days to create the map in which the game is going to take place. It definitely took a lot longer than I had expected, but I also made the map a lot larger than I was originally planning to do. I might change some things going forward, but this should suffice nicely as a base map to play in.

Below you can see a timelapse of my progress with the map. At first I started by blocking out the surrounding coastline (taking inspiration from another battle royale game’s map). Then I filled in the landmass and added some hills and valleys while I was at it. When the base island was complete, I started creating each location that I had planned in advance. Starting with the harbor in the bottom left, going all the way around and finishing with the city in the top left.

Each location is a completely different zone, which should help players navigate the island. Next up I’ll be looking at what I want to use for loot and how I’m going to be placing those items in the different zones.

WittyAdrian 4 years ago

Before starting on the level generation I’d like to have some basic animations down. At first I was going to make those on my own, but I came across this really nifty website called Mixamo which provides a ton of pre-built animations for free. So in the spirit of saving some time, I grabbed a bunch of animations and learned how to combine those with the characters from my asset pack.

For now I’ve got an idle animation, walking, running, jumping and falling. One of those might also not be entirely serious. I have a few animations waiting for when I’ve got guns in the game, but those will be used later. With these basic animations I can walk around without floating everywhere like I’m cosplaying as Harry Potter but forgot my broom.

WittyAdrian 4 years ago

After some more importing, I’ve got all the packages I want set up and working. I decided on which third person controller I want to use and have added it to a test scene along with some simple terrain. This allowed me to walk and jump around right out of the box.

The default controller uses its own character model though, and I want to be able to use my own models instead. So I plugged in another model, but that one is now stuck in a default pose that I haven’t been able to change or animate yet. So that’s my next challenge; make sure my model(s) are able to walk around without hovering a few centimeters above the ground in an awkward “going in for a hug” pose.

WittyAdrian 4 years ago

I’ve already started a few preparations so I don’t run into issues when the project starts. Things like making a new Unity project and importing some of the assets I plan to use. I’ve made a nice checklist for myself with all the setup stuff I have to do before week 1, so I’ll be working through that in the next few days.

I also want to brainstorm some more ideas, since my task boards are rather sparse at the moment. Although I imagine that between the assets I’m using and my usual creative binges, I’ll get enough wacky ideas during development.

As you can see from the list, I usually don’t work with the Universal Render Pipeline, but I want to try and learn that for this project. So I’ll also have to figure out what is different from the normal/old way of working. Hopefully that’ll all go smoothly!

Estimated Timeframe

Oct 18th - Nov 20th

Week 1 Goal

Work on creating a Minimum Viable Product

Week 2 Goal

(mostly) Finish the Minimum Viable Product

Week 3 Goal

Expand on the silly/physics flavor elements

Week 4 Goal

Polish the final result

Tags

  • witty
  • adrian
  • wittyadrian
  • gamejam
  • game
  • unity
  • battle
  • royale
  • gamedev