Friday, 22 March 2013

Friday Shortest Blog Ever

Short One Signing Off

As you may know, the UK is having it's fair share of weather today, and in my case I was up at 6AM untangling a 20 foot metal garage which decided to go for a walk when the wind storm hit.

Spent most of the day sorting out the havok during the day and backing up and sharing some source code in the evening so Paul can carry on coding while I am at GDC. Managed to sit down long enough to emails, but not much else.

Rick asked me to take a photo of the carnage, which would have been a good blog moment, but when you are knocking an eight foot piece of metal off an electricity cable with 1100 volts running through it, you tend to shift your priorities.  The good news is the violent winds are easing off a little now (2AM) and as my body only really got 4 hours sleep since Thursday, I am off to bed. The horrid news is that my plan to get some GDC demo polish work done today went out the window (and over the fence and nearly into the road) so that leaves Saturday for doing everything. Now that's going to be a day!

Thursday, 21 March 2013

Thursday Things

Things That Happened Today

On a professional note, it looks like I finished the AGK apps, with no more bugs reported on them from a days testing. Not celebrating yet. Will do that when I see them on the iOS and Android stores :)

In the late evening, I did some GDC prep work such as making my slides and also cleaned up some of the UCCII Perceptual Webcamera app to make it more polished. Will do the bulk of the final polish over the weekend, but I wanted to get movements done towards the end of the week so I have a good app experience for the GDC goers.

On a personal note, I sold my car today. My most favourite car ever, and it's gone, gone, gone. A sad day indeed. Going to see what it's like to live without a car for a while. I do have a 1962 land rover but it does not really count as a car, more like a vibrating mad washing machine on wheels, controlled by a wagon wheel and powered by hope.

Reloaded

No new explosions to report today on the Reloaded side. I did submit my story board script for the level that will feature in the product. Mark liked it, and thought the 'stylish noire theme' would work very well. Rick hated everything about it (I suspect he wants a MW3 clone). I've given him the GDC week to come up with a better script :)  In the meantime, lets take a blog vote. Would you prefer 'Detective Story' with puzzles and a bit of shooting, or 'Military Mayhem' with a few puzzles and lots of shooting?  You can't say both :)  The plan is to do one game and put extra energy into the quality finish, rather than quantity.

Signing Off

I've been staring at this PC so much over the last few weeks I think I need new glasses due to the amount of physical change I've put my eyes through. Probably go in for an eye test when I get back from GDC to see how blind I am getting and buy some prescription telescopes.

Wednesday, 20 March 2013

Wednesday Reset

Early Night Reset

After failing to reset on Tuesday, I am trying again tonight to get an early night but the universe insists I stay up until I have build, then tested on multiple devices, then if I find a bug, fix it, the re-build, then test again on two devices, and rinse, and repeat.  As you can imagine, this could go on all night and there is no guarantee the app will stay unchanged the next day :)

It needs doing, but it's the sort of thing you simply cannot plan and budget for, and as I blogged a few nights ago I am just resigned to doing what fate dictates now. If that is for me to try and get early nights but the work don't let me, so be it.

Reloaded Progress

Fortunately, not all forces slumber in the land of Reloaded and a new improved explosion prototype hit my desk this evening, which I can share with you now.  Here is the latest video:


I am not happy with the smoke, but we're now getting a sense of 3D from our big bangs which is great!  We will continue tweaking graphics next week, and the prototype will go through a few more touches before we can sign it off until we have an opportunity to return and plug in customisations and associate them with game elements.  We're also adding some 'after-fire' too so watch out for that in a future prototype!

Signing Off

It's about 10:50PM now so fingers crossed I can get the last build tested to a 'certain level' of satisfaction and then get it dropped on the FTP so I can slope off and sleep.  I also have a huge amount of code I want to tweak this weekend for GDC which will be cutting it very close, but that's the way the coding cookie crumbles sometimes!


Tuesday, 19 March 2013

Tuesday Fly By

Quick Update

Just got in a new prototype of the explosion in real-time, complete with debris. Here is a you tube video of the proto app:


As you can see there is a little tearing on the smoke, but we plan to merge the visuals into a single unified shader which will blend this technique with everything else you see on screen. Really pleased how the debris worked out, and with a few more graphical additions and some small fires, and long burning smoke added, we'll have something worthy of Reloaded fame!

Signing Off

As per my plan to get increasingly early nights to restore the body block, going to call it an early midnight and get some sleep. The short blog might come as a welcome relief to the usual tirade of waffle you usually get from me :)  I promise the blog will get more exciting during April if the mighty publisher in the sky leaves me alone!

Monday, 18 March 2013

Monday More

Quiet Acceptance

I have come to the conclusion that while I have a publisher and project manager breathing down my neck, talking about apps that are not Reloaded, I will never be able to string more than few days to develop our masterpiece.  I think this will only happen when the app is actually being submitted and no more changes are allowed by anyone.

I completely understand and support the fact the app has to be perfect. The iOS app store is a ferocious market to sell your app within and we can't half bake anything that goes out.  It's just a pity that my estimate of how long I thought it would take was woefully naive. Still, if you can walk away with a lesson learned, you will always profit, even from really sticky situations.

Ultimate Weekend

My side-line UCCII project which comes to a close very soon hit a few land mines over the weekend, with a host of device and speed issues that really put me in the unusual position of blogging 'in-development' versions rather than a smooth 'presentation-ready' version which I always prefer.  Anyone with a keen eye will spot the breaks in the video where the voice recognition (brought about by a 15 frame per second experience and some internal mystery lag from the Voice SDK) would simply ignore me, so I had to grab the bits that worked.  The good news is we are feature frozen there so it just needs optimising and polishing for GDC next week and this version will carry on to the final submission and then we'll see what everyone things.

More importantly for this blog, of course, is that with the submission of the AGK apps and the conclusion of the coding competition, I will only have one project left on my plate, and you know which one that is :)

More Bang

As they come to me, I upload them for you. Artwork is starting to form around technique ideas, and here is one such glimpse:


I hope to share actual prototype footage before I jet off, but I'm not placing heavy deadlines at this stage to allow creative freedom to reign.  Fear not, deadlines will start to creep in once I am focused on the one target.

Signing Off

I have shifted into the usual "wake at 5PM, work to 5AM and sleep for as long as I can get away with", but I need to do some internal body clock adjusting soon so I am ready to catch an 8AM flight on Sunday and visit England Thursday, which is a 6AM start. It is already 2:30AM so I am going to do 30 minutes on the Reloaded source to get my head back into it, and then see if I can grab an early start on Tuesday.  By that, I mean dinner time :)

Friday, 15 March 2013

Friday Fuzziness

The Day After The Night Before

What on earth was I posting last night? Not sure what steak has to do with Reloaded, but we'll put it down to recharging developer batteries :)  Today I have some art for you in the form of a quick video:


This is just the explosion decal graphics. More explosion attributes is due to follow in the weeks to come.

As mark says, with the present FPSC explosion, blink and you'd miss it. With the one we are planning, you can close your eyes in fear, and the extraordinary carnage will still be there when you open them.

The Coding

Normal Friday night coding is making way this evening for the Ultimate Coder Challenge coding session, where I intend to cap off the functionality and get to a place where two users can communicate through the software.

My brain and belly don't feel like coding, and it feels like I've been hollowed out and used as a house boat for six months, but needs must.  For more information on what I get up to this weekend, you can check my sister blog here: ultimatecoderchallenge.blogspot.co.uk

Signing Off

I think I have managed to fix all the AGK app bugs now and we really are days away from submitting them. I can then reveal all so you can download them and see what AGK can do when pushed.  I am confident we will sell hundreds of thousands of units, and it will be a great showcase for the language.  Perhaps the greatest benefit though is the work we had to do in AGK engine to get the app to where it is, which means all AGK developers benefit when we release V108.  Watch these spaces!

Thursday, 14 March 2013

Thursday Birthday Eve

Tomorrow Is Another Day

A milestone in my personal history marks my 39th year on this insignificant little blue green planet, somewhere in the unremarkable end of the western spiral arm of the galaxy.  Top news this evening, my meal:



I had fillet steak, black pudding, mushrooms with cheese on, huge potato and an entire jug of sauce to drown it all in. One of my most favourite meals!

And What Happened

I drank lots of things, some red things and some brown things, and I am toasted. I don't feel at all sober, but I only have myself to blame. I am not so ballistically smashed to avoid writing my blog for the evening and I can report the lab down in Explosion Central is going well and we should have an almighty fiery mess by the end of next week :)

Signing Off

Despite being in no fit state, I have a job to do and just sorting out some more builds for Friday and then crawling back to my pit to curl up. Sorry for letting the side down, but the occasion of my birth was pressed upon me and I was too polite to complain. A big thanks to my Uncle who sent a very mushy card to me, very much out of character, cheers Malc!  Normal service will resume Friday thanks to the copious amounts of water I am forcing myself to drink. It's now 6AM and I've started the final upload of the evening (350MB app on test flight - ouch!)

Wednesday, 13 March 2013

Wednesday Derailed

The Best Laid Plans

I had planned a good four or five hours solid Reloaded work this evening, which was plenty enough time to get the real-time light mapping into the current editor, but I was pulled away for some additional AGK app testing work so that plan pretty much flopped. I should learn not to make plans ;)

A Silver Lining

To keep you in the news and amused, here is a sneak peek at a very very early idea of the kind of detail we want from our explosion decals.


I have commissioned a secret FPSC ally to help me create the ultimate explosion for Reloaded, and together with Mark's keen skills we should have something special for you soon enough.  When we have a demo, you will see it here first!

We have discussed it internally and we're happy that the new FPSC Reloaded explosion will have a minimum of new and improved main blast decals, debris cast from the epicentre using physics for the larger bits, a slow lingering smoke after the initial blast and we're pencilling the concept of a slow burning fire to slowly fade away as the remaining fuel is consumed.  It's not rocket science to add all these as most FPS games have had this for many years now and Reloaded should have no less.

And Further

Once we have the basics in place, and looking awesome, we then turn it up to Eleven with what happens to anything nearby, from shock waves, object and character damage and reactions, scorching, subsequent explosions of nearby flammable objects, shader effects and some real meaty sound effects to finish off the meal.

Signing Off

I will bring you more news on the explosion prototype as it develops, and bring you any new graphics as they emerge.  For now, time to sleep a little before hacking through the daylight duties of testing, building and uploading apps so I can move into the fun part of the evening in my Reloaded bubble.

Tuesday, 12 March 2013

Tuesday Type Work

Early Start

Managed to start early on Reloaded today, just 11PM which is a whole entire hour before midnight. Don't ask me what kept me busy from 4PM to 11PM, all I know is I did lots of builds, lots of uploading and lots of email answering. Anyhoo, onto the Reloaded fun!


As you can see, I have already started splitting the source code into three smaller files. The first is the header file where I will put in notes and really powerful global settings to define what variant of the software is being compiled.  The second is where I am storing all my user type declarations, of which there now 1670 lines of them. The last one is the main bulk of the program, which during this development will be further divided.

The good news for those who are pledging funds into the Reloaded project, once I start spitting out the smaller prototypes, I will make them available so you can get an early taste of the final product. I think the terrain and new physics prototypes will be well worth waiting for.

Type Work

I left the code yesterday with a bug in it. My code had all the types in one place, but one type refused to compile with some ambiguous error. I tried to trace with no joy so called it a night.

This evening my mission was to copy over the DBPro compiler to the new machine and trace the code to find out the specific reason. It turns out I had a type declared that tried to use a type further down which DBP does not allow. I moved the type above the primary type and presto, success.

For Dark Basic Pro Fans

I also had a brief look at the current state of DBP, the code base and the forums in general. Great to see everyone in the DBP community helping each other and still asking tough questions. Now I am back in DBP land, I have started the process of moving my files over to the new machine and also bringing the projects up to VS2010. I could go all the way to VS2012 but I am not ready to help Microsoft test their new product just yet, I think I will use the latest service pack version of VS2010 which is nice and mature.

