Tuesday, 2 January 2018

Defeating the Coding Demons!

Iteration v0.1

Iteration v0.12
Iteration v0.13

I've been working on creating a runtime Arena Editor within Unity over the past month, which allows players to place objects into a scene and edit their position, rotation and scale all at runtime, very much like the Unity editor itself. Above are 3 separate iterations of my progress.

The first was simply getting a camera to move around and the ability to place different placeholder objects. I also added in a simple 'Delete All' function that wipes the slate clean.

The second expanded upon this, and fixed a few starting inconsistencies, IE spawning objects with an offset so they aren't instantiated in the floor, and adding physic enabled objects, along with the ability to select each individual object for editing. This included changing the objects material and instantiating a axis gizmo to the selected objects transform location.

The third iteration I coded a few runtime object editor scripts that uses these gizmos to allow the player to freely move, rotate and scale the selected object freely by clicking the axis and moving the mouse. Its not perfect but there is still a fair amount to add to the editor as a whole, and many tweaks and additions to be made. This was just the process of getting basic functionality up and running.

I learnt alot, surprised by the complexity of something I think alot of developers take for granted is that little gizmo we use in lots of 3D editing programs/game engines.

Wednesday, 29 November 2017

MetalMania v0.4 Release, Evaluation and Whats Next?

MetalMania v0.4 is now available for download!


So the latest version of MetalMania is out, and I think I am finished with this project for now. I'll explain why below, but if you're not interested in reading all of that you can skip further down the post to find out whats next for me!

Is MetalMania the game I set out to create?

In truth, yes and no. I never set out to make a game initially, I wanted to see if I could replicate the behaviours of combat robots and their weapons because Robot Wars was returning to our screens and that made me remember the old series I loved as a child. This lead to me openign up Unity and getting started with everyone favourite white boxs!

These were the first two bots I ever programmed, using a standard Unity car controller to drive them around. The weapons were extremely simple scripts that either rotated the disc via its local axis or lerped the axe arm between two local positions. It was cool! the weapons performed more or less how you'd want them too, but with no real physics, they didn't FEEL quite right... More on on that later. So these bots are cool and all, but they're not exactly nice to look at. I wanted stuff to look like the old show, robots like my favourite Hypno-Disc and Firestorm instantly sprung to mind. I had no plans to actually really release these or even profit so I wanted to recreate some of my televised favourites.

These models were pretty good in my eyes to their real life counterparts (well, Hypno-Disc was a little chunkier, but I sorted that out later) and I had managed to model and create the textures for them all by myself. I was adamant about the project being as much of my own work as possible. I did this to improve upon my development skills and also claim bragging rights to owning everything produced in the game as my own work.

Expanding the Project.

Now I had something pretty to look at, I started expanding the 'games' features. What use are combat robots if you don't have an arena to fight them in!? Again, I drew from the original show for inspiration, I wanted a pit to dump robots into! Flamethrowers! Circular saws with flying showy sparks! Wow.... Thats alot of stuff to include... I decided that maybe having a functional pit that can detect a robot being pushed into it to be the best bet for now, as well as creating a few other basic box bots for future conversion into more replicas. Since I used a trigger volume to detect a robot in the pit, it was also easy to setup a flamepit that dealt damage over time to a simple health bar linked to a players robot.

The above arenas are of my test arena, that I used to program and test new mechanics in, as well as whenever I added a new bot. The arena included other robots to interact with, rigidbody cubes along with some floor spikes, the pit and flame pit to see how each robot and mechanic reacted with one another. I spent ALOT of time playing around in here with each bot to tweak it.

So now I had some functional systems I needed a proper shiny arena to make. I was rewatching Series 4 at the time and realised there had never been a video game interpretation of the Pinball Warrior tournament. The only existing game to come close was Extreme Destruction on Game Boy Advance, which featured some similar Trials.

This was a single player mode based very faithfully on its TV counterpart. You drive your robot around the arena and try and score as many points as possible in the time limit. At this point the only bots I had playable were Firestorm and Hypno-Disc. It lacked certain things such as a full background, full studio styled lights and house robots and certainly had its flaws, such as the dodgey weapon physics and collision issues, but I was proud of what I had whipped up and decided to share my creation with the newly formed up Robot Wars community.

Community Expansion and Learning.

Turns out the Robot Wars community was far from dead and I had a fair bit to catch up on. After the shows original run ended, robot combat entered the 'underground' once again and was popular in a variety of live events throughout the UK. There was also this fabled game I'd never heard of called Robot Arena 2 which was released back in 2003 but was still immensely popular today.

