Monday, 30 June 2014

If It's Not One Thing

Having got rid of my splitting headache last week, I now have a splitting back ache this week. Looks like I cannot win :(  Had our monthly strategy meeting today to re-align where we've been, where we are and where we are going. Made some small adjustments to the release dates and internal plans and are ready for a solid week of work to get a build solid and ready for some close testing.

As I found it more comfortable to stay in my chair, I got extra work done today and knocked quite a few niggles off the task list, leaving the fun stuff for Tuesday, which includes Rockets, Particle Trails and BIG explosions.  Not that Monday was without it's interesting moments, specifically the fine tuning of the ragdoll system was pretty good fun.

Perhaps the most interesting was the addition and support of the _I texture map in the entity shader which will allow anyone with illumination texture maps to have them working in the Reloaded HIGHEST entity shader.  It's coded so there are plenty channels left in the texture slot so in the future we could do things like reflection cube map references, or something more funky like a oscillating illumination/displacement map, e.t.c.

Also added some new player and pistol sound effects to see if we could raise the bar a little more. Needs a teams ear now to see if we hit the mark or if we need to return to the drawing board.

Also work commences on the character animations for Rocketman, and some small bits work on looking for better ways to render entities in the scene but this is no high priority. The goal for this week will be to create a great game play experience with what we have so far, and if we pull it off, we should have a real PISTOL vs ROCKET fest which should make for an interesting game!

Friday, 27 June 2014

Ragdoll - Two Days

With the help of some licensed code, I have managed to create the ragdoll feature for the characters in just under two days.  I am still compiling the final tweaks but it's gone 7PM and I really want to eat and chill very soon.

I also want to show you the latest art from our Rocket Man collection! Awesome or what!  I am hopeful to get this guy in the engine and firing his rockets next week which will be a great week me thinks!

Just to show you a typical day in the life of my inbox, all this appeared within 60 minutes as I was attempting to focus on my ragdoll coding!  Now multiply that throughout the day and weeks and you can appreciate the constant battle with distractions and managing the project as a whole.

I still need to do a build and get it uploaded for later, but my brain cannot stop thinking about food so I might eat for an hour then return for an evening shift.  My first run of the integrated ragdoll was less than 100% successful. The debug capsule ragdoll fell properly, but the character model just animated a death as usual. A few more tweaks and we will be there!

One issue is that the current models have 'scaled origin matrices' which are ignored during the ragdoll manipulation. This results in head bones expanding and re-creating the teeth ten times larger, funny but undesirable. 

More work to do before this Friday is done, but I will get this blog posted now and get some munch!  Hopefully I can return recharged to sort out the scattered limbs and put Humpty back together again!

Thursday, 26 June 2014

So Many Emails So Little Time

I finally found the fortitude to ignore my inbox for five minutes and get the Rag-doll coding started. Spent most of the day on it in fact and had a hoot. I had the advantage of an existing ragdoll system powered by Bullet that was kindly licensed to us for this very purpose and I am making good progress. Right now I have my very small prototype loading in the character, turning it into a ragdoll and having it pinned to a distant wall for pure fun.  

The next step is to move the Bullet specific code over to my own Bullet wrapper and start an integratable prototype so it links in with the existing physics system and engine data structures. Should take another half day and then I will be able to see ragdoll in the engine itself.

The standalone menu system is also finished for our first version with all the graphics integrated and interface working fine. Nice big images which can be changed if you want menu and buttons of your own. No UI to edit this, just swap in your own files but we will make a title menu maker somewhere down the road when the community vote for it.

In other progresses, we now have some enemy voices in the engine which means when the enemies see you they yell out.  It's pretty cool at first, but as Ravey comments on it can get a bit repetitive and annoying, so there is definitely a subtle art when to trigger these audio incidents.

In weapon land, we have just finished the draft of the whole new weapon system and how the FLAK/PROJECTILE stuff fits into it, and today a prototype has been started which turns this from design to code.

While the rocket mechanism is being added, our artist is providing the animation to the meanie that will be firing them in the game.  Rick thinks his rocket is too big, what do you think?  How big are rocket launchers these days?  It's been a while...

Wednesday, 25 June 2014

Lighting Tweaks

My plan today WAS to get started with ragdoll but have been beset with visual and in-game tweak requests, so spent the whole day chasing those little errands. So much so that by the end of a seven hour stint, I have a pile of tweaks under my belt but a list even bigger than it was this morning with more 'little tweaks'.  Believe me, little tweaks add up!

Last night I just finished one such visual tweak to create a nice contrasting scene for a lighting test:

This morning I went into the shader and rock texture to see what else I could do to improve things and create some more pop:

You will maybe be pleased to see not much bloom hiding the issues, and forcing me to think more about colour balance and contrasts.  Our conclusion is that we need some more assets, specifically rocks that have deeper veins to create dark shadows as the current ones are too uniform and pockmarked. I attempted to create some detail as you can see above, but it resulted in lowering the resolution to get the details large enough.  We really need an artist to create a HIGH resolution normal map and supporting geometry that exhibits super deep cracks.

In order to play with lighting, I also added a new slider which some users might enjoy:

As you can see, you can now adjust the sun position in real-time, to make your scene light at the right angles and so forth. It's not 100% as the shadows do not move with the sun, but it's something that will get sorted for the next major build.

Anyhoo, once I have rid myself of these flees (small tweaks) I can get back to the major strokes of this next version which is ragdoll, explosions, smoke and particles. Darn gnats!!

Tuesday, 24 June 2014

You've Been Zombified

Had some fun today lining up the Rocket Launcher to the cool Rocket Man character that will soon be firing flaming missiles at anything that moves. Took a few attempts but he can retrieve his launcher like a trooper now. He is not connected to the rest of his animations, or the rest of the animations he will need to perform all the actions required for a Rocket Man, nor is he connected up to a special script, but the project is certainly rolling along nicely and it should not be too long before you see some action.

I also found time to add some more character variants to the default asset library in anticipation of the level demo we are working on.

In addition to a special Ops character we have zombified the soldiers as well in case you wanted a little undead flavor to your scenes.  The reasons why these variations where created will be revealed in forthcoming blogs so stay tuned!

We've also made some headway with the standalone title system (proper integrated graphics) and encryption to ensure your models and textures cannot be stolen from the executables produced with FPSC Reloaded.  For those concerned that we're spending too much time on standalone and not enough on core engine tech, I can assure you that there is as much happening inside the engine as in the final deployment.

We've also decided to re-design the FLAK system and bring it up to modern day standards, and taking the opportunity to ensure the system can cater for the many uses we will need it for including grenades, projectiles, mines, C4 explosive charges and pretty much anything else that moves or goes BOOM!

Also, some good news, my headache has gone. Phew!  Just in time for a Hangout Interview at 6PM GMT today, and I hope to be able to share a link of the video once it has been recorded and edited.  It will be a brief talk about FPSC Reloaded and our ambitions for the product, and hopefully not too much rambling from me!  Speaking of which, time for me to sign off...

Monday, 23 June 2014

Oh The Pain - The Pain!

Thanks to my two days in the sun over the weekend I seem to be rewarded with a screaming headache on Monday. It has pretty much gone from bad to worse in the last few hours and now my mind is a dull thud of eye strain and throbbing cranium.  With my excuse in place, this blog will be short.

Finished the title page mechanism today so you can now move from title to loading, to options menu and game won page, and back again, and over and over, from the standalone executables produced. Just needs real art in there now, and probably some fine tuning for visual effect, but it's done.

Also got the characters to point their guns at you much better, with less smoothing code and more brute force player angle detection.  Works okay from my end but needs the litmus test of giving it to the internal team now.

Also started getting a new shader written called effect_basic which will allow static entities to have their textures animate for things like standing fire and smoke effects.

Also started the WEIGHT and FRICTION coupling code so that entities can be affected properly by the physics system when you tweak the values from the default mass=volume calculation. My first attempt was less than perfect with the crate I was experimenting on started rolling end over end off into the distance. Not the best of starts, but shows 'something' is happening ;)

Ravey conducted some key repairs to the AI obstacle system which will prevent characters 'trying' to run through solid objects, but the bulk of his day has been on the encryption system so that standalone executable media cannot be exploited by a third party.

Jumped about the forum to do some catch-up replies and a number of small tasks not specifically related to the task list, but all for the greater good. Now I'm going to switch off the PC and see if I cannot quiet my mind with a J.D & Coke and something to eat.

Okay, so maybe my blog was not as short as my 'throbbing brain' might have liked.  Also, as a tip, try not to drink four pints of milk and a pint of orange juice that's 12 months out of date while toiling for 10 hours in the baking sun. It might quench your thirst at the time, but illness is sure to follow!

Friday, 20 June 2014

Another Packed Week

Plenty of stuff done this week, with great work done on cover AI making the enemies look very smart, that is, they hide behind stuff so they don't get shot.  Ravey has been confined to continue this AI work until we are beyond the goal post for making a great game play experience.

For myself I have been knocking a few things off the list, and putting more focus on general game logic tweaks and improvements. We have a new marker called Cover Zone which you can place behind any object in the game, and the AI will use these as clues as to the best places to hide when attacking the player.  The automated AI system also calculates the best cover positions from the overall geometry too so you get the best of both world.

Also got a cool email from our Character artist with a sneak peek at a new official character, and after using the same Solider for months and months, I am sure you will be tugging at the leash for this one.

As you can imagine, our newly named Rocket Man Character will be wielding a huge rocket launcher as his preferred weapon, which means rockets, explosions, explosion forces, debris, smoke particles and fire.  As you might imagine I am looking forward to starting this work!!

Aside from some tinkering at the weekend, my work for Monday will be finishing off the title pages system to wrap standalones with the required title, loading, end pages, options menus and the various screens you need to make a game rounded and feel complete.

Until then however, I am putting my tools away and walking into the baking sun to see what the outside world looks like...

Thursday, 19 June 2014

Characters Now Spawn

The cool news from today's coding is that characters can now be spawned at will from automated and custom scripts.  That is, you can place a character in your level but set it's property 'Spawn At Start' to NO. You can then rename the entity to something memorable such as 'bob' and then proceed to place a few of them around the scene. You can then create a second entity such as a zone, gate or key, and add 'bob' to the field called IF USED. As soon as you collect the key, open the door or walk over the trigger zone and the entity specified will be activated, in this case 'bob'. An automated benefit of activating an entity is that if the entity has not yet spawned, spawn it. With the above logic in place you can now hide the majority of your characters until you want them too leap out at the player.  A typical scenario used in many FPS games is to place two characters at either end of a tunnel and place a trigger zone in the middle of the corridor which spawns the characters at the psychological moment, scaring the stuffing out of the unwitting player.

Also improved the terrain painter and save/load system so that you no longer get I call 'terrain slide', the result of the colour pixels not exactly going back where they were painted from the previous level load. I have now done away with the baggage that tried to get top performance and now relying on a slightly slower but much more reliable image data manipulation approach which to totally preserves the previous pixel colour data.

In the A.I camp, Ravey has been making sterling progress with the new character cover system, which is designed to allow soldiers to move from one cover position to another, getting ever closer to the player but not exposing themselves to a direct shot.  Early demos look good and hopefully I will have something playable and solid by the end of Friday.

Once more the sun is shining in Wales and I have hole digging and dog walking duties to perform.  I was hanging around for some last minute check-in stuff, but it's now 17:36PM and the deadline has passed. Will return later tonight when I am fed, watered and slightly sun bleached ;)

Tuesday, 17 June 2014

Blog With Video

If you are offended or upset by inferior tech videos, please do not read this blog post today. It is reserved for those readers who appreciate some low-level tech gubbins in their soup.  Although most of the day was given over to solving some pretty gnarly tweaks, the one I am pleased about is the one that will allow all the competition entries AI system to work.  Seems that any level that was based on an island (land surrounded completely by water) would create HUGE obstacles and prevent the character waypoint and movement system from working. I thus resurrected my water obstacle calculation prototype and got it to work in chunks rather than as a whole which solved the problem. I also created a video showing the 'chunking' in action.

Impressive I know! This process happens at the back end each time you press Test Level but much MUCH faster than what you see in the video which has to visually represent what is happening for debugging and video purposes.

I was also on the verge of figuring out the fix to ensure that when you save and load about 50 times, the lower right corner of the terrain does not shift it's paint markings.  As it's ten minutes to six and my walk is in ten minutes time, I just had enough time to write this blog and ensure when I resume Thursday I know where I left off.

No blog post on Wednesday as I will be away from the office doing non-PC type things, but will be back with a vengeance on Thursday to finish what I did today and start on footfall audio and smoke particles ;)

Monday, 16 June 2014

Plenty Play Day

Spent the day fixing collision, gun floating and other battle related issue today, which is pretty difficult as each time you have to battle for a bit before you get a sense of whether you have fixed it or not.  Had the opportunity to play the A.I during this reproduce step and it's looking good to me. Still ways to go of course, but very difficult to breeze through the level these days!

I can't recall how many times I died to fix my bugs, but the engine now controls the guns in the hands of the enemy better, they no longer collide and disappear, enemies can now see and shoot you through things like chain link fencing, the enemies look at you quicker when running/shooting though I think this needs testing some more.  Also created a draft document for our future plans for multiplayer game creation which will be prototyped by a non-Lee entity in the initial stages so will not detract from my pursuit of a better single player games engine. 

I am currently waiting on some Ragdoll code which will allow me to solve the issue of characters falling through the terrain when they fall over and create a number of realistic responses.  In other news the Importer has moved on a pace and we're almost ready to start some internal testing of the early pre-V1 version, but it can already create super-fast collision sub-boxes for buildings which is vital for improved performance of future levels so all going well there.

My plan while waiting for ragdoll will be to add more of the material system so you can have different footfall sounds based on where you walk, and also look at smoke & fire!  Exciting eye candy ahead, so watch this space!

Thursday, 12 June 2014

Last Day Of My Week

Setting off early on Friday to do some more dreaded decorating. Only one more thrust and then it will be done (for a good while) so my weekend is pre-booked with 'normal life' stuff.  I've just finished making a build for an internal test and it's looking good with the new music sub-system in place and the characters and faux-characters ability to push dynamic objects out of the way and walk ON them instead of THROUGH them. This is especially important for characters who want to walk on roads, floors, pallets, e.t.c.  I am sure there are plenty of collision tweaks as a result of this major addition, and I also hope performance has not suffered. It did not appear so when I ran the two compounds level with the new character physics handling stuff.

In other news, my AMD card from eBay arrived today, and here is a picture of the box, which looks rather snazzy and very Reloaded themed:

Have no time to install it, but this Sapphire card will show me the performance metrics of an AMD vs NVIDIA, if any. I have had several reports that this card might not show any performance improvements based on the shader work I have been doing.  We will see!

Finally, I want to give a big shout to a new Kickstarter for something called Console OS. 

I am a big fan of the bleeding edge in technology, and you don't get sharper than what is by far the FASTEST Android platform on the planet! Here it is for your delectation, and I invite you to support this great OS:

My own interest relates to what Console OS can do for AGK in the months to come, as we add our top-end 3D and shader commands set to the language at which point there will be no such thing as too fast!

Wednesday, 11 June 2014

The Day Of The Zombie

Spent some time working on the Zombie situation, and getting custom characters to do a little more in the process. By days's end the little fellows can not only track and follow the player, but animate all their animations and obey collision which means sliding around tables, and not walking through each other.

Here is a video I knocked up last night before I went to bed. I did not release it last night as the blog was already written and the last time I released a video on my blog I was told off.  This time I sought permission before inflicting it on you, but I made it to very quickly show something running. I can assure you the walking has been improved since this was made, and the Zombie sub-system is almost finished now.

The remaining work involves getting the other Zombies in and working, and make sure they all pass the quality test. The scripts need to work well together with other Zombie scripts and they should be able to be dropped into a level as part of a larger game design.

The biggest news today for me is the prototyping of a new music system for FPSC Reloaded, which is what we used to call dynamic music. That is, a series of music chunks that intelligently link together and can be switched back and forth as the mood of the game changes. Only when you hear it do you realize just how powerful intelligent audio is to the feel of a game, and we're very proud to be able to have this early test running in Reloaded. Would like to share a video of this proto, but too many videos in one blog might be too much to bear :)  We also have basic music transitions working as well, so you can fade into a completely different music score if you wish.  It is anticipated that music composers will be able to produce dynamic music scores and upload them to the store to give your game levels real emotion and raise your creation to a new level.  Kudos to Simon who is the mastermind behind this new feature, and we will be showing it off in the not too distant future!!

Tuesday, 10 June 2014

Successful Launch Of V1.0071

All in all, pretty pleased with the early feedback of the official release of V1.0071 HOT FIX. Performance improvements reported, and improvements in a range of areas. Far from the final version still, but a step in the correct direction to be sure.  Also put out a live poll today to see if the community would accept a radical re-imagining of the HIGH and HIGHEST settings of the terrain shader. Here is the comparison screen from the forum post:

And here is what I want to turn HIGH and HIGHEST into, removing the detail map which was a throwback from an early version to defeat tiling at extreme heights.

And finally, here is the POLL site which shows the current score.

As you can see, an overwhelming support for the new cleaner look. Now the question remainsm is it fair on the four pledgers who don't want it changed? We'll watch as this subject develops!

The rest of my day was spent in Zombieland, teaching them to walk, talk, eat brains and the usual drill of tests to ensure they acquit themselves well in the combat arena.  Just waiting on some death animations and then they will be ready for roll out, that is, to get the variations in and tested.  I have used a mixed zombie moan sound and a modified melee strike for close quarters combat but time will tell if these audio sounds remain.

Crazy day today, with great sun then showers, then more sun, e.t.c.  Going to snatch my chance in the next 30 minutes to walk the doggy and remove a carb from a 50 HP outboard.  Apparently no self respecting marine engineer will touch my 35 year old engine - I will leave you to draw parallels on that ;)

Monday, 9 June 2014

Almost Ready To Release the HOT FIX

Getting good vibes from the internal alpha testers, so it looks like a public release is imminent. Have been making small tweaks (carefully) and also working on the new Zombie system which primarily will allow us to release the Zombie Pack at some future point but also to help support the idea of customizable characters.  

Right now the Zombie menace just stand idle, respond when you get close, lurch very slowly towards you, swipe and deal player damage if they hit you and continue to hound you until you run out of range. They do not respond to being shot and cannot die, nor do they control their animation speed as much as they need to, but more animations are on the way and the work begins on completing the Zombie system bit by bit.

Performance is up, final testing is underway and expect a V1.0071 HOT FIX very soon!  I've been to the forums and made some posts, wrote this blog and made it live so now is the time for me to make a nice cup of Budweiser and sit in the sun for an hour before my ritual walk.

Friday, 6 June 2014

A Good Friday

Another very quick week for me, and ending on a high with the final build of V1.071 for Friday which is pretty cool. More performance, better A.I, more stability and generally oozing goodness. My interview went well, and I very much enjoyed the questions. Might do another one in a few months when Reloaded is further along!  It's now over to the internal alpha testers to punish the V1.071 build to see if we missed any show stoppers. One fix I did make which I thought was pretty long overdue was the IDE now detects if there are any old FPSC-MapEditor.exe instances running and terminates them before starting. This avoids the issue of FPSC Reloaded launching and then just sitting there in a frozen state. You should no longer need to open Task Manager to restore your session - at least that is the theory.

Not decorating the house this weekend so will be hanging around the forums to see how everyone is getting on and answering questions where I can. Going to potter in the garden and recharge my battery a little, but next week should be another very cool week as we take our two-compounds level and take it to the MAX. What that means precisely I will reveal in the weeks to come, but I think you will approve and it is definitely the right thing to do at this stage. We don't just want a GOOD result, we want a GREAT result, and we have a plan to deliver this.

Before I forget, when you get your mitts on the V1.071 hot fix, check out the new sliders in the Shader Panel, I think they are pretty cool and might be responsible for some serious performance improvements if you have the right kind of GPU.

Okay so I could not wait until the release. As you can see you can control the transition distance which tells the shader precisely when to use the cheaper fragment code to boost your FPS.  If your GPU handles IF branches a certain way, you will see a leap in performance when you reduce the slider to bring the cheaper pixels closer to the camera!

Anyhoo, have a great weekend everyone and we'll report the findings of our testers next week, and hopefully reports their elation too!

Wednesday, 4 June 2014

Watch Out - Zombie Cop!

Another good day of work today, with some improvements to overall terrain shader rendering speed by adding a technique which saves frames on the fact that more distant pixels need less detail, and by switching to a shader technique that only did what was needed at a distant point we gain FPS. It's not the 'double' frame rate I was hoping for, far from it, but it's a measurable boost and I'm having it.

Also managed to solve the export issues for the new characters coming to Reloaded soon so we're one less obstacle from release here. I have included a shot from my testing. Ugly fellow ain't he?

A batch of other issues have also been dealt with and an internal build has been created in advance of showing our internal alpha testers.  I anticipate one more build and then we might have something we can proudly call a HOT FIX aka V1.0071.

My Live Interview starts at 8PM so I have some time to walk the dog, grab a bite and practice looking 'knowledgeable' in the mirror.  Before that though, I have to check out a few trees now we have a new tree collision system I need to check a few dozen of them. Make sure I cannot put my head through 'em :)

For those interested in the live show, be here at 8PM BST:

Tuesday, 3 June 2014

Your Pledges At Work

Plenty work on occlusion, level design, those annoying little tweaks and of course my task of the day which turned out to be tree collision. At one end of the day I was fixing an issue with a level running out of memory when the Test Level button was pressed, but it turned out to be VERY hungry trees. My first fix to remove the overzealous visibility geometry for the AI on trees brought memory usage on the test level I was using from 1.5GB to 750MB. Not bad right?  Well my second stint at improving the tree collision and AI obstacles for them improved performance and memory use further, plus sped up the Test Level process step. Not bad for 9 hours graft.

My title however does not refer to this blood'n'sweat routine which you guys get for free on a daily basis, it is in reference to some new artwork that has come in for one of our future updates and I really had to share:

I will keep the reasons a bit dark to preserve some suspense here but we have decided to turn our soldier guy into a few rotting Zombies, complete with scripts.  As you can see, they would also work as stealth ninja soldiers, ghost operatives soaked in someone else's blood or anything from the spirit realm. More on what WE plan to do with them in future blogs ;)

My plan for Wednesday is to start (and finish) my VERY LOW shader slider technique and grab some more FPS from the ether.  I also have my live interview with Intel at 8PM BST as well so do check that out if you can. Live questions are possible too, so you're chance to corner me with a cruel question if you like.  For now, day light is running out and I've not eaten, walked, or looked away from this damn monitor for 9 hours solid so I think I will try to cap off my work now and do something completely different...

Monday, 2 June 2014

Meeting Day And Live Interview Prep

Big meeting day today so no coding from me. Ravey did some cool AI fixes and occlusion cache work and Simon embellished our two-compounds level with new eye candy, plus drew up plans for the creation of a LOT more art for the modern day assets!  More on this as it happens.

Spent the PM side of my day in a rehearsal for the live interview event that will take place on Wednesday. If you would like to join in, here are the details:

* Live Q&A with Lee at 8pm UTC (12pm Pacific) Wednesday June 4
* If you have questions, use the hashtag #IDZLive on Twitter or Google Plus before or during the Q&A
* Or, post your questions live using Google Hangouts

The Link:

My plan Tuesday is a full day of enjoyable coding, where I will be adding a technique I am calling 'Very Low' terrain and entity shading, along with a slider you can er, slide, which will reduce the fragment shader complexity of whole chunks of geometry in the scene. The upshot is that we will be able to increase the performance by further reducing the need for expensive shader code in the distance.  I will also add transition code to the main shader so the transition between the two techniques is smoothed out and I will strike a default slider setting which will hopefully create a transition you do not notice. The benefit of this will potentially yields the greatest single FPS boost we have so far achieved, but it's all theory so far so come back in 30 hours to this blog to find out what happened.

I also got my confirmation for attendance at IDF 2014, so if anyone is in San Francisco between the 9th and 11th of September, drop a tweet, post or comment and you can buy me a Guinness ;)  Right now I have no plans to present, speak or showcase right now so I will mostly be wearing my party hat and party grin, talking about Reloaded to anyone who will listen and becoming a regular developer attending sessions and learning a bunch of stuff.  Always a good event and am now looking forward to what will probably be my only holiday this year :)