Friday 31 January 2014

Beta Imminent - Start Your Stopwatches

Work

Another good day of Core tweaks:

Jump doesn't always work
When running on a bumpy terrain you can trigger a hurt sound. This should not happen (it's not that painful!)
Water splash plays when you are clearly not near the water
Sometimes when fall from great height, it does not hurt at all

Also lots of testing, which fortunately did not bring up any new issues, which is always nice. My aim is to start the final beta upload(s) before midnight so you all you UK users will be expecting a download around 3AM if you are still up by then :) US users have a more civilized download time of 9PM (ish).

Play

From Saturday I am away for a week to recharge the old batteries. My idea of a recharge is to throw myself off mountains at some speed (whilst conducting research into physics and terrains).



During that time I encourage you to bash the ballast from the beta and have some juicy feedback for me on my return, when I will continue working on Core features. That is, if I make it back ;)

Thursday 30 January 2014

Into The Core

Work

Core tweaks today - took over 12 hours:

Dialogue box now says "Saving your game as standalone..."
Grass now follow terrain changes
Added message when exiting edit mode  "Saving Level Changes..."
Removed the SHIFT Cascade shadow Map View
Freeze enemy animations when in Edit mode
If no changes made, make exit from edit quicker
Add a resource meter to Reloaded so users can see the affect of adding too many entities.
Warn users when memory is low and fragmented. Graceful restart with saving.
Enemy health is taken into account when you try to kill them
Weapons no longer point through walls
Gun reload no longer shows a left arm on pistol weapon
Cross hair has a 2nd image when pointed at water no longer
Entity loader reverts to legacy mode of culling entities (CULLMODE for FPE)
Added punch1 thru punch3 sounds when characters punch and kick player

Improved water edge detection so player triggers correct sound when in shallow water

Wednesday 29 January 2014

Less Blog More Work

Work

I am getting the message loud and clear from the community that I should be doing more core engine stuff. As I was already doing core stuff, there is not much else I can do to satisfy the masses except (a) work longer or (b) blog less. As I rather like eating and sleeping, I choose to sacrifice a blog post or two.

Beta work is going well, check back on Friday for more news (around UK midnight) for the release.

Tuesday 28 January 2014

Meeting Day and Rift Video

Work

Half day meeting, half day recompiling my source code for VS2012 only (no mixing in VS2010 distributables) as I am moving to a new PC. Probably not the best time to do this, two days before a BETA launch, which is why I tagged it onto Tuesday to see what the implications are.

I got snagged by a video camera before the meeting was over, so you can see my wondering within an Oculus Rift world.


As previously blogged, I have more plans for Rift features but these can be delegated outward which frees me to core coding (which is where you will want me right now).

Turns out that in moving to the latest redistributables (which means much more solid and predictable behavior from the product), introduced a few 'interesting' differences. Enough to convince me to postpone the VS2012 switch until after I come back from my little holiday later in Feb.

The good news is that I structured the upgrade so that the main source code is still fully shared between old and new PC's so I can bounce back to the old one starting Wednesday AM. This is a great bit of redundancy too and acts as a natural back-up, not only of the off-site files but the whole dev hardware on which the code is worked and compiled :)

Play

Walked over 3 miles today, and it also looks like I can grab an early night, ready for an early start Wednesday.  The plan will be to address the seemingly random drop out crashes caused by too much memory being used. The solution in my mind is to attempt to reserve a large chunk of memory, and if it fails, detect this and gracefully restart the main executable and restore to the previous point. It's a bit hacky, but it solves the issue of losing your work with random crashes and will allow you to stay in a single editing/testing session for hours at a time which should be a welcome bonus for this next BETA.

Monday 27 January 2014

It is BETA Week

Work

After a much enjoyed weekend of walking and dragging large trees off the beach (for later burning) I have returned to the cupboard I laughingly call an office to continue my daily developer slog.

So what has taken almost every minute from 9AM to 6:30PM (with no dinner)? Well it was a single item on my task list, entitled "- Stop enemies entering water". Sounds pretty simple right, add a line of code statement to the tune of "STOP THEM GOING IN WATER" and presto, done, right?



Well....not exactly.  I had to write a prototype to scan the height field, produce a series of black and white squares which denotes those areas under water, then run an image scan which detects the boundaries of these shapes, then wipe them out and replace them with a polygon representation of those shapes, then create a DarkAI obstacle based on that data, and finally integrate it through the main engine so the characters understand which areas on the terrain are 'no go' areas.

As you can see in the shot above, the system can accurately create a contour around a feature of the terrain. I can eventually extend this feature to exclude high hills which characters should be allowed to ascent (i.e. near vertical cliff walls).  For all my efforts however, when I ran the engine the character just ran straight through my obstacle, and I could not help notice the contour was every so slightly IN the water which means my characters might be taking a dip after all.  

In coding it, I have also identified that the system needs to deal with islands inside the water pools, which are like exclusion zones within a DarkAI obstacle polygon, so that's either more polygon math for me or a small task for someone else ;)