I posted in the DBP forum which I have probably not done for the best part of half a year, and removed the AGK post from the main DBP page as it did not seem appropriate.  Initially I thought DBP fans would move swiftly to AGK but I have since appreciated that this will only ever happen if AGK had every command and every feature DBP presently has on Windows.  The migration cost is too high right now, so I am going to do a little house cleaning on the DBP side of things and solve some issues as I write Reloaded, including the new tricky issues of Windows 7 and Windows 8 compatibility.  Seems the powers that be have re-written the OS for forbid many things DBP wants to do, and given the OS won't budge, I'll have to contort our beloved language to suit.

5:27AM : The First New Types Are Born

Got lots of good code done. I had a choice to do code to get results quickly, or do code to get source looking professional and written well. I decided the latter. I have set up a way of working which creates new types in the types file, prototypes expose engine globals and arrays at the top of the proto and then new data types needed by the proto, which are then promoted to the main app at some point when the feature is nearly done.  This way I can really control the data strictly, know where it is at any time and see the dependencies quickly.  It also means my compile time on the prototypes is mere seconds instead of 3 minutes.  See a shot of the first two types to come out of this process.  These are the essential variables needed to be added to the engine to make my real time light mapping possible:



The cool thing is the last type is actually a place holder for ALL single variables used by the proto. That means there are no globals used by this feature outside of this type meaning there is no possibility of variable typos and I know exactly where to go to add or delete them.

Signing Off

It's been a long one, but a good one all round.  My head is spinning a little so I will end this sign off quickly so I can give my eye balls a rest.

Monday, 11 March 2013

Monday Was Testing Day

Testing is taxing

A little word of advise when testing final release software, allocate plenty of time for it, then double it twice. 



As you can see in the above, there is plenty going on. Seem how many devices you can count, and that's just the ones I used this evening. The great news is that all the bugs have been squashed in the AGK apps and it's really just building new deployments, one tweak at a time.

Monday Meat

The bulk of Monday has been my attendance of emails and related email tasks that built up over the weekend.  I gave everything in my inbox a wide berth while I worked on my Perceptually Challenged Ultrabook app. You can read about it in this weeks blog: 

http://ultimatecoderchallenge.blogspot.co.uk/

The midnight hours where spent catching up on some reading, research and learning about what will be happening at GDC later this month. I will be there from Monday night and wanted to know the kind of things going on.

More Reloaded 

The good news is that I found some hours to work on the master project, and we are now at the stage where the objects have been identified from the large map editor project and ready to be re-created in the smaller light mapping prototype. The fun process of lighting them in real time can begin, and once up and running, moved back into the main map editor source (which still takes 3 minutes to compile so I rather like the idea of working in the smaller prototypes which take 3 seconds to compile).


02:59 AM : New Source Layout

To help fast coding, I have split the source code between the types used and the main code, this way my small prototypes can use the same data structures as the main app. My plan is to only make a final compile of the main map editor now and again, with most of my work happening in the prototypes.  The original FPSC development way back when did it like this and I had about ten sub files with their own prototypes to test specific things like A.I, scene generation, e.t.c. Looks like I am going back to my roots.


04:10 AM : Phew, A Lot of Types

I knew there was a lot of code in there, but there is a LOT of code now from various modders that I'm only now appreciating in terms of size!  It might take me four months just to work out what it all does ;)  Amazing features in here, buried simply due to the lack of media and examples that shows off all it can do.  Bringing these to the surface through documentation, examples, assets and small games would be a great boost for Reloaded.


Signing Off

I pretty much agreed with the universe to stop coding at 4AM so I can have a sort of decent sleep and get to see Tuesday daylight. I did not get my objects in the proto but I think I got better. I got ALL the types from the engine in their own file now, so I can link with that when doing future prototypes and when I drop code such as entity control, AI handling or scene building, I will be using the exact same structures the main engine uses. Everyday luxuries for C users, but DBP users have to plan ahead a little ;)



Saturday, 9 March 2013

Friday & The Weekend

Lots And Lots

Where I to parrot off the list of things happening on Friday, it would be quite a list. I will boil it down to the fact I did a little bit of everything, and pretty much got my inbox under control that day.

AGK Project Bits