My post to the Robot Wars community on Reddit was met with a pretty positive reception! A few people gave some great feedback, praising the looks of the game and commenting on things like the controls could be improved. I'm a strong believer in developers communicating and interacting with their audience so I responded to nearly all the comments and answered any questions that were brought up, as well as making sure people understood on what the point of the project was, and how it was being made. They were very understanding and supportive! People seemed interested in seeing the game develop so I made a note of updating the community whenever there was a new build to try!

University Module Development - Dump Zone Game Mode.

A few months had passed and I was back studying in my final year at university, progress on the game in my free time had slowed considerably but I was granted a chance to work on MetalMania (then still untitled) for one of my university modules focused on building a portfolio of work for myself. Talk about killing two birds with one stone! A chance to work on a project I wanted to work on anyway, a chance to further my skills and spend more development time AND to have it all academically assessed at the end. Sold.

I decided that if the Pinball Warrior mode was going to aesthetically look like the 'golden age' of Robot Wars with the hazard stripes and red borders, then I wanted the next arena to be more faithful to the series before, akin to series 3 and before.

This arena also featured grinders on the side walls and what was to be the awesome arena flipper! This mode was another test of driving skill for single players, and they had to dump a variety of objects into the pit in the time limit while avoiding arena hazards and scoring points, being overzealous with your pushing and you might end up in the pit yourself! This was also the first use of Unity's joint system, which I had some fun playing around with making swinging door hinges on the fridge and microwave. I originally wanted the toaster to be an actual working toaster that would pop out toast upon collision, but it wasn't worth the development time as I now had to deliver a portion of the project on a deadline.

Sumo Basho and Why I Dropped It.

I actually planned and tried to make a Sumo Basho mode before Dump Zone, with my favourite house robot Shunt included!

I had the arena and game mode modelled and functional, the problem was creating playable Shunt AI. Now programming isn't my strong point, and I struggled to make a indepth AI that would follow the player 'fimrly but fairly' instead of relentless ramming into them which then in turn made it not fun, but also caused lots of collision issues, causing robots to clip and fly everywhere and it was very messy. I tried a variety of methods such as changing Shunts collision to just one big cube to make a flat surface for the pushing but to no avail. I decided to keep the game mode just in case I wanted to come back to it later and implement it, as I felt, like Pinball Warrior, fans would like to play a game mode from the show that had never been gamified before.

My second post to Reddit received even more attention, which granted me even more feedback! People now started suggesting what they'd like to see in the game, things like a Bot Builder to make their own creations and people still thinking I was trying to compete with Robot Arena 2 (Which I never set out to do but it was nice people were making comparisons). Once again I did my best to interact and answer all the questions people asked, including such things as copyright. Spurred by the feedback I carried on!

Gauntlet Game Mode and Weapon Rework

On my travels through the web and anything I may have missed out on, I came across a show called Robotica. Instead of competing robots against one another in combat and fights, Robotica competed robots against each other in task based challenges, to see which robot was the more versatile and supierior. Some of the robots on the show wouldn't even have weapons! A concept that would be entirely laughable in the Robot Wars or Battlebots arenas. I had wanted to do the old Robot Wars gauntlet run anyway, so making my own interpretation of Roboticas gauntlet run seemed like a great way to include something that wasn't Robot Wars inspired in the game.

It featured the seesaw from Pinball, as well as rigidbody objects players can crash into and through, speed humps to navigate over and some new visuals. A simple game mode yes but again, had never been gamified before.

There was also new robots to accompany this update, and I had spent alot of time completely reworking how weapons behaved and performed. After having the original script I whipped up that used lerps and no real physics start to get really to implement and hard to use, along with it causing all sorts of collision errors in game while it was being used, especially against other robots.

I attempted a revision of the weapon script that still used the lerp system with a more refined behaviour, and also activated some manual trigger physic volumes I had coded, but the result still caused the same issues and was still a pain to assign to each specific robot.

I used this script for a little bit before biting the bullet and removing it completely, remembering that the Unhity hinge joints I had put on Dump Zones objects were basically integrated physic components and behaved more or less how I wanted things to behave with my terrible manual coding. Surely they could be tweaked to behave exactly how I wanted them too?

Well they pretty much did! I transitioned my weapon system through to use these components, giving flippers virtual springs that would damper with different values, physically pushing the flippers through the virtual space and interact much more realistically with other robots and environments. Spinners use motors that spin up with variable velocity and stop when they hit something instead of continuously spinning. I really should look through what unity has to offer before I set out and try and make my own system first.