Such is development, we build our structures, and soon realize that it's sinking into the swamp. I think a little structural support is required to make sure this feature makes it into the BETA as I rather like the idea that the enemies go AROUND the river, instead of through it!

Play

Managed to cram in 2 miles of walking in place of dinner.  I confess to eating a piece of toast if that counts as dinner. Meeting day tommorow which attempts to review our current position, and identify any critical urgent items that absolutely must make the BETA. The good news is that most of the items we announced will be in, which gives me a nice warm feeling inside.

Friday 24 January 2014

Player Start Marker Settings & Sounds

Work

Found some issues with the Standalone Saving when different levels where submitted so had to spend half a day sorting that out. Works much better now and here is another Rift shot for you Rifters, created by saving out a simple level then adding RIFTMODE=1 to the SETUP.INI file.


I spent most of the day however on the Player Start Marker properties, so now you can set the speed of the player and the fall hurt distance which both work fine. I still need to improve the sound effects for leap, land, hurt and die, and I need to add some suitable player HUD damage reaction when you fall too far to back-up the hurt sound and impact.

I also have an inbox with about ten TODO items in there, but none of them are on my Reloaded Priority A task list so they will just have to wait ;)

Not sure if I will do some work at the weekend as it's been a packed one I think. Rift, Standalone, LOD fixes and two key prototypes out the door is not bad for five days. I have some PC's to augment/repair, an attic to carpet and a nice LONG walk planned either SAT or SUN, so we will see how much Play and how much Work prevails.  Hopefully I can get to 'research' Assassin's Creed III which dropped on the doormat a few days ago.

Play

Only did 1.4 miles today as I was picking my car up from the nearby garage and of course I was on wheels coming back which halved my journey. I would have gone out again, but it was seriously raining and I did not want to drown the doggy.

Thursday 23 January 2014

Rift Added To Reloaded - Took One Day

Work

Spent the day getting very dizzy and nauseous while fiddling to find the best stereoscopic settings, but I finally found some values that worked for me. The gun and cross hair presented my most time consuming challenges, but finally managed to wrestle them into submission and you can now run around a scene blessed with Rifty goodness.


I have decoupled the weapon from the 'look around and smell the roses' camera, which means you can look down and see yourself reloading, and have moved the gun to the place it should be if your head was some way above your arms :) I am not 100% happy with each of the many components that go into creating the illusion, and I think a LOT of fine tuning is required to recreate that larger than life world of VR.

There is a VERY fine line that needs to be trod so that your final VR render creates a player that is the right scale, the right height, carries things correctly, moves properly, tilts the head from the right joint and a massive bag of very small and subtle things that break the illusion.  As you can imagine this is not a day's work to do, but I am pleased the main blocks of functionality are in place and allow you guys and gals to start playing with the Rift and Reloaded (if you are lucky enough to own both).

Friday I don't plan to let the grass grow around my feet, and I move onto the character AI work. I need to stop them walking into deep waters, firing through terrain and generally behaving like lemons.

Play

Another 4 miles on my personal walking clock, which allowed me to reward myself with a glass of J.D & Coke.  Have ten more minutes writing this blog post and then I am off to watch Time Team and eat. Might return later for 2 more hours of bits and bobs. I have a spare PC with a duff power supply that needs repairing, and a new SSD which needs to go in my newest PC as I plan (once again) to migrate to the new one and leave the old one as a backup. The reason being that my current (old) PC has the nastiest and badly messed up registry you can imagine, and it's starting to prevent me installing stuff.

Wednesday 22 January 2014

Reloaded Now Has Save Standalone

Work

So what work has been done today I hear you ask? Well I finished off the standalone saving if you must know. There is a new item in the FILE menu called Save Standalone which when selected will take the currently loaded level and assemble all the files required to play that level independent of the main software. Hurray!

There are a few files that strictly don't need to be in there such as all 18 material sound effects, but in the main, the level is scanned thoroughly and only the files you actually need are transferred to the standalone level folder. You can find all your standalone executables in the Documents\FPSC Reloaded\My Games folder, filed under the name of the original level name. In later versions we will expand this to a full Build Game dialog system (that is, when we have a game to build).

I dare say I've missed a small pile of files I could further trim out but the only harm it does is to bloat the final executable folder.  The 'Get To The River' level compiles down to 100MB in size, which is okay considering the high resolution art assets in there, but when we get down in a few more versions of the standalone exporter, we can look at reducing texture files and other assets to allow a choice of destination file sizes.

As I write this blog, I am tackling one final bug which has the characters floating about with no animations. All the files seem to be there but they have decided to turn to stone. They still move after you, they just keep the same idle pose - very odd.

I have another two hours to tag on later this evening to start some VR work (at least get the hardware setup and HL2+Rift played, and maybe quickly check that the Reloaded VR flag at least does not crash anything).  I can then start Thursday with some VR fun.  Fortunately I created a small buffer for myself on the schedule so I am still okay for delivery of the promised beta features for the end of the month.

