Today was a hectic day. We spent the morning profiling the code and examining crash dumps. We had a meeting about a new camera system as well. Afterwards I worked on a few small workflow issues that had come up, but started work afterwards on improving code performance. I removed some sub-optimal code from the GUI and FSM middlewares and created a new pooling system for projectiles. We need a better system for pooling particles as well. Particles Systems also seem bugged in the engine and can cause crashes when instantiated, destroyed or fired. We still have to fire particles, but a pooling system will hopefully help prevent the crashes caused by instantiating and destroying. These kind of issues are every programmer’s nightmare! Continuing on tuesday.
Today I created a system that sends events from the projectile back to the source weapon’s state machine to execute actions upon projectile explosion. I also improved a frustum check, fixed the auto-build process and fixed GUI input for our target device as that was broken. I also worked on, and will continue tomorrow with, a ballistic missile kinematic ported over from the Blue engine.
Today I spent most of my time fixing issues with projectiles and physics. Some collision issues remain, but those are likely configuration issues instead and not code related. My backlog is building up however, so hopefully I will find these issues soon!
Again, I worked on various issues with the camera path, including a rather big bug concerning the time steps. Besides that I worked on weapons systems and some workflow issues with scenes and Perforce.
Today I spent my time on various issues. Firstly I helped set up the weapons and damage systems and started on fixing issues and implementing small new features as we encountered the need for them. I also worked on some small bug in the scenes system and provided support for various tasks. Besides that I added the feature to exclude files from Perforce from within the engine. Lastly I worked late with Marin to find a solution for previewing the game cam from within the editor; the artists need to have an easy solution for previewing their gamecam and pathing changes or else the iteration times would increase beyond what is acceptable. We implemented a solution, so off to home!
Week 5 and 6 were the first two weeks of the three-week sprint we’re currently in. This sprint’s aim is creating the “First Playable” of the game we’re working on.
The first day of the sprint was mostly spent on planning. We first had a Sprint Review where the work of our previous sprint was demo’ed to the stakeholders. As we mostly did research on the tech side, the majority of the demo was art and design presentations.
After the Review we had the Sprint Planning meeting. In this meeting we discuss all the User Stories put forward by management and assign Story Points to the user story. These points have an abstract value, summing up the difficulty and importance of the task.
After the Sprint Planning each discipline (tech, art, design) created sub-tasks that need to be done to reach the goal of that User Story. These tasks were assigned hours and put on the Scrum Board. If a task’s length is very uncertain, we put up a timebox task covering the maximum allowed time to be spent on that task.
After the planning we had a Sprint Retrospective meeting, where each person writes down up to five things they thought that went either good or bad in the last sprint. Afterward these were categorized and discussed within the team.
In the two weeks following this planning day, we had Daily Standups where you describe what you did, what you will do and any problems you are having.
In these two weeks I worked a lot on workflow issues and provided a lot of support. I spent most of my time working on a Perforce (version control) plugin with Marin that will improve the workflow a lot and that will prevent merging problems by actively locking unmergable files if someone starts to work on it and that shows warnings when someone changes a file that someone else has changed locally as well. Besides this Perforce system, I worked on improving the asset importer scripts, creating and improving our scene system and gameplay tasks.
For the gameplay tasks we had two meetings where the designers explained the tools they would like to have in place to create gameplay and levels. We decided to use a few middleware solutions. The designers will script the level flow and events using a Kismet-like system with State Machines (FSMs) and we’ll use a Camera Path system.
For the FSM system we’ll create “building blocks” as the designers need them. We will also evaluate their FSMs once in a while and see if there are certain things that can be put into code for better performance and to make the life of the designers easier.
For the Camera system we’ll use a system that has a lot of built-in functionality already, such as easy editing and previewing of paths. However, we have found out that the system is really inefficient and has a few limitations, so we’ll need to redo quite some coding. Still, it will save us time from writing a system from scratch.
So far I have mostly finished the “Perforce and Workflow” tasks and have finished some of the gameplay tasks such as the Health system and most of the Weapons and Damage systems.
In the last week of the sprint, I will focus more on the gameplay systems and hopefully we’ll put the Perforce and Workflow plugins we have created into full use; so far only a selected few have been using them since it would have a big impact if something went wrong.
Phew, didn’t post on this blog in a while. I’ve been pretty busy now that we’ve launched into production and combined with my 4 hours of travelling per day I haven’t always felt like writing an entry, which eventually caused me to forget about it all together.
However, I’m now going to provide daily writeups! I bought a tablet last week, so I can now write entries for this blog while I’m on the train home.
To compensate for the 3 week period I missed I’ll provide a recap, beginning with week 4 (12 to 16 march)
This week was the last week of the two-week research sprint. I spent most of my time providing support to the various people working with the new engine and worked on plugins for Perforce and a system for working with multiple people on one scene. There were other workflow requests I dealt with, such as enabling/disabling the rendering of objects in the editor, helping out with setting up lightmaps, teaching people how to create builds for mobile devices and how to profile them.
I also worked on importer scripts to help our artists. The scripts automatically set up all the right settings for textures and models and move them to the right directories.