Friday, 29 August 2014

Blog Spike

Had a nice spike in my blog readership, probably due to the flaming comments section over the last two days :)  Again, had a great pure day working on ambient occlusion and my little system can now light map on command, skip any light map objects that have already been lit, invalidate other entities that share an light map with one that has been moved/deleted/invalidated. It can also bounce between lit and non-lit to mimic the movement from IDE editor to Test Game. All this is in the integratable prototype and once I have solved one last 'strange' crash, I will be moving it to the main engine for final integration. I will then stick it on an 'F' key and see what happens :)


Also got some great new art in today, featuring new concrete columns and some military/outpost decals which you can slap onto the side of anything you want, giving the place a little personality.

In other close of week news, the Construction Kit is marching along, now with the ability to switch between building block themes, switch texture variations so the tile based block building process looks less formal and more random and is just about ready to involve an artist to produce the high quality geometry and textures we need to make the CONKIT results look topper. As you might have guessed, the theme of the first set of 'prefabs' will be Concrete!

I had some more shots prepared, but I think I will avoid further flame and hold it back until I can show a genuine leap forward, that is, integrated into the Test Game and using the new static_basic.fx shader I am writing for the specific purpose of creating a fast and nice looking static geometry render. Until then, enjoy your weekend and thanks again for your encouragement!

Thursday, 28 August 2014

Baking In The Engine Room

Freshly recovered from fighting yesterday's flames, I am back, big as life and twice as ugly! Spent the first few hours sorting out some character ragdoll and waste twist issues, emails and other small touches, but spent most of the day working on the Pre-Bake Ambient Occlusion code (finally).


Here is the present HIGHEST shader with everything ramped up high and no real-time shadows present, to give you an idea of the raw clay my pre-bake is working with.  After applying my new lightmapping process, we get this:


As you can see, because we used a simpler shader with the light mapping texture, we have doubled the render frame rate, and the ambient scatter and directional light shadows bring out the depth of the scene.  I will be introducing stuff back into the shader such as bump mapping, specular and other touches but our watch word for this work is performance which retaining visual quality, so hopefully we can strike a good balance with this technique.


In other news, new art is being formed for a more interesting set of modern day scenes, including lots and LOTS of concrete. As ambient occlusion on terrain will take some time, I figured I would get some entity floor down so we can see nice ambient scatter on the ground. It turns out these extra pieces will also make for some great building blocks when creating game levels too!

Once the pre-baker is integrated within Standalone Export (and perhaps even Test Game) and seamlessly working, I will switch my focus over to some serious performance work and see if I can reduce the overdraw currently hammering graphics rendering performance. This technique above should allow me to make some savings inside the shader, and other rendering processes overall, and get your FPS back to a high level.

Finally, for those users moving on to pastures and Engines new, the best of luck with your future projects. Also remember, you have life-time updates to this technology you helped create, and you are welcome back to check our progress any time!  I can guarantee that performance and visual quality will improve and our final release will be an awesome game creator!

Wednesday, 27 August 2014

Big Steak, Small Sleep, Late Code

It was a meeting day today with almost six hours of solid talking (mostly from Gabby Lee) and it was topped off with a Guinness and 16 oz T-Bone. Naturally when I got back into the house, it was time for a Sueno :)  Stirred into a sort of consciousness about 6PM and felt like coding my little fingers off, so I did. Plenty small but crucial fixes towards the next build, and also managed to catch up on some emails too.  One email was from my artist who has more cool stuff to show, and will shortly be converted to entities for my level making fun.


In addition to these, I have a series of concrete and steel wire assets cooking which will really allow some awesome scenes to be knocked up.  I look forward to revealing those shortly too!

My intent was to do some pre-baking ambient occlusion to give myself a booster feel-good result, but when I looked at all the little but essential tweak items, I decided to clock those off instead to keep things solid. I will do the pre-bake stuff Thursday as I have a fresh day on that and should get some good progress!

During the meeting we did discuss a possible name change for our eventual Steam launch and spent a good hour just bouncing some crazy ideas around. In a funny round-about way we returned to FPS Creator, perhaps dropping the Reloaded part and expanding the FPS to mean "First Person Simulator" so we can enter non-violent markets such as schools and other kid-friendly organisations.  I am opening the floor to any readers of my blog to throw some names at us while we decide on this critical question. Who knows, you might come up with a name that resonates with the team and we adopt it.

Tuesday, 26 August 2014

Houston, We Have Triplanar

After a three day bank holiday break, I returned to a huge inbox of questions, action points, feedback and comments from all across the Reloaded spectrum. Took a while, but whittled them down to five, and one of those was a useful email from Rick showing a great tutorial on Triplanar terrain texturing. So well described was the technique, that it formed quite quickly in my head and I was able to see how it could be grafted to the current terrain shader.



As you can see, the rock texture is not stretched now and uses it's own XY and YZ texture UV look-ups to create a perfect vertical mapping. It cost me a little performance (from 205fps down to 187fps) but will measure less than 1-2 fps when down in the 60 fps range.  For this trade-up in visual quality, I plan some more aggressive performance work to get that back with interest.

We also had a team meeting just before the holiday break and it was agreed that performance be given the highest of priorities where-ever possible.  To this end I will be working on shadow baking and render reduction so that we can get high frame rates on the lowest of hardware (integrated graphics).

The good news is that I have already made a good start on this process, and I will be getting some extra modern day assets this week which will allow me to show off what this new pre-bake step can do in terms of visual improvement and overall performance increase. I was using a new Ultrabook this weekend and was able to run around a small scene with characters chasing me and weapons free action at 70-90 fps, so we are not too far away from where we need to be.  Watch this space for some new 'pre-baked lighting' screen shots which should be worth a thousand words :)

Thursday, 21 August 2014

Short Code Week

I am off to a PR meeting Friday so this will be a short four day coding week for me. Today I finished the UNDO and REDO for terrain painting, and added these to a new EDIT menu on the IDE.  Improved weapon accuracy system so the whole weapon set are a lot more accurate, allowing inaccuracies to come from in-game motion rather than built into the gun. I also added new fields for RANGE and DROPOFF in the weapon entity properties so you can control these from your level editing session, and they work a treat!  You can now fire through fences again (and another other transparent entity), and I have fixed the distant black issue on LUSH2 terrain, and did a little command line magic for Ravey who will need this in a week or so.


Also got a nice new preview of more modern day asset items from Adam, so I cannot wait to add these into the demo level once V1.009 features are bedded down.

The next things on my task list are more small but important editor and engine tweaks, a closer look at video memory use to see if I can make some big savings and avoid those quarrelsome crashes that occur as a direct result of running out, getting characters to explore INSIDE buildings and finally looking to finish some level of support for the ambient occlusion light mapper which has been pushed to the end of the V1.009 list due to it's relative importance compared to bug fixes and vital improvements to the editing experience.

Probably won't be a blog Friday as it will be a LONG day, but I will tinker over the weekend and might provide an update then. If not, I will write again next week and until then, have fun and enjoy your weekend!

Wednesday, 20 August 2014

A Non Widget Day

After many days of widgets, widget for breakfast, widget for dinner, widget for tea, widget for supper, I finally wrestled myself some non-widget tasks to make my Wednesday more fulfilling.  I write this blog at 3PM (early) as I wanted to record a little micro-victory in that as I was creating the REDO code, which I had given myself a whole hour to work on, I started to craft in the ability to add Entity Move to the list of things you can Undo. Great I hear you cry, but that would have extended my original hour and the knock-on would have been EVERYTHING else on my list shifted on!  I took the decision to add it to my task list, but not on Wednesday's list. There it can sit and marinate in a little quality time until suck time as a decision is made which day it shall be coded. This might turn out to be a better strategy to get more tasks done in a day and stays eternally vigilant about tasks that distract!


Other tweaks so far are the File Menu now has the IMPORT MODEL option, which will be having it's debut with V1.009.  The black texture on standalone model issue was finally fixed, which now allows all multi-material models to work in test game AND standalone game. Against my better judgement (on the grounds of performance) the engine now supports these types of models and the store already features this multi-textured leviathans which certainly expand artist choice. I may come back and optimize how the engine handles these down the road :)

The remainder of the days tasks consist of some gun accuracy work and some small editor tweaks and improvements, and in total will represent a good amount of work for Wednesday. In other camps, Ravey is doing well with Steam SDK research and Simon is charging full steam ahead with the Con Kit with a special focus on how the various components will be textured.

On a personal note, my favorite mouse, the one I went on eBay and replaced like for like when the original went scatty, is now exhibiting a strange 'double-left-click' issue every now and again which is starting to get a little noticeable and ever so slightly distracting (maybe 20 times a day). A mouse is a personal thing and finding a replacement is a hard task!  In other animal news, I discovered a Mole had been making it's way across my newly laid grass lawn (well not lawn, big flat area of soil with grass seeds coming through). Funny thing is, the line was almost perfectly straight, a compliment to my earlier work of removing all the rocks and debris from the dirt. To be continued...

Tuesday, 19 August 2014

More Widget Work

I did not anticipate the widget taking so much time, but with the addition of scaling per entity instance and having to store this, and handle it, and various UI changes brought about from a conf call yesterday, it grew slightly. The good news is that the current incarnation is done, and Wednesday I look at adding a free flight system to the editor so you can fly about but get back to top down whenever you want. Hopefully it will all make sense by the time the alpha testers get a hold of it.

I also found an hour to solve the black texture issue on standalone exports, which involved going through the model files one byte at a time, but it's in there now.

A short blog today as I need to eat, and skipped lunch to play a little catch-up.  Had planned to do a little ambient occlusion work but just ran out of minutes for Tuesday :(