We had some problems on the old 3GS phone, and managed to get hold of one today so was able to reproduce and fix the remaining issues on that phone. A coders life is 1000% improved when the bug is readily reproducible!

FPSC & Reloaded Bits

As a way to keep the ball moving, I did some FPSC related compiles and checks to keep my hand in, but the main work will commence Monday when I have almost the whole day to get the current object placement system extracted and into my light mapper prototype. We'll then see some fireworks.

Ultimate Coder Bits

I anticipated the demand will be high to top my last video from Week Three, and it's a fools errand to attempt such a thing. I spend a few hours of the early hours looking at and compiling various audio conferencing open source projects but they are few and far between and they don't make it easy to get something up and running. All I wanted was a downloadable VS project I could compile and run, trace through the code then extract what I needed. What I got was projects requiring fifteen dependencies to link with, command line compilers and strange new tools that assemble project files for you.  The closest I got was an old project on Google code of Linphone which looked the part but on compiling threw up enough errors to make me realise this was going to be a LOT of work to untangle, with no guarantee if would be of use.

I am sure there are a number of solutions I am not aware of, but they all seem to be part of some click that I am not apart of. With time I can break in and sort my head around it, but I don't have a lot of that.  The weekend will reveal what direction I take based on this new obstacle, but there is plenty to do and I should not stop on this one issue for weeks and weeks. I can always come back to it when my brain is more cooperative.

Signing Off

Plenty to do this weekend so better get cracking. This blog goes out late due to Friday night ending about 5AM and it's writer needed sleep :)

Thursday, 7 March 2013

Thursday's Bits

Usual Bits and Bobs

As you might expect, emails and AGK tweaks kept the better part of the day pretty occupied. The evening was spent fiddling with networking cables as a recent power surge took out some of my kit. The later evening I started my presentation slides for GDC (only 20 minutes but I want to get it written and rehearsed before the big day).  Nothing to report, no bog eyed monsters, no needful things.

Midnight Strikes

As luck would have it, all my tweaks and tinkers finished squarely at 11:55PM which means I started my blog a few minutes before I was due to do a hew hours of Reloaded. My mission this night is to formalise the new object placement system in the editor (so I can draw a near infinite number of objects in the scene) and then once I have that, I can copy the globals, types and arrays over to a prototype to get the module/subroutine for the real time light mapping synced with it. The idea is that I can continue working on the light mapper using a fast prototype (i..e fast to compile) and only when it is perfect I can drop it into the editor, and of course drop it in from time to time to ensure it still syncs well.

This practise of making small prototypes that compile fast and are easy to navigate will be used for each of the new 'features' that will be going into Reloaded from scene occlusion through to massive explosions.

A mini-milestone for me will be the editor showing the entire scene from top down view without any culling of the world (no more shroud) and having it drop in baked light maps as I watch. Move a light, and just like magic have the light map do it's thing. And then to drop down and run around it, even as the light mapping is still being crunched.  Can I get it done for the weekend, who knows. Only one way to find out...

01:22AM : Boy, Dat's Fast!

Apart from battling with a two and a half minute wait each time I compile my source code, I have been enjoying myself. I thought I would interject my most recent buzz, when I stripped out all the 'static object building' of the old previewer code from the editor and just leapt directly into the scene as it was being edited.


Sure there are bits of editor graphic all over the place, but the speed was intense. I thought it was fast before, but this version as soon as you even think of touching the button it runs the test mode.  THAT is what I want to see in the final product.

I'm just about to move the editor object range to the end (around 70000 object indices in) and remove the shroud system, and then see what I have. The editor divides the world into layers for easier top down editing and I am keeping that as it's very cool. I will need to show those higher/lower layers of course in test mode so that's something to consider. I want to try and avoid looping through the entire set of scene objects each cycle, but I guess doing it once during set-up and clean-up is okay.


02:50AM : Look Ma, No Shroud!

I have now removed and forever banned the shroud system in the editor, so the entire screen is filled with the real objects and entities now, no longer will you see parts of the level represented by blue print graphics.


Another pretty cool tweak was removing the editor markers from the test level mode which suddenly made my little wonder all the more exciting. We're getting to the point now where we can 'almost' imagine we are running through the test game scenario you used to have to wait 5 minutes to play. As I am not adjusting any assets between editing and playing, the test level button remains completely instantaneous.  Just what we wanted.

The next task will be to move a part of this 'placing objects in the editor' behaviour into my prototype so I can sync the light mapping code with it. One obstacle I found was that the editor uses object instances (not clones) to represent the many objects in the scene. This is done for performance. The road block is that you cannot light map an instanced object (as it is really just a straight copy of it's parent).  My idea is to keep the instancing, but when the light hits it for light mapping, it turns it to a clone at that point. This way we can paint in the editor very fast (instanced objects), and the light mapping deals with small groups of objects as the light hits them (in batches I think). In theory, you will be able to paint quickly, the light mapped 'clone' objects follow seconds later and delete it also immediate of course. By maintaining slick fast controls for the user, and lighting coming in secondary, I can pretty much keep a good chunk of the code that is already in the engine.

Signing Off

Not going to stay up too late tonight as I am sure Friday will be a big 'close things down' day, and Friday night I will be jumping over to the Perceptual Computing universe to see if I can get voice conferencing, vertex transfer and a new board room graphic implemented in time for my next blog.  The critical goal is to turn the proto demo into a proto app, which means giving it a use. I have all the tools and code to hand, so it's just a case of doing the 'code' thing until it starts to look something like.

Wednesday, 6 March 2013

Wednesday Back On Track

Distractions, But Not Enough!

Oh yes boys and girls, I had distractions coming out my ears, but I have managed to box them all off and start my cascade of uploads before midnight. This means I can gracefully slide back into the Reloaded world and get the objects moving about in the real time light mapper.

Moving Objects

I want to test two things this evening, getting objects to update their lighting when you move them. I will start with uniform size objects. The light detection must ultimately handle scales of magnitude the original did not have to deal with but we will get to that later. For example, what if someone imports a whole building with rooms and details in one go, how or should I have that? Great question. Answer unknown.

An Aside : Ultimate Coder Latest

Great feedback from the judges of the Ultimate Coder Challenge so far, who seem to like my 'rough as sawdust' 3D rendering of the depth data.  I have some new art come in for the project, and I am very keen to wrap up the functional core of the app by week four so that it can be used as an actual communication program.  Grafting third party audio conferencing code into an existing app is never easy, but I feel more confident doing that than writing my own from zero. For more information on the Ultimate Coder Challenge, the site is updated every few days so check it out:

http://software.intel.com/en-us/ultimatecoder2

First, Eat

It's one of those 4PM start style days, so my tea was lunch and so forth. I think I will grab a bite to eat before finishing the light mapping prototype as I have the time at only 12:35AM.  I don't anticipate the two tasks for today to be tremendously difficult, just want it in there before moving on.

02:56AM : Now That's Fast

I added the object mover so the light map would respond to a moved object, and I just light mapped the object on it's own and it came back at just 65ms for the light mapping process. It's really weird seeing what is effectively light map baking at real-time speeds - spooky!

I can't stop there of course, the object inevitably casts a shadow from any light sources near it, so it will influence lots of other objects, but I wanted to share that revelation.


04:14AM : Sorted

I now have both 'light moving' and 'object moving' calculations for real time light mapping, which means when you are editing, and you move an entity or light, it triggers the system to start light mapping while you carry on working. Only when you stop moving things for more than a few seconds will the new light mapping render manifest itself.  Here is a quick video of the latest prototype with first object moving, then the light.


Signing Off

The next step will be to go back to the editor and organise the object system to use our new per-object scene building system, with the new light mapping at the heart of it.  The theory also is that even as you start playing the test level, the light mapping is STILL working, so you really don't have to wait at all for any intense light mapping work to finish, you can drop in, test some entity or logic, then back out and carry on editing, all the while the light mapping is working hard trying to melt all the cores in your PC. 

Tuesday, 5 March 2013

Tuesday Tractor Beam

That's No Moon

As fate would command, I am being inexorably pulled back into the AGK world with enough 'little jobs' to pretty much fill the day with.  New tweaks and niggles that makes sense for me to work on than to pass it on.  The great news is that the fresh week of bug reports are dramatically reduced to the point where it really does feel like ticking the last few boxes before the project can fly.  Fear not campers, I shall not abandon the people of Reloaded, and once the clock strikes AM, I stop where I am and don my FPSC gear.

More Lovely Artwork

To keep you happy, I have managed to wrestle another great video off Mark to show you, this time it is something you might find as you wonder through your newly moulded and grassy terrain.  A majestic waterfall.


What wonders will you hide behind this great looking edifice? A secret passage, lost treasure or the bones of an ancient water God who will emerge to do battle and counteract your flame thrower powers!

3:35AM : Ah Well

As it happens, the coding gods decreed that I should bury myself in tweaks and bugs of the AGK project for many hours after my prescribed cut-off point. The good news is that I have three new builds ready for testing out in the ether, which will buy me another full day Wednesday on Reloaded.

Signing Off

Unless apps starts exploding, I will make it a point to disregard any AGK distractions once I wake up later today, as I really was on a roll with the real-time light mapping and want to get it into the editor as soon as possible.  Until that faithful day, I bid thee well.

Monday, 4 March 2013

Monday Celebration

Lee Reloads!

That's right, this is the first actual day where I have only one project (well, two) left on my plate and it's all Reloaded baby!

I am tingling at the thought of immersing myself in the land of Reloaded and not coming up for air until I really have to.  My amazing artist has been producing art since the start of this year and moreover, the ideas he has to enhance the FPSC world are contagious!

I am sure Mark would not mind me sharing his latest experiment, this one launching way ahead into the world of terrain. As you can see we're going to change the face of Arrakis with this one!




Not to get ahead of ourselves, the current mission is to get the editor up to speed quickly. My pro-brain is screaming at me to catch up and my fun-brain is excited about working in full-on 3D again, so both sides are ready to go.


Perceptually Challenged

I also found 26 spare hours over the weekend to advance my Perceptual prototype for the Intel Ultimate Coder Challenge which turned out quite well all told. Getting some nice comments already from the 'Internets'. For more juicy details on this, check out my sister blog: 

http://ultimatecoderchallenge.blogspot.co.uk

I don't like the blow my own tuba, but I've been getting some very nice comments from this latest edition of the blog, so I might be onto something with this little app idea. My mission for next week is to outdo week three!

Reloaded Diary Day

Such is my fancy, I have decided to do another 'day in the life' for this evening to track the highs and lows of my first 'proper' day back in the Reloaded camp. The last time we saw it, we had the editor tamed into jumping directly into our 3D world at the press of a button. No more build game. The downside of course is the level looks awful and it's not very nice too.  I want it to look much nicer and for that we need real-time light mapping running in the editor while we paint levels. Once this is done, dropping into the world at any time will look much less un-nice and we'll have progress. Before that of course we need to throw away the old object management system which had a finite limit for editor based objects (which explain the 'shroud' some of you might remember from FPSC of old) and replace it with one that produces as many objects as we need (and I am talking millions here). Rather than devise ingenious ways to combine data into highly efficient meshes and what-not, I am just going to dump the whole lot out as DBP objects and let the future occlusion system handle what gets drawn.  It also means maximum flexibility during the edit/play process which might lead to new and exciting features as yet undreamed of.  Only when you press 'BUILD FOR REAL' will it turn the objects into highly optimised and efficient mesh groups, at which time you won't mind the wait as you're building the final standalone executable and you want THAT as efficient and small as possible.  

11:50PM : So that's where we are now, and where we're going in the next 24 hours. For the action as it happens, read on.  I have started my background music for the evening, which I think you will approve:

http://www.youtube.com/watch?v=_fj5pIpjS14

12:30PM : I often pop in and out of my emails so they don't gang up on me, and as it's FPSC related I wanted to note that there will be a new BETA16 of V120 up on the forums soon and also that I have just completed the installer to a new FPSC model pack which is wicked!  Lots of WW2 graphics, including vehicles and tanks, and some pre-created level for you to run around in. The author did a great job here and I think you will like the pack when we release it later this month.

2:35AM : Okay, so I rescued the DBP DarkLIGHTS source code from another part of my archive and dropped it into VS2010 to get it up and running again. This will be the module from which I will create my real-time lighting system. I created a new quick prototype so I could focus on the ability of the module to light map an object that was already light mapped.  The reason for this is that I could then re-run the current light mapper on objects without having to do the complicated double buffer hide/show trick I did in the P001 prototype. It turned out this was remarkably easy to do, and my simple demo was able to light map the same object over and over again. Hurray!

I then created a grid of 1600 objects and placed the light above them, which took 32 seconds to light map each time. I activated multi-core in the module and this dropped to 15 seconds. I lowered the quality a little which helped some more. I then added code which ensured the light mapper would only deal with objects that where within the range of the light rather than the whole scene. This was a huge feature as it brought the time down to 1.8 seconds. Not bad from 32 seconds wait to less than 2 seconds!

Naturally there are some issues like the OLD objects which where lit before the light was moved still use the old light map information, so I will have to extend the process to include re-lighting them, and I will also need to free up light map textures which the new process replaces. I tried a quick and dirty release on them, but of course in threaded mode other objects may still be using that texture so I commented it out for now as the member leak was not huge. The grand solution is to collect all the dead references and free them at once when LM Reset is called. This last command is only needed to free up the resources used during the light map process, and ensures each light map event is clean and does not carry garbage from the previous sessions.


The reason for the pretty red backdrop and nice font is a policy decision we made at a recent strategy meeting.  That was, to avoid showing you what I like to term 'programmer art demos', which might cause offence to some viewers. It was decided that if we come from a position of working high end materials and artwork in earlier in the project, it will improve the overall project and create a culture of quality in TGC Reloaded lab.

My plan now is to add another light, sort out a refresh for the left-over objects and see what I can do to clean up the code and anticipate what else this system will need before dropping it into my editor.  I am also concious of the fact I need to be up in the AM on Tuesday for a delivery, and I also want to eat something and perhaps watch half an hour of 'Mitchell and Webb' which I have rediscovered on Netflix.

03:49 : Just finished the P003 prototype, and achieved everything I wanted relatively painlessly. The system now restores the light maps of objects no longer under the influence of the edited light, it can handle multiple lights in the scene and the icing on the cake, it will only include other lights for those objects touched by the process, rather than ALL lights. These are all the ingredients I needed from my real time light mapping system, and it means I can eventually drop in lights willy nilly, move them about, change their colour and range, and the scene will update objects that need to be changed, leaving the majority of the scene unaffected.



Above is a small video of the technique. Before I leave P003 prototype, I think Tuesday would be a good opportunity to add in some objects to move about, so it works with objects as well as light entities.  I will also import some LARGE meshes too, to see how the light map handles imported geometry which is a new feature of the Reloaded product.

Signing Off

I am glad to be back on Reloaded full time again. My AGK apps where definitely worth doing and represent apps that have a very good chance of charting really high and staying there, which will be great ambassadors for our AGK technology moving forward.  Hopefully I will be able to reveal what they are soon, and perhaps as soon as March.

So in closing, thanks for your patience last week and the weeks before that, and baring further distractions I have now made my new home in the land of Reloaded and shall begin building immediately.

Friday, 1 March 2013

Friday Night Off

Off The Chain

That's right, after a crunch week, it's time to stop crunching.  Just have to build some final RTF style additions, add In App Purchase Restore, test on three devices, upload them all, test them while they upload and make sure nothing silly crept in.  Apart from all that, I am off the chain.

An Impromptu Gathering

During the week I found an hour to exchange banter with the crew of the Ultimate Coder Challenge, and it seems we're all on the same page as to where we need to be and the potential of the technology in front of us. Bob, of Intel, has kindly edited out the best bits and made a video meddle.


A long way to go, but I think we're all excited about the journey. More on this next Monday!

Signing Off

And that's all folks!  With a little fortune, I will be in the full sized Reloaded seat on Monday.  Of course, I am a realist and the universe will always find things for me to do on projects I call 'finished ;)