And thus, another update was posted to Reddit, garnering more feedback and more suggestions, much to my delight. By this point this project had far surpassed my original intentions of making some robots in Unity, and I was thrilled to have an audience willingly looking at what I was creating and giving me feedback.

The Final Build

MetalMania at this point was the longest I've ever stuck with and created a project, and it was starting to show. I did feel myself getting a little fatigued with it, noticing all the little things that bothered me, what could be better, comparing myself to other developers, other projects that I felt did things better. However one thing that people had been asking for since the start was the opportunity to battle the robots against one another and I was determined to at least deliver on that front!

After tweaking the manually triggered physic volumes weapons had to respond better to the new component behaviours (how flippers move and actually flip) I started designing an entirely new arena with entirely new hazards, this time inspired by the Battlebots arena! Cool hidden floor saws! Giant hammers! Corkscrews! New ways to get hurt! How exciting!

I also added in a few of my own hazards, a spinning platform in the middle of the arena that throws your robots driving off, as well as a drop zone that drops a random object on you to deal damage if you stay in it for too long. This was going to be a local 2 player mode, so all robots had to be configured for two players to be able to be controlled and deal damage to each other. This was pretty simple by adding Player 2's controls on the other end of the keyboard, allowing to players to share and play.

Again, another simple mode but was very high in demand. I know my physics are far from perfect, as this was my first time programming them, I've learnt alot I can use to keep improving the next time I use them!

MetalMania has been great to work on, has helped me improve immensely on my development skills and has even given me a small taste as to what having an audience for your game to be like. Its been a great experience and thank you to everyone that has followed me through it! So that leaves one question...

Whats Next?

I'm working with a few other indie developers to make Robot Rumble 2.0! It seems I'm not done with making a robot combat game, even though MetalMania has been 'finished'! We're a very small team, using Unity again and our aim is to get the game out on Steam with features like a robot building lab, controller support and more!

This project is pretty relaxed and we work on things catered to our strengths. I am doing alot of design, 3D modelling and programming because of this. I have designed 2 arenas in the game so far, as well as modelling parts for scenes and robots. On the programming side I am currently working on an Arena Editor to accompany the BotLab which is being worked on by another team member. I am also responsible for the games official Twitter account and public representation.

Visually I feel it looks better than MetalMania (As we are using 3rd party assets along with our own) and it plays better as well. The physics and bots are totally different to how I did mine and behave pretty accurately! We're taking alot of inspiration from Robot Arena 2 and really would love to compete with it.

This project is already picking up in popularity within the community over on GameTechMods and we even have a Twitter account that has pictures, news and social interaction with our audience.

Tuesday, 26 September 2017

MetalMania Continued Development

I really need to try and keep up writing blog posts for those who read them...

Greetings random internet surfer! It is I, AnarchyFox, and I have some juicy details to explain in this post. The reason for my delay in keeping up with these posts is that I am now employed fulltime, and can rarely squeeze in time to sit down and write up summaries for any MetalMania work I get done, but fear not, for I am still working pretty consistently on it! Those who frequent the Robot Wars subreddit can see the stuff I post there, or on my Twitter before I post anytthing here (because its way quicker to just upload a quick photo), will know that the 2 player mode is coming along well! The main arena is all finished, and I am in the middle of that fun little process of moving existing bots into the scene, while also converting them all into 2 player compatible bots AND making entirely brand new ones for the latest build.

Which moves me nicely onto the latest edition of our rooster! Krave Monster! Created by AltaPowderDog (aka Carter Hurd), Krave Monster is a antweight robot that competes in local bot brawls. A overview video of the robot alongside other awesome antweight combat robotic goodness can be found on Carter's Youtube channel!

Credit: AltaPowderDog

Of course, robots in MetalMania aren't protrayed as antweigtht, and also features pretty much all heavyweight bots, so in the recreation, he was scaled up to chomp on the likes of the competitors! While a few changes had to be made, such as having the cereal box being not an actual real cereal product, and incorporating some design choices from his second build of the Monster he remains and functions pretty much the same as his real life counterpart.

A big thanks to Carter for granting me permission to use his awesome design in the game, and assisting by sending me a photo with the dimensions!

I have a few other bots in the works, including a creation of mine own to add into the game, and I hear that Dave Lawrie is returning with a brand new robot, maybe Jellyfish could use some company...

But thats enough about robots! You want to see the 2 player arena! In all its hazardous glory!

Deadly armour carving saws? Check! Penetrating floor spikes? Check! Crushing hammers? Check! Slicing side wall corkscrewers? You know it! Even flat parts of this arena floor aren't safe with the Whirlygig to throw your driving off whack and a dead drop based hazard! You can't even get flipped out to escape!

Alongside this arena, I also want to rework the Sumo Basho arena into another local two player mode for this builds release, and if all goes according to plan, this might even be version 1.0! Which means making some sort of fancy trailer to flex my video editing muscles (which would also be the first trailer I've made for a game ever! Excitement!). See you soon!

Monday, 21 August 2017

MetalMania v0.3 Release!

Its finally here! The release for v0.3 is uploaded and available for public download over on my Itch.io page! If you're interested then I'd love for you to go check it out!

This release seemed to take a while to put out, but I think that was down to it happening at a very busy time for me. Also reworking the entirety of how weapons work for the 3rd time. This time they work like a charm for the most part, I promise. Since they no longer use Lerps to rotate or move, weapon objects will no longer force themselves into that lerping position, even if say a wall is in the way, causing them to clip through. Now they work through Unity's hinge joint and rigidbody system, meaning not only do they rotate realistically, they also stop upon hitting solid objects and can move things lighter than them, etc. Using these components also means I can create scripts that affect the values directly, making the disparity been spinner weapons and axe weapons much greater with different behaviours such as velocity of the gyroscopic effect and an axes firing force.

I have also made some changes to the appearance of the game, removing most things that directly reference Robot Wars as a branding, as of course, I do not own this and do not wish to invoke the wrath of the copyright holders! This is a fun fan game I am making to further my game development skills while also sharing what I've done with the community.

Now v0.3 is finally out and the weapons behave normally, I can focus on the next game mode, another 2 robots and whatever other quality of life or bug fixes need doing... Next up I want to implement a 2 player battle mode! Wish me luck....


Tuesday, 18 July 2017

Developer Update!

It sure has been a while since my last post, if anyone reading this with news regarding MetalMania, I am sorry to not have updated it sooner! Development is coming along nicely, even if it is a little slow, but that is mainly down to me trying to get a job!

The Gauntlet Arena is all finished and implemented into the game, so the next playable build should have it included. It also includes a few more physic based elements such as breakable glass, moving and rotating objects and different weighted objects which block the players path to the finish. The goal is to reach the end as soon as possible and choose the best robot for the job, as some robots would be more suited to this challenge and perform better than others.

In terms of improvement, I definitely feel like it could use some more colour, so I might rework the textures at a later date because for now I'd like to move onto the 2 player battle mode.

Speaking of moving onto other modes, I have also started on concepting out a basic bot builder feature in response to feedback I received about it being a desirable part of the game to be included. I didn't originally plan for this feature to be in the game to start with, so it may be a challenge to implement something that works with what I have already, but I welcome it! I'm not going to aim for something completely inclusive and complex, I feel like keeping with my aims on the rest of this project, aiming for a builder similar to Robot Wars games where it is more modular based with different options would be doable for my skill level.

My Concept/Graybox in Unity3D

Robot Wars: Extreme Destruction
I will finish up the Gauntlet first, maybe publishing a playable build with it included, and then move onto starting the 2 player battle mode!

Sunday, 21 May 2017

Moving Forward - Metalmania

Thats a wrap! My final semester at university has finished, and so has some of the projects I've created alongside it. I've learnt alot these past 3 years about what I've wanted to do for a long time.

Some of these projects (like MetalMania) I will be continuing in my spare time and they will see further development and I will try to complete them and have them released. Other projects like ARIA and D.va Dash I may touch on again. D.va Dash needs to be reworked either again in Construct 2, or Unity, spending more time on it and adding in more features for a more fleshed out game. One major advantage of having the game remade in Unity would be the ability to build it for Android.

Now that MetalMania is no longer an Educational based project, certain things have to be changed, or permission gained for use. Copyrighted material such as the Robot Wars brand can also not be used. Because of this, it is now my goal to reach out and contact the roboteers who own the robots themselves. So far this has been successful (when I receive a response) as previously shown with Jellyfish. Apollo, the 2016 Robot Wars champions have also granted their approval for me to keep Apollo in the game.

The next step of development will be to continue getting permission for the robots seen on the show. Due to robots that competed in the old run of the show being retired or dismantled by now, contact details for them will be hard to access. New robots however have things such as Facebook and Twitter pages, and there are a large amount of roboteers on Reddit too, making them much easier to contact. For older robots I cannot get permission to use, I plan to create similar robots that do not infringe negatively on anybody's property.

All copyrighted branding also will be removed and changed. I have lots of game mode ideas I wish to implement, as well as plenty more robots to add. Feedback has been positive and I am considering setting up a Patreon for my work, as I have had a few people ask me if I have one.

Friday, 14 April 2017

Wibble Wobble Jellyfish on a plate!

We're coming up to the 2017 Robot Wars series Grand Final in a few days and I recently saw one of this years competitors Dave Lawrie was retiring from the hobby due to being rejected for the next series. You can find the full post here, but long story short he is having to dismantle his robot 'Jellyfish' and distancing himself from the sport.

I felt for the guy, and decided that I wanted to immortalise Jellyfish of some sorts, so what better way than to model it? No CAD was used to make the actual Jellyfish so I thought he might appreciate a fan made digital recreation!

I sent Dave a few images of the renders and a small message that included a brief description of what I am doing with this project and was surprised to receive a response, and quite a flattering one at that!

He gave me permission to actually have Jellyfish officially in the game! Of course this meant I had to improve the model I spent a few hours producing, adding extra details and tweaking the scale of a few features such as the pipes.

Then it was a simple matter of implementing the bot into the game like any other robot I've made before. I had to make a brand new script for Jelly's weapon, which is an actuated grabber claw designed to pin and hold robots.

I'm going to film a few bits showing Jelly in action and send them to Dave, most likely updating this post when I do. Thanks for letting me have such an awesome interaction with a roboteer and giving me permission to create Jellyfish for the game Dave!

EDIT: Jellyfish in action!

Sunday, 26 March 2017

Dump Zone Demo Video!

So its taken a fair few weeks since I showed a video for the Pinball Warrior mode, but I finally have something to show for Dump Zone! I felt the mode was polished enough to show off with all the new things I've added which include:
  • New Robots! (Apollo, Behemoth)
  • Weapon Physics! (Flippers and Spinners etc)
  • New Arena! (Series 3 inspired)
  • New Mode! (Dump Zone)
  • Updated UI! (WIP, coming soon)
  • Multiple Cameras!
  • Updates to robot handling (Added in 'Tank Steering' functionality)
Adding in physics that felt, looked and handled correctly was a challenge for me as I've never programmed them before and will more than likely have to keep tweaking them as development continues. There are also a few inconsistencies with the flipper animations which I will revisit and fix at a later date, for now they are all functional which is what matters. I also want to add more audio! The only music and sound effects in the game are the background music and the sound effects of grinders, sirens, announcer etc. I'm going to try and implement noises for the bots themselves, for when their weapon is activated and more.

My next task is to re work the placeholder UI I had for the old build and make it so you can select what game mode and what robot you want to play as in a user friendly manner. This will include writing more code, as well as creating more visual UI elements.

Monday, 6 March 2017

Apollo 3D Model Step by Step Build

This post will be a step by step explanation of how I modelled the latest robot for my Robot Wars game, the 2016 champions, Apollo! Apollo ended up being the lowest poly robot I've modelled yet! Despite this, it was still quite the challenge to get all the angles and proportions moderately correct with the real thing. So please enjoy these photos!
1: I drew out the base shape using splines locked to the grid.

2: Extruded the splines into a 3D shape.

3: Using splines again, I drew and extruded the back plate that attaches to the base.

4: Bending a bottom part of the back plate to gain the angled look of Apollos body wedge shape.

5: Using splines (Once again) I drew out and extruded the smaller side panels Apollo has and duplicated the shape for each side.

6: Larger triangle shapes are placed in line with the corners of Apollos back plate and extend right down to the nose. This is the basis of where the flipper arm will be placed.

7: I drew out a spline shape of how I imagined the main panels to be shaped, taking note of the bit that sticks out of the main shape.

8: As you can see... My first attempt was slightly off, even when trying to adjust the shape to fit.

9: On my second attempt the spline shape was much closer, and with some adjustments of the smaller side panels it fit pretty well!

10: Having finally got the main panels fitted correctly, I duplicated them and started adding the upper panel details. 
11: The flipper arm was easy to model, with the beveled box at the top and the small metal panel at the base.

12: Since the flipper arm raises so high and exposes the inner body of Apollo, I decided to model some inner components such as the CO2 canisters and piston arm, as well as some rear motors and battery boxes. (Much like my Killerhurtz model)

13: Created some textures in Photoshop and placed them onto the model, a simple matte white with some scuffs and scratches to make the bot look a little worn.
14: Apollo all finished and in Editor in the gray box for the new game mode! What could it be? Find out soon enough!

So that was the Apollo step by step modelling process, a fairly simple bot to recreate but still taking the time as a regular maybe more complex bot to model. Work on the new game mode is coming along nicely, Most of the programming of mechanics has been completed, and I plan to make it nice and pretty like Pinball Warrior and maybe even release a build of it! I'm really busy with other projects too, which I might make a separate post about.