I apologize for the achievement pun in the title. I am also sorry that it will not be the last one. :)
This week I was working on the achievements system, starting with a live twitch stream of the development. While I ended up changing a LOT of what was in that stream, it was very nice doing that portion live. I will also be doing another live session in the near future detailing the changes I made, why I changed it, and creating some achievements in real time with the audience!
Currently, the base framework of the achievement system is fully functional, there is just the UI portion that needs to be integrated into the game. This includes the 'Achievement Earned' notification, and being able to view your profile and see the earned achievements. This system is also currently isolated, so it does not propagate to your online Bombdog account. This is actually on purpose, and will go through a few snapshots before I start sending data to the online servers, just to ensure it's as functional as possible. It is not fun trying to clean up bad data from a live server!
After achievements, will come the medal system, which should go VERY fast, as it's basically the exact same as achievements, only smaller requirements and they can be earned multiple times. At this point, I will likely start adding in player 'XP' rewards to the profile. Eventually, the 'XP' [totally temp name] will be how you unlock more parts and camo's for use in Arena and Siege mode games. It also will help with multiplayer, as it will give you a small indication of each players skill level.
Also, if you are not joining the Friday Night Fights, I highly recommend them to you! If you missed them, they normally get recorded from more than one viewpoint and are easy to find on YouTube.
You can watch my full Friday play session here!
Also, as a side note about this up coming week. I will be having to shift my focus to the physical world for 4 days, as I do some late night traveling and some outdoor repair work. Due to this, I might have some limited availability online. If you have an issue that need immediate attention, please post on the message board as the amazing mods can be incredibly fast with responses and have a great basis of knowledge for fixing issues. All account issues will need to be dealt with by me, but I will typically get them resolved in less that 24 hours still.
That is it for this week!
This week I have been cleaning up some janky user code to allow user profiles to work correctly in the game. I created new systems for logging a player into a custom player profile, generating base profiles, and saving changes to them as well. This meant changing up the user login system quite a bit, which I actually did in a live code session on twitch! I will be making an effort to stream development at least once a week, as I found it very different, but very rewarding at the same time. When I do stream, I will be on the raksal teamspeak, so make sure you join it!
So, as a great test of the profile system, I started to hook up all the stat tracking. While I had planned to do this on a live stream, it turns out it went really fast! By leveraging the custom event logger I created, the stats got hooked up super fast and are now tracking correctly, across multiple play sessions. These lifetime stats are collected during gameplay and piped back into the users profile. While I created the functions to transmit the stats profile data across the internet, it's not hooked up to save it to your bombdog account quite yet, nor be sent through the game to other players.
As for the next live stream, I wanted to save something fun, so I will be streaming the creation of the Achievements system. It's complicated enough to be interesting, uses a lot of systems in the game, and should be fun having real-time feedback into what type of achievements to support. Look for that stream either tomorrow or over the weekend. You can also follow me on Facebook or Twitter to get notified when I go live. And of course follow me on twitch!
That's all for this week! See you next time!
Don't worry, there are no cruel jokes contained in this post. Today, you are safe!
I have been continuing to hammer out the issues with the player profile system and I have been making progress!
Also, I have started doing live streams on twitch! You should go follow me, twitch.tv/cyberdogs7, and help me code. Or watch me play games. Who knows what I will be doing on there! The possibilities are endless!!!!
Ok, back to reality. One great thing did happen on twitch already though. SergeDavid got to pester encourage me to fix the naming of 'Mobility' to chassis, and change the ordering of the part categories. On top of that, everyone got to see the changes happen in real time! So, I am a little hooked on twitch and the cool feedback loop that it provides.
That is all for this week! Next week I hope to have the new profile system in and working and a snapshot build out to the masses. See you then!
Welcome to this weeks State of the Game. Now stop reading and go get the latest stable build and start playing!
Back? Good! So the new stable build wraps all the features from the snapshots into a bug tested [not bug free!] build that everyone can enjoy while I work on the next set of features. So what does this one have in it? Glad you asked! [Though you already played it so you should know. You did play it, right?]
New Pregame Lobby
The new pregame lobby allows you to switch out builds, switch teams, see the other players builds, and vote on the next level to be played. It was quite the overhaul!
No longer will you get stuck in a loop of playing New Amazon by a troll server, you can now choose your own fate and vote on the next map. There are 3 level options, one picked by the server admin, and 2 random levels. If the server does not have a level list, all 3 choices will be random [but never duplicated]. The level with the most votes wins! In a case of a tie, it's the level that was randomly selected last, or the server admins level, depending on which levels are in the tie.
If you play the game on steam, you will now have the option of connecting your steam account to a Bombdog account. Why would you want to do this? There is some Bombdog account exclusive content, like Alpha member features, or the Alienware cockpit. By connecting your steam account to your Bombdog account, you will be using steam to login to Bombdog account, ensuring you have access to everything, no matter what platform you choose to use. You can even use it to connect to a free Bombdog account! In this case it will not create a new paid account, but when you login from steam it will grant the free account all your normal unlocks and allows you to use any Bombdog exclusive content.
So I wrote, what I think, is a really neat event manager system in preparation for stats and achievements tracking. What better way to test this system than with a custom error tracking system?! The new custom logger replaces the built in Unity error tracking system and does a much better job at filtering worthless messages, reducing writing to disk, and avoiding memory issues that could cause a crash. It also make finding errors SUPER easy for me. I have already discovered 3 new issues that are well hidden and fairly random from user submitted logs and have a great start on getting them fixed!
So that is what is in the current stable build, but guess what! I have already started on the next snapshot! I already have a skeleton of a player profile that gets created/loaded on login and have a fully written, but not yet hooked up, stat tracker and manager system. It's kind of beautiful that I can create these systems in a fully modular way and just hook them up through the event system now. In fact, hooking up the profile system took exactly 1 line of code:
EventManager.Subscribe("Account/Login", new EventManagerEvent(ProfileManager.PlayerLogIn))
Once I get the stats system hooked up and saving data, I will start to manage the global syncing of that data through the Bombdog account. I will have to do some data conversion, as I want a lot of the game profile data to argument the online profile and be reachable through the website as well. There is also the big dark question of what to do about people messing with offline profiles, offline play, playing in one location offline, then playing online in a different location, and then playing online in the original location. All a bit of a nightmare, but I feel the problems are solvable and will provide me with a nice coding challenge. If you see a bunch of dumb questions flooding stachoverflow.com, that would be me!
Also, about the website. There is currently a contract developer working on a new version, but we are having a ..... quality disagreement. Sigh. I am doing my best to get the situation resolved in a mutually beneficial way, but it is highly likely the website will be delayed for quite some time. Originally, it was to be done by the end of January, but that date has long since passed.
Hope to see you next week for another amazing State of the Game!
Welcome to another state of the game! This week, I have been hard at work stabilizing the snapshots and adding small features to help keep all builds more stable going forward.
To start the week off, I went back in 'time' and made changes to the last stable build to include the memory leak fixes in the build and re-released it. This means the last stable build is actually a bit stable now and people can enjoy playing it without crashes!
After that fix, I moved on to the snapshots and released a small update to the snapshots that addressed the main multiplayer Arena issues. These are :
- Infinite time limit in arena matches
- Instance in which an instant defeat would happen on joining a game
- Instance in which no other players would be visible on the server and no damage could be dealt or received
- Made server not cast a vote in the level selection process
This already made the snapshots much more playable, but I wanted to further increase stability. With that, I created a custom event logger system!
So what is a custom event logger?
Well, the current builds use a default log system in unity. This means, when ever there is an error, or log message, unity writes that message to a file. Simple, but effective, right?
Well, it turns out, that is great if you have a simple game. If you have a really complex game, writing all those log messages can slow everything down. Also, EVERYTHING gets logged, not just the important stuff. Have you ever searched a 186 MILLION line text file for an error, because I have had to.
Then, there is the cause that unity doesn't like to close the file, which means when a server is running and dumping every minor message, eventually, it will run out of memory trying to write that file. Also, the file is in a standard location, so if you run 2 copies of M.A.V., they will BOTH be writing to the same file.
So, I tool things into my own hands. I had this really nifty event management system I had created for monitoring stats and achievements and thought this would be a great test bed for it. I then wrote up some custom file handling systems and tapped into unity's internal log system, and most importantly, turned off unity's built in log writing.
Now, the logs only contain things that are actually likely to help with debugging a problem in the game. No longer will I have to browser 10 million warnings about audio listeners to find the one game breaking error. The logs can also include any custom debug messages in response to events, allowing a great 'second tier' debugging system as well. To top it off, since I am in control of the logging, I can also [in the future] allow players to opt-in to automatically sending log files to a central server, allowing me to see common issues that people have.
So where is this new log file? Well, in the Logs folder in the My Games/BombdogStudios/MAV/ data folder, of course! You didn't think I had that folder there this whole time without plans to use it, did you? Also, a great new feature to the logs are that they are rolling, so your 10 most recent log files will always be available! This will be very helpful in-case something happens and you couldn't save the log with the error before restarting M.A.V..
While loggers might not always be the coolest thing to talk about, I feel having better support tools, like the logger, while help the game progress faster, as I spend significantly less time going on goose hunts to try and replicate errors. Also, it should increase the stability of long running servers, which is always a plus!
I will see you next week!