Play

Managed another 3 miles today, which is all good for the constitution. Managed to locate the cause of the electrical fault from last week, which turned out to be an outside pump. Makes sense given the recent Welsh coastal flood incident.  New one ordered and will go in this weekend. Sorted. Also downloaded Half Life 2 as apparently it does a rather good Oculus Rift VR experience, and I want to check that out first hand :)

Tuesday 21 January 2014

Save Standalone In Progress

Work

I started at 9AM today with the mission to get Save Standalone working. Alas due to some PC technical issues and a rather long induction for one of our third party developers, I was only able to do half.  The good news is that the Save Standalone button is in the IDE and it can produce a few of the game files in the My Documents folder under it's own folder. I have cleaned up the old legacy code which was redundant to the process which means Wednesday I can finish it off and get it producing runnable levels from the IDE.

The induction Google call (which lasted over 2 hours) involved going through the integration guidelines for the new Construction Kit module which is under development. It might seem a distraction but was probably the most valuable 2 hours of the month as it will allow a relatively large module to slide into the main engine almost effortlessly.  Early prototype works is also looking very nice, and I think you will like the kinds of things you will be able to make, not least because of it's ease and fun factor!

Also got some help from Intel so I can uninstall the old Perceptual Computing SDK (allowing me to install the new one with the fancy new voice detection). I've only been able to play with the SDK on a second machine but it will be great to have it on my main machine again.

A dozen or so other delegation-style emails finished off my mandatory 9 hour day and apart from this blog post, that pretty much covers Tuesday.  I am sorry for the lack of screen shots at the moment but it really is pretty dry stuff adding save features and knocking up small prototypes. Maybe the VR stuff will be more exciting and produce some screen shots. It was scheduled for Wednesday but I want to get Save EXE finished before starting the exciting stuff!  Who knows the VR could be integrated in less than an hour, but since when has anything taken less than an hour ;)

Play


Managed to do a walking circuit today to the delight of Jack the dog.  A little rainy but as Billy Connolly would say, 'there is no such thing as bad weather, just the wrong clothes'.  Going to try and grab an early night to continue my 9am-7pm ritual.

Monday 20 January 2014

Room Blob Gets A New Name

Work

Now the alpha is out the door, aside from a few tweaks reported promptly by the community, I am full steam ahead on the beta release due out to all pledgers for the end of the month.

In order to triple up the amount of work being done on Reloaded, I created a small prototype for a third party coder to start work on what we used to call the Room Blob system. We are now calling it the Construction Kit, and will be integrated directly into the 3D Editing Mode and allow you to make all sorts of cool structures very quickly and easily. This skeleton prototype will allow the final module to slot nicely and smoothly into the main engine and allow me (and you) to test it out and give it a spin. 

I can also report the latest fixes for the BlitzTerrain module are looking great, meaning no more occasional holes in the terrain. Of course testing on this issue will be continual until it becomes a topic of nostalgia. There is also a hidden gem in the latest version of the code which allows flat areas of terrain to be reduced to just two polygons, but we will implement that when the time is right (and the rather aggressive schedule allows).

I have also unpacked the Rift hardware to give the already implemented Oculus Virtual Reality module a test run. I will need to make a few tweaks to ensure the VR simulation feels good when playing the game level as standalone, and I anticipate this to only take a day.

Play

As it was Monday, and my weekend was strictly non-PC, there was PLENTY of email backlog, lots of work and not much time to walk so I will have to walk double on Tuesday.  The good news is that I walked 9 miles yesterday which means I can get away with skipping a day.

On a personal note, it was great to read the LUA PDF on the forums today, and one coders journey into learning the scripting language. I think we made the right choice using LUA, and I am looking forward to providing a few more key commands and some more advice for the next beta version.

Friday 17 January 2014

Our first ALPHA CASCADE - Be Ready!

Work

A good day of work, although I should probably have spent it testing. Instead you will be treated to a new feature of the new 3D Editing Mode which allows entities to be summoned, moved and deleted while in First Person mode. It's pretty cool but will obviously need some fine tuning as we build on this approach to level design.  I am happy with the first version of it, and I am looking forward to the feedback from the community on whether it's useful or not.  Apart from that, this evening will be about testing, uploading the alpha to all Gold pledgers and getting it all done before midnight.

Also proof read the next Reloaded Newsletter which is crammed with news and insights so I think you will like that!

Play

Went for a short walk. I would have liked it to be longer but it's Alpha night and I need to get it out the door (and tested).  Hopefully it won't be a long one and then I can prepare myself for a relaxing weekend. Going up to a lake near a hill near here, which is a LONG trek but a great place when you get there. Taking some sardies and an egg or two. I am in training for a ski trip early Feb and need my legs to ensure five days of pistes!

Thursday 16 January 2014

Meeting Day

Work

Most of the day was taken up with a meeting, but it was very productive and allowed the internal team to create a small road map of what feature details are going into the next beta at the end of the month, and the beta after that. It's an ambitious schedule (as usual) so I don't be mentioning the specifics here (or I will be cabbaged when I fail to deliver half of the items), but you can be assured of getting more scripts and script commands in the big beta, and the ability to create standalone executables. Plenty more of course but those two are the ones I am eager to see ticked off, so you can (a) create lots of cool game logic and (b) show what you've made to your friends.

A few more key additions to the 3D Editing Mode on Friday and then plenty of testing ahead of the final release to all GOLD pledgers. I think you will like..

Play

Did not get a chance to walk today, once I got back from the meeting, it was emails, then a conference call, then this blog and then it was pitch black outside. I will be making sure I walk twice as far on Friday!  Today's meal was NOT a steak, it was a FISH WITH NO HEAD ON ;)

Wednesday 15 January 2014

Biggest LUA Script Yet

Work

Not much time to blog (or eat it seems), but I managed to finish more of the LUA script engine so it's clean underneath, no longer crashes on repeat runs, can handle health, ammo, weapons, zones and now sounds, keys and doors. Of course plenty more scripts required, but we're making fast progress. Here is the largest of the scripts right now, which controls the whole logic of a chainlink fence gate which can be locked, unlocked, opened and closed, complete with user prompts and even it's own global variable.

-- LUA Script - precede every function and global member with lowercase name of script + '_main'
-- Door Prompts 'Closed' can be opened with entity collected specified by 'USE KEY' 

-- state to ensure user must release E key before can open/close again
door_pressed = 0
 
function door_main(e)
 PlayerDX = g_Entity[e]['x'] - g_PlayerPosX;
 PlayerDY = g_Entity[e]['y'] - g_PlayerPosY;
 PlayerDZ = g_Entity[e]['z'] - g_PlayerPosZ;
 PlayerDist = math.sqrt(math.abs(PlayerDX*PlayerDX)+math.abs(PlayerDY*PlayerDY)+math.abs(PlayerDZ*PlayerDZ));
 if PlayerDist < 100 then
  if g_Entity[e]['activated'] == 0 then
   if g_Entity[e]['haskey'] == 1 then 
    Prompt("The door is locked. Press E key to unlock door");
    if g_KeyPressE == 1 then 
 g_Entity[e]['activated'] = 1;
    end
   else
    Prompt("The door is locked. Find a key to unlock door");
   end
  else
   if g_Entity[e]['activated'] == 1 then
    -- door is unlocked and closed
  Prompt("Press E to open door");
    if g_KeyPressE == 1 and g_Entity[e]['animating'] == 0 and door_pressed == 0 then 
SetAnimation(0);
PlayAnimation(e);
g_Entity[e]['animating'] = 1;
g_Entity[e]['activated'] = 2;
     PlaySound0(e);
CollisionOff(e);
door_pressed = 1;
end
   else
    if g_Entity[e]['activated'] == 2 then
-- door is open
  if g_KeyPressE == 1 and g_Entity[e]['animating'] == 0 and door_pressed == 0 then
   SetAnimation(1);
 PlayAnimation(e);
   g_Entity[e]['animating'] = 1;
   g_Entity[e]['activated'] = 1;
      PlaySound1(e);
      CollisionOn(e);
 door_pressed = 1;
end
end
   end
  end
 end
 if g_KeyPressE == 0 then 
  door_pressed = 0;
 end
end

I am knocking up a quick internal version now and then calling it a night. Have a meeting tomorrow to show the latest development progress and decide what the tweak work should be on Friday before a release for later that night. I have added quite a bit of stuff to this one, so I would have liked to do more testing, but I am sure you want to get your hands on this one as soon as.  

There should be enough meat on the script system for you to start playing with it when you get the alpha cascade, but I will making quick additions after the 17th in response to any key areas I have missed (there will be plenty).

Play

Went for a nice walk this afternoon. Rained half way through but I was totally covered in waterproof gear so I was in 'smug mode' as the wind and rain howled around me.  Nothing else to report, it's been all work. Going to eat now and see if an early night is possible..

Tuesday 14 January 2014

STOP PRESS - RELOADED HAS LUA

Work

After a very quick prototype in DBP, I moved swiftly onto making the official integratable prototype for the main engine, which took about two hours. I then tested the module in the main engine, which worked almost immediately.


I then set about creating scripts for collecting ammo, health and weapons. Then player win zones and checkpoint trigger zones. It got to 6:45PM, my clocking off time, and I was just short of getting Checkpoints to work.

The great news is that the integration went very smoothly. Thanks to the DBP LUA plugin I could dive straight into the engine side of things and get stuff working. As you can see in the shots above, the script is very nice and readable, and you might start to pick out how you yourself might start coding some game logic.

Plenty more to do on Wednesday, with more scripts, more actions for sound effects, music, video playback (maybe) and of course clean up the source code to remove all traces of the old FPI system and entity members. I also need to build an internal test version on Wednesday as well so we have a few clear days of testing before the final release on the 17th.

The bottom line, and the grand finale of this blog post is that when you get your mittens on the ALPHA CASCADE version, you will be able to start writing LUA scripts and attaching them to your entities - hurray!

Play


No walky today, but made a small bonfire and burned some cardboard, so that was fun! Pretty much the rest of the day given over to LUA scripting as above, it was an important and very serious bit of early work. No play today!

Monday 13 January 2014

One Task Left; LUA

Work

Some good work today, identifying the hungry nature of buildings on the instance stamp system and reverting them to use LOD instancing solved the disappearing building issue, tweaked some easy B's from the master list scheduled for the alpha which left a few hours to look at the last large task which was scripting.

To begin the implementation, I decided to use the existing LUA scripting module available for DBP called 'Unity', which offers a very simple mechanism to load and apply scripts to DBP source code.  I had the fear that this old module might not play nicely with the new version of DBP, but they were unfounded. The module performed very well and within an hour I was able to create a LUA script, call LUA functions, read LUA arrays and set LUA globals. Everything I needed to proceed to stage two.

Stage two of course is to create an integration prototype around this module and my new found knowledge. Tuesday (providing there are no bead attacks) will be all about scripting, and creating a foundation which will allow me to knock up the scripts to reproduce what is currently being hacked into the engine. Things like 'win zone' trigger zones and checkpoints, collecting weapons and ammo, but once these are in the bag, I want to quickly move onto collecting keys and opening doors. This is the level of game logic that will then allow you guys to take the scripting commands and go much further. The alpha implementation will be VERY basic, but it will be a solid start and allow you to start experimenting.  I am keeping a full dictionary of existing FPI actions and conditions for reference (as it is a VERY complete one), but I will be adding the LUA command lexicon on an 'as needed' basic and when I come across any instructions from the old FPI language that I consider outmoded, I will drop them in favor of a better solution.

Beyond the final task of scripting, there are a few minor tweaks and the necessary testing of the whole engine before the release of the alpha version later this week.  Looking back, there is quite a pile of new features to check out, and my only residual fear is that we're adding stuff faster than we can thoroughly test it.  I am hoping you can step into the breach on this point and feedback what you find, and make sure I don't leave my mark until the features added are solid and dependable. I'm all for new features, they are fun to code, but I am also well aware of the dangers of moving too fast. Reports on performance, memory usage, stability, functionality and every day feel of the software is still paramount to me, and I invite you to post in detail if you find something that upsets the apple cart.

Play

As much as I managed to get done today, I have been plagued with power-outs since 11AM. One minute I am typing, the next minute zero power. It's not the grid, it's something inside the house that's tripping the RCA board. Have tried segmenting a few pools of devices, but it's nothing obvious, which makes it my first non-reproducible power bug.  I've taken to switching off most appliances in the house in the hopes of keeping the PC alive long enough to do meaningful code, and for the most part it has worked.  It's a little edgy though and I really want a proper solution, but in the midst of TWO deadlines, there is not much you can do except type faster and pray.

Saturday 11 January 2014

Woodland Research

Play

It was Saturday, and I drove for over 30 minutes to get away from the PC. Found myself in a woodland somewhere with extensive walking trails. Set off at about 1:30PM and came back in the dark around 5PM. The sign said 45 minutes. Now I think about it, I think it must have the trail was 4.5 hours...


After various protests from different limbs throughout the marathon trek, I finally managed to get back to the car and get home to write this little blog.

As you know, I seldom 'switch off' and my mind constantly looks at life through the interpretation matrix of figuring out how to convert it to something I can turn into software.  I was totally struck how many little terrain and landscape details popped out at me, crying out to be digitized and made real in the virtual world.

I took lots of photos and made a few videos for the sound effects and animation effects required to reproduce the splendor of the natural world. Of course I won't have any time to do anything with them, what with game logic, AI and performance issues to deal with, but if I still have my camera phone many moons from now, I might be able to do something with the content.

The good news is that I walked 10 miles, 20,000 steps and I'm feeling buzzed. Time for food and late night FPS gaming action!

Friday 10 January 2014

First Person 3D Editing Mode

Work

I got a message in my inbox this morning warning me away from the time-sucking activity of solving the mystery of the missing buildings and focus on something new and exciting; the FPS 3D Editing Mode.  It sounded like fun, and it WAS Friday, so I decided to throw caution to the wind and set about making my player fly, create terrain and paint the world WHILST in test game. Sound good?  

Well I created the feature in quick order and I can confirm, it IS cool. Spent far too much time dynamically creating floor under my feet and laying out my paths as I walked along. Freaky cool fun!

A New Feature, Coming To ALPHA CASCADE 1.0045 On The 17th

As you can see, it really adds a new dimension to the editing experience, and starts to blur the line between testing the game and continuing the edit experience.  Expect to see more toys attached to this feature in the future!

I also got to see the first drafting of the new Object Importer module, which is looking pretty sweet. It already imports X files and textures, scales and assigns attributes, and saves out a fully working FPE entity file ready for use in Reloaded. It's not integrated yet, but the prototype is looking very nice indeed.  I would show you a screenshot but I've been warned about showing 'very early' art, so you will just have to imagine what it looks like :)

Play

Went out for a meal today (very rare for me when not on business expenses) but it was a good 'congratulations for surviving the flood meal' and you guessed it, I had another of those Welsh Black Beef Fillets!  Did not walk the dog today which was naughty of me, so will be driving to a local walking spot on Saturday and doing at least 20,000 steps to make up for it.

Free Holiday

Earlier I got a cool email offering me a bus-man's holiday to talk code in Germany or Italy, all expenses paid. Excellent I thought, code, cold beer and new friends! For some crazy reason however, Rick felt my 7 remaining work days in Feb was not enough time to do anything with Reloaded ;) It also clashed with a launch so the fates were against me this time. Pity though, I do like Bavarian beer!

I'm Finished

It's now 3 AM. I had planned to clock off at 7 PM, watch Time Team, grab an early night and enjoy a fresh start on Saturday. What with integrating the new 3D Edit Mode into the main engine, building an interim version, testing it and creating a blog video I have had to clock another eight hours to get it all done. Technically, I have now done all my man hours for Monday so I'll see you all Tuesday ;)

Thursday 9 January 2014

A Day Of A's

Work

A list has been compiled of all the bits and bobs that need to be in the engine for next week, and given A, B and C priorities. My mission is to blitz through them as efficiently as possible, not to hack them in but make sure they are rounded enough to be functional and stable.

Quest one was to quickly sort out some rendering hooks for the Rift work that a fellow coder is working on, and get that emailed away.  It went very well with some small tweaks to the Camera module and some in the new Rift module, then away for more hardware testing. Alas in practice the module keeps coming back to me for more tweaks throughout the day, such is development.

Quest two was to go through and hit all the easy A's in the list which was weapon mode change when in zoom, clean up F1 help and stop some buildings disappearing. The last one being a potential time-drainer. The first two happened to be a walk in the park, and you can now switch out of zoom mode via keys or mouse wheel, and the F1 Help Page in the editor looks much nicer. The disappearing buildings however proved more illusive...

The first job was trying to reproduce the issue, as it does not occur all the time, and then only in certain circumstances. After much ado, I managed to figure out through my earlier prototype that when you mix lots of different objects in close proximity, and more than five for sure, the instance stamp objects flicker for a second. I also notice some lag as the dynamic vertex buffers are being taxed (or new memory sought). It's the flicker which leads me to believe it is the thin end of the wedge that is causing the buildings to disappear completely in the engine.

This is the clue I will begin Friday's hunt for this mysterious and annoying little bug.   If I can crack it quickly, I can move onto the more exciting 3D Editing Mode which will allow you to stand in the test game and edit your terrains from the first perspective. Should be exciting (if I can just fix that darn disappearing bug).

Play

My bead system is working well. My magic abacus, the one that assigns 'distraction points' to individuals via the sliding of a bead, ensures that my focus is maintained through the working day.  It's good fun too!  Nothing else to report on the non-work side, no time to play games this week but should find a little time over the weekend to charge up another game, perhaps FarCry3, which still sits in it's shrink-wrap.

Wednesday 8 January 2014

Gun Work

Work

Started at 9AM and still at it 11:20PM. I had planned to clock off at 7PM to have a regular day (so I can get up again in the morning), but development is a real nag sometimes. Gotta finish!  Just going to make a small build and get it sent off and then I am done done done. And check the LOD fix works, then I am DEFINITELY done done. I hope.

Today I worked on more engine tweaks, and also some legacy support for weapons, allowing things like gun jamming, gun melee and accurate iron-sights to work properly.  Got the scope graphic working better and added some extra HUD visibility controls. Spent a good chunk of time just replying to emails, and that's not a case of 'Hello, blah blah' replies, they require me to go into source code, do stuff, write a LONG email sometimes and then onto the next one.

As you may have learned, we got the STEAM GREEN LIGHT yesterday which means we have the potential to reach a LOT of users in 2014. To that end we are going to bring in some extra help to sort out the Steam integration while I remain focused on the core engine. For a run-down of what you can expect, check out the recent NEWS bulletin here:

http://fpscreator.thegamecreators.com/wordpress/

As you can see, I have a tall order to fill which means I require the minimum of distraction for the next few weeks. Let's hope I can escape to my cave and get it all done in time.

Play

Gave the dog a walk, ate a salad and checked out my new pair of shoes (the old ones had about four holes in but boy were they comfy). Also got some new wellies just in case Wales decides to flood again!

Tuesday 7 January 2014

More Core Features On The Way

Work

As you may know, we had our monthly strategy meeting today, where we discussed all things Reloaded and looked at the various developments underway. We also looked at the internal BETA 1.005 version and the new additions made over Christmas.


One of the things we looked at was the steady work to move some classic model packs over to Reloaded. Not just through legacy support, but taking the models and applying the new transparency and collision modes required to make them work great with Reloaded. More news on this when it happens.

It was also decided that a fresh burst of essential core engine elements was also required for the product, and quick. The decision for the next 1-2 weeks will be to continue in this vein and add those missing ingredients that are preventing you from making a decent game. This means some basic scripting and logic, player, character and entity properties tied in and the various tweaks that will pull your game together. We won't be abandoning performance and memory work by any means, but we felt a few more core elements in place will make your time using the BETA much more enjoyable. When you see 1.005, you will see why ;)

We also made some decisions surrounding the game creator store, the construction kit module and the rift. More on these third party projects as they happen. We'd also like to start some competitions as well, but we'll reveal more about that through the main website.

As it was a meeting day 8AM to 4:30PM there was not much time left for coding, but I did dig out the old DBP module called Unity, which provides an out of the box, fully featured LUA scripting engine. We briefly discussed resurrecting FPI as a stop-gap but the agreement was that we should not waste time on old tech and put our energies to forward moving stuff. A simple LUA integration to get the basic scripts working was the sensible decision, and with this we can breathe some life into things like keys, doors, trigger zones, character and animal behaviors, item transactions and events, story devices and waypoint control.  The plan is to get a LOT done in January, picking up performance and memory issues along the way.

As the terrain module is relatively separate from the main engine, we are also looking to see if we can engage a known coder (a non-Lee entity) to go in and make some fixes and optimizations that will drastically benefit overall rendering, including reducing terrain segments to flat quads and adding GPU occlusion when terrain is being completely hidden.

It's quite a list we have produced from the meeting, and if my inbox can stay relatively quiet I think I can make some serious gains in the weeks to come and create a more rounded experience for all users. Once we have this, I can return to a heavy dose of performance and memory work, and execute a few ideas I had over Christmas how I can squeeze a lot more FPS from the engine.  Of course you could just use the SUPER FLAT flag and quadruple your frame rate, but that's a whole other debate ;)

Play

Apart from getting drenched on leaving the gastro-pub, and finding some new sandbags on our front door (thanks councilor Denise) the most exciting non-work news was my amazing Welsh Black Beef Fillet Steak which came with it's own cooking grill due to the thickness of the fillet.


A very happy coder left the pub that day, and even found the energy to walk the dog then dive into two hours of answering emails and writing this ;)

Monday 6 January 2014

More Blog

Work

Spent the first two hours of Monday answering emails, Google talking, updating documents and effectively 'not' coding.  Hopefully I will get a few snatches of coding done before 6PM :)

Mainly preparing for a meeting on Tuesday, and getting a demo together that shows off the features added over Christmas. Had also been waiting for some terrain LOD seam fixes for BlitzTerrain but nothing materialized. I did receive some new terrain code a while back which makes the LOD code cleaner, so I am going to give it a few more days and then probably give in and make the fix (and learn the code while I am there).

Also have some more memory work planned, especially centered around the addition of many characters to the level resulting in a rather prompt crash on my system. I have a few ideas, so hopefully one of them will fix it.

All that said, I got an email from Rick with a list of feedback from the latest internal version so I decided to do some of those instead, including a scope effect for zoomed weapons, slower movement for crouch, larger ranges for enemies, faster gravity and a new shader quality level for vegetation so that flashlight works with a new MEDIUM setting.  The other suggestions are beyond the scope of a quick fix so those will be put on the master document.

I also received some media from my artist CB who gave me a tree in two parts so that the trunk could have collision but the leaves could be non-collision. Needed some work on the physics side of things, but it worked out very well. For entity makers out there, you can specify the COLLISIONMODE field with a value between 1000 and 1999 to chose a single limb for BOX collision between 0 and 999. You can also specify 2000 to 2999 for a single limb between 0 and 999 for POLYGON collision.

I had some more testing into the memory usage and leaking is much reduced now, but I am still not super happy with the division or resources. The empty map editor/test game system with basic data structures and assets comes to 700MB. About 400MB of that is the terrain system. Given that almost half my memory budget was being gobbled up, I decided to implement a feature requested by a few pledgers along the lines of a new flag which would effectively replace the entire terrain system with a flat landscape. My idea was that it would aid analysis of the memory usage by taking the terrain antics out of the equation.  I also wanted to see what affect this would have on performance. It still needs work, but it's coming to the end of the working day and a demo is due Tuesday so I will reverse this change shortly and resume Wednesday. Early results are very good though, with my FPS exceeding 600 fps and polygon count dropping to double figures.  Exactly typical of a scene with nothing in it, but allows scenes to be built from the 'void upwards' which might have it's uses down the road.

Play

As a way to combat interruptions, I received an abacus over Christmas with five rows of beads. Every time someone interrupts me, I add a bead to their daily tally as a form of silent recrimination. It's fatuous I know, but it makes me feel better.

More sea is flooding over the wall again today, and no sandbags from the council. Nothing I can do against natures own attack except sit back and enjoy the adventure of it all.

Sunday 5 January 2014

More Waves In Wales

Play 

Not 30 minutes away is my local town, and at the same time I was making my own video of the welsh waves, this was happening in Barmouth.



The Last Inn is a great place to eat and drink, now about two foot underwater in this video. I really hope they get back on their feet after this crazy weather!

Played a little Crysis 2 yesterday to absorb some FPS features. Not as immerse as Bioshock but more sophisticated when it comes to tactical weapons, and worth adding to my list of FPS mentors!

Work

It's the weekend, so nothing official!  I did activate my 'newer' PC system which went loony last year and have confirmed the disk error is no longer happening, so I have tentatively moved some project backup areas there and tried a few compiles.  Not strictly Reloaded progress, but it does provide a haven if the worst happened to my main 'older' machine.  Technically, I am calling it work ;)

Friday 3 January 2014

More UMDH Fun and Some Flooding

Work

Found and filled in some more leakage, including some old Quad Reduction terrain stuff to save another 2MB per test game button press. Also found that each test game, all characters would be given 'new' weapons to hold, leaking the old ones into the background. This UMDH is pretty cool, allowing me to see every allocation and the stack trace responsible for those allocations in a single call, and then do a side by side comparison between snapshots any time I want. Pretty neat!  It's all command line stuff, but I'm happy there too. 

Will continue adding more and more to the test game scenarios until I have plugged all the large MB leaks. I am seeing LOTS of very small byte leaks with untraceable stack instructions buried in drivers I have nothing to do with, but I am ignoring those for now as it would take over 100 test game presses to leak a few MB as it stands now.  When we've solved bigger fish, we will come back to these little fish and see where they are coming from.

Play

Had a flood today, first time in 30 years apparently. Here is a nice shot of my back garden path:



Who knows, one day this could be an FPSC Reloaded screenshot ;)  And here is another shot for the time we have destructible scenery.



To put this into context, all those stone pillars where upright yesterday, and had been since WW2!  As I had the privilege of being right in the middle of it, I decided to take a video of the culprit waves who were out in force this morning at 8AM.




The good news is that I did not float away, the power and internet stayed on and apart from a few close calls, the flood water made it's way 'around and under' my house instead of through it. One advantage to having a house on stilts me thinks ;)

Thursday 2 January 2014

UMDH for Memory Leak Detection

Learned how to use UMDH today, allowing me to trace all memory usage differences inside the FPSC Reloaded Engine. Already found that the terrain physics was gobbling 4MB per test game and not returning it, now fixed. Plenty more leakage reported, so more work on this Friday.

P.S. Welcome to my much reduced blog post format! Zero waffle edition ;)

Wednesday 1 January 2014

First Post of 2014

Welcome To 2014

If you joined us in 2013, you will be familiar with the format and aim of these blog posts, which is to cover the behind-the-scenes activities of the development of the FPS Creator Reloaded product. The pace in 2013 was a little intense with daily posts and lots of engine back-end stuff happening.

For 2014, I plan to start a weekly (sometimes bi-weekly) post which will attempt to provide more coherent update of the main improvements and advances to Reloaded, and less on the daily waffle that a coder like me might go through. For perspective on this aspect, you can read through all 250 posts from 2013 to get an idea of a day in the life ;)  This time I will be aiming to summarize the juicy gossip that directly relates to the Reloaded features, fixes, tweaks and changes that will happen as the project moves forward.

Another Welcome

I would also like to welcome the many pledgers who joined us recently, enabling us to charge into 2014 with great momentum, and the sole goal of making Reloaded awesome.  We are also enjoying some great exposure and success in the Steam world too, so more news on that as it happens!

Back To Basics

The time for fun additions is now over, and starting Thursday I begin work in earnest to address the continuing saga of performance and memory usage. These two aspects still needs a good deal of effort before we plunge into other features such as AI, UI and FX.  My current graphics card is doing something very strange with the screen, making it flicker as though a magnet was being passed over it periodically. It's not half putting me off!  I have another 'lesser' card on standby which should solve this strangeness, and at the same time allow me to optimize for an even lower benchmark.  

I also want to make a detailed record of every asset's affect on the overall video and system memory footprint of the editing and test game processes. Utterly boring stuff I know, but once we crack it, we can pretty much leave it to service the engine thereafter and embark on more exciting developments without worrying to look back every five minutes.

Signing Off

I have a meeting planned soon to show off the cool extras I added in my leisure time to Reloaded over the festive holidays, including better melee AI, better physics reactions and decal effects.  From this meeting, it might be decided to release this as an update so you can check it out, so I will report on that when the time comes.

For now, thanks for your continued readershipness, and I hope my blog posts in 2014 are more informative and concise, more relevant and less protracted. Of course, I will continue to furnish you with screenshots of worthy stature as they occur, and maybe I will start making small videos for you as well. With the recent additions, screenshots are not really portraying some of the effects added.

Let me close by saying that I hope you had a great Christmas, and my hope is that we will all have a very productive and exciting new year.  Let's bring it!