Devblog 1.3: Monkey Fight - Animations, Map, Movement & Vision


Last time I said I would get to testing different ways of handling bullets. I haven't quite gotten around to doing that but I have quite a lot else to share.

Firstly, I made a set of animations for the first weapon, the Bistol (Banana pistol, obviously), and another (identical for now) set for the DBS (Double Banana Split - I figured the Bistol model looked a lot more suited for a shotgun so I gave it two barrels - I'll remodel the Bistol later to make it unique).
The original Bistol.
The Double Banana Split, derived from the original Bistol.
For the firing animation, I added a muzzle flash particle effect, which is surprisingly easy to accomplish in unity. I followed this video if you're interested. Since it's a first-person shooter, I also had to separate animations into first-person (which would be viewed by the client through the first-person camera) and third person (which would be used for all the non-client players). 

The first-person idle animation for the DBS.
Secondly, I am most excited to show the first map for Monkey Fight, codenamed Courtyard:
I kind of want to name the maps in traditional valve fashion... mf_courtyard.
Courtyard is, of course, designed and built entirely by yours truly. Unity has a handy package called ProBuilder which lets you create and edit objects in a manner suspiciously similar to blender; you can create a block of a certain size, manipulate its faces, create edge loops, fuse objects, mirror them, etc... It's really a fantastic tool, especially combined with ProGrids (if you can't find that one in the package manager, try checking "show preview packages" under advanced) which snaps all of your objects, movements, scalings, etc. onto a grid of a size you choose. I kept my grid along negative powers of two to keep things simple. 

ProBuilder's mirroring tool is super handy as well - I only had to create one quarter of the map, and mirrored it three times. Also, you can color faces by selecting them and dragging a material over them.

The original design for Courtyard.
In terms of design, I had a vague frame planned out for what this map would be: a set of walls, a moat through which you could access the basement of the castle (drawn in blue in that design), the first floor of the castle which could be accessed from front and back through the courtyard (drawn in black, along with the village walls & towers), the second floor of the castle which could be accessed from bridges to the four cardinal towers (drawn in red) and the top floor of the castle which could be accessed from bridges to the four diagonal towers (drawn in green). A lovely little symmetrical  map, isn't it? 

Though I kept the main skeleton, I changed a few smaller things from my original idea. The top floor, as you saw, was originally going to be accessible by bridges to the four diagonal towers, but I scrapped the bridges in favour of a rope / tassel thing with flags hanging from it. You can still walk on it, of course, but it's more precarious, which I like. The biggest change was that, originally, the castle was going to just be a boring old gray medieval castle. However, once I finished it, I couldn't help but feel that it lacked a pyramidal roof. I decided to add one, and recalled those cool ancient chinese castles and ripped the color scheme from one of those. In the end, I think  because of the flagpole at the top and the parapets I left on the roof, it ended up looking... Russian? Mongolian? Either way, I don't think it could have turned out any better.

The map itself took about a full day (maybe 10, 12 hrs of work) to create. I also added ladders so you could climb up the towers; I thought those would be very finicky, but they ended up being super easy to implement and feel really fluid. There are also a few locations in the map that necessitate crouching, so I added crouching, which was a bit more of a challenge. I added crouching and crouch-walking animations, and made sure that, when you let go of the crouch button, it makes sure there's no wall directly above you that you'll get stuck in when you uncrouch (spherecast above the player's head).

As for what I'll work on next, I've just added a subclass of scriptableobject to define weapons, and will be experimenting with different methods of implementing bullets. Right now, I'm thinking a combination of raycasting up to a certain distance, and if the rays don't hit, physical bullets. Handled clientside, of course, can't let the fluidity of the game suffer.

I never had a very clear vision for Monkey Fight originally, but it's all starting to come together now. I'm envisioning a Quake-esque fast-paced shooter (I changed the sprint speed to the normal speed and the normal speed to the crouch speed, so yer really fast) except with monkeys. Also, here's an idea for a gamemode: special, multicolored bananas fall around the map, randomly at time intervals, and when you pick them  up they give you a flat stat bonus or what have you. The first player to collect all ten or however many of them wins, but the kicker is that when you die, all the stat-bananas you've accumulated go flying in all directions, and the respawn timer gets longer as the game goes on. Sounds cool, huh? I'll get to work.









Comments