Find below my bulletins for progress on the V1.14 update which many of you know is the Easy Building Editor feature release. Naturally, we will sneak in some core adds and fixes, but mainly you will learn about the progress of the EBE as it's various functionalities come online, and some of you will be lucky enough to be internal beta testers for the test builds prior to launch.
12th January 2017
This catch-up report covers all the work since returning to my desk to finish off the EBE (Easy Building Editor) and does not represent the work of a single day as you might suppose. The bulk of the new 2017 work has been for the saving and loading of EBE structures, and ensuring the process is fast so you are not waiting around for things to be built in the background:
* Improved performance of Gem World demo by reducing camera draw distance and adding fog system
* Changed vShadowTexCoord.z bias from 0.0003f to 0.00009f to fix realtime shadows (entity/static/char)
* Added missing DarkAI commands and additional help in Docs\DarkAI Documentation\
* Added new FAQ section to main TGC site to collect and centralise all Lee answers in 2017
* Changed SAO bias from 1.2f to 1.48f to reduce artefacts in final rendering
* Added a fix to ensure all GameGuru MessageBox pop up in FRONT of IDE not behind
* Added SAVE button to EBE Entities so they can be saved to the Builders tab
* Added code to save EBE when save level, load when load level, and load EBE from Builders tab
13th January 2017
After finishing the save and load systems for the EBE (both level based and EBE structure items), I noticed the act of constructing the 8000 cubes in anticipation of building something in the EBE took a few seconds to process (was 1000 until I realized I needed more). After looking at the work, which involved some really indepth limb creation on a grand scale, I decided the solution was to create these meshes on the fly as you create the structure, thus eliminating the initial overhead and performance hit. It's now 5:20PM and it took most of the day but the structures are now creating meshes on the fly, but I have lost my edit-mode textures, shaders and some stability along the way. Probably will take most of Monday to restore these elements, but it will be worth it as it will mean any aspect of the EBE usage will be fast and punchy!
16th January 2017
Once the weekend emails had been sorted, and the daily tasks delegated, it was back to the coding. I did decide to spend a detour adding cube mapping to the engine as I felt it was a little bit of code for a lot of value (in terms of giving surfaces a touch of depth), but it proved very elusive to implement and it's now 7PM and I am still scratching my head why it just turns out black no matter how many ways I am forcing the texture reference into the shader. All the clever sensible things have been done, so I am now suspecting it's something wildly silly. The hunt resumes tomorrow but in the meantime here is the other progress I can report:
* Increased capacity of EBE grid to handle FULL 3D volume (200x200x200 cubes)
* Reinstated FirePlayerWeapon(2) functionality
* Fixed GetAmbienceIntensity() and similar visual setting retrievers
17th January 2017
This morning I decided to offload the search for cube mapping R&D to the community so I could focus back on the EBE, and I think it was the right decision as we now have nice and fast operation across creation, editing, loading and saving. I am almost ready to make a version for the internal beta testers who have been wanting saving and loading for some time (well, months).
* Optimized the EBE creation/edit step so mesh assets are created on the fly, removes delay-start
* EBE now retains editing settings from last EBE edit site, quicker productivity
18th January 2017
I had a single crash from the night before, which was fixed within about 5 minutes and a full test revealed the EBE was solid to construct, save and reload structures so I moved swiftly onto the subject of textures. As I was wandering around my EBE creation, I spotted a lighting issue and then spent two hours researching it, as it reminded me of some feedback I received last year, and for more information, I will post details in this thread below. For the texturing work, step one was to gather lots of suitable textures. I had a few generously donated by the community, and I also knew I had plenty of good textures from the old X10 product, so I collected the good ones together which amounted to over 300 megabytes of additional content for you all. I then created a temp texture selection (my task on Thursday is to allow the EBE to construct its own custom texture plate) and started making a building, and was quite pleased with the result for what amounted to walls, floors, and stairs. Once it looks worthy of public viewing I will share an official screenshot.
* Finished off optimization and testing of the block construction system (nice and fast now)
* Added simple STAIRS prefab to EBE constructor so can quickly make navigatable multi-level rooms
* Added first-round of material and wall textures to EBE 'texture source' folder (370MB)
19th January 2017
After my usual three hour tour around the various social feeds, I continued my EBE odyssey but not before I managed to fix a spawning issues being reported in the community which I was certain was a quick fix, and it was, so expect V1.14 to also include the ability to respawn characters in any state to keep those armies charging towards you. On the EBE front, I finished adding code which would allow anyone to right click a texture slot and replace the texture within the plate with one of your own, and it detects if that texture uses Normals and Specular textures and uses those as well. I still need to do further work, not least getting the texture to the correct grid reference and to deal with sub-pixel bordering so I can have seamless textures even though we are using a texture atlas. I will also make the final textures auto generate mipmaps so the end result looks good from any distance. I was also kindly sent some useful cube mapping HLSL code, so I may have another stab at that if I can stay ahead of schedule with the EBE. Here are my fix notes for the day:
* Fixed issue of ResetPosition() command not returning characters to the specified location
* Added mipmapping to EBE grid system so pixel swim has been eliminated from gadgets
* Added ability to right click on any texture within plate to choose a custom texture file
23rd January 2017
Some work from Friday, Saturday and Monday to come up with more work on the Easy Building Editor system, including the work to ensure the EBE structures are good with seamless and mipmapped textures. Also had time to analyse and fix a long standing issue with entities that revert to a non-lightray flag state when they switch from clone to instance or vice versa. I plan to release a beta on Tuesday to the internal beta testers at some point to test out the seamless texture work.
* Fixed PFB system to allow larger prefab shapes to be crafted and used (20x20x20 columns)
* Fixed issue of mouse pointer disappearing on file requesters after using free flight mode
* Added 'preservemode' to PFB system to allow wall types to gracefully add and delete
* Added system to create a border to the texture plate to allow seamless atlas textures
* Adjusted UV coordinates of textured cubes to allow sub-pixel seamless texturing
* Fixed CHURCH DOOR entity so it does not disappear for one cycle when closing
* Fixed issue of entities keeping their lightray mask after clone/instance switch
24th January 2017
Got plenty done Tuesday, happy with the new UI graphics for the EBE system too, so all going very well. Also making a build for my internal beta testers to have a play with, so hopefully they can assure the stability moving forward.
* Replaced Freaks\Elhumongo and removed Viral Outbreak\Jaws and Medusa from asset library
* Fixed issue of 'Site Switching' only works when click another EBE site - not any entity
* EBE no longer persists if start a new level whilst creating an EBE structure
* EBE no longer crashes if edit an structure after an attempt to lightmap it (F4)
* Added single stage UNDO and REDO to EBE editor for convenience of one-off mistakes
* Added Help Panel to show keyboard shortcuts for the EBE editor system
* Added improved STAIRS and new COLUMN PFB build shapes for complete basic set
* Added two built-in preserve modes for more intuitive building for new users
* Fixed issue of staircase rotation corrupting right facing constructions
* Added subtle arrow to cursor highlighter so can determine rotation direction
* Created simple TALLBUILDING to demonstrate EBE loading and possible multi-storey
25th January 2017
Had a good battle with the subject of material responses within the EBE, and it opens a small can of worms, but I think it's important that brick should act like brick, metal like metal and so forth so spending the time getting this one right. Almost there, and the beta for the internal testers goes out slightly short of it working but Thursday should see it finished (and the physics system improved to handle per-box-section material attributes).
* Added 9 more textures to EBE texturesource and created default Texture Plate choices
* Moved created EBE structures from inside ebebank to entitybank (ready for store selling)
* Added 'EBE Material Types.txt' to DOCS to instruct user on what the material letters mean
* Added support for assigning material references to each texture in plate
* Added support for saving and loading material information between EBE entities
26th January 2017
It turns out getting the EBE structures to have its own materials was a small world of pain, but I managed it in the end. The footfalls use material attribute data stored in the physics geometry and the bullet impact detection uses the visual geometry so I had to make some creative additions, including an addition to Bullet physics to allow my to detect the child collision shape within a compound collision object which is what the buildings presently use. I also found time to get structures lightmapping in the light mapper, and it's looking very nice indeed (shot below) with my next task targetting what I call 'texture groups' so when you modify the texture plate those changes are carried with the EBE so you can go back to an earlier texture plate to continue editing. Not difficult, but one of the last items before we can call this cake V1 done. I am aiming for a release next week so plenty for beta testers to do and after an extraordinary wait, I am looking forward to sharing our very own mini-modeler with you
* Added code to inject EBE material choices into physics for footfall sound effects
* Added code to inject EBE material choices into geometry for bullet impact effects
* Fixed lightmapper to detect and lightmap EBE structures as regular entities
27th January 2017
Well, it's Friday again, and normally a weekend of chilling and tinkering, but this is crunch week and I am not going anywhere. I have just finished the last of the EBE specific functionality called texture groups, which allow different structures to have different custom texture plates, and deal with all the saving and loading scenarios so it all makes sense. I am going to make release builds for the beta testers now, and then resume into the early hours (or at least a few more hours) on an exciting feature which lends itself to the EBE but has been anticipated long before such an abbreviation existed, namely the implementation of composite (now called associate) entities. The idea that you can stick entities onto other entities, and they remember what they are attached to. If I am to have doors and windows, I will need this, but why not make it a generic feature of any entity, that way you can use it for non-EBE adventures such as adding a fire decal to a torch entity, so every time to place down a torch it comes with a free fire
More on this when I have thought about it come more and done some experimental coding:
* Fixed issue of materials 16, 17 and 18 not converting to the final optimized object
* Added rest of material sounds back into load sequence (materials 4-16 were missing)
* Material choices now carry through to lightmapped version of the EBE structures
* Removed spikey sphere handle mesh from lightmapping process (editor mesh artifact)
* Added texture group references into EBE file to track which textures were used
* Unique filename generated for EBE texture arrangements so can share texture files
* Each EBE structure saved now has its own 'unique-named' texture set
* You can now switch between two different Texture Plate groups
30th January 2017 : Upto 5PM
Dived right back in, not too many weekend emails as I did a few hours on the EBE on Sunday, so here is Monday's list. Planning to do a few more hours once the beta has been uploaded for the internal testers:
* Added SpecularOverride to static_basic.fx shader so specular setting can work in prebake
* When EXTRACT entity, any child entities are also extracted, moved and rotated as a group
* When pasting extracted entity group, child references are maintained
* Fixed issued with group highlighting disengaging when extract/paste process over
* Built-in functionality to save and load parent/child associations for FPM levels
30th January 2017 : Upto Midnight
With the help of some coffee, I cracked on up to midnight with some more work, specifically getting my doors and windows working with the EBE and seeing if I could cut holes in the structure to accomodate them, and it worked nicely. It could be better, but it's good for a version one until i can come up with a smart way to make it super quick and intuitive (and from suggestions once it's out the door). For now, my latest:
* Added new field to FPE called "offyoverride" which overrides Y offset to correct models
* Added new scifi door/lift sound effects to the audiobank folder
* Added new doorautolegacy.lua script to control a door frame animation (proximity)
* Now the entity link system disables the 'findground' system for better connecting
* Added new 'GetEntityAnimationStart and GetEntityAnimationFinish' LUA commands
* Added 8 new doors with frames to entitybank\fixtures\doors folder
* Added 5 new windows with frames to entitybank\fixtures\windows folder
31st January 2017 : Upto 4PM
Okay, two betas created today so far, probably do a few more hours of testing and then I will be ready to release on Wednesday
There are a few small things I would like to add such as including child entities with the EBE save, but I can sneak that in during the mandatory patch update that will probably be required (a thousand testers is better than twenty). As you can see at the end of my task items, I included some basic support for characters so they can run inside and out of first floor building structures, but of course when I work on AI they will be able to run up stairs and enjoy some enhanced intelligence. My mission will be to create a character that with the same gun and ammo, you simply cannot beat, such that you will be asking me to dumb down the AI in a future update
* Added 3 new roofs to entitybank\fixtures\roofs folder
* Updated F1 help screen to show 'L + DRAG = Link Entity' functionality
* Reset EBE editor state when starting a new level
* EBE entity no longer corrupts when enter and exit the entity LOCK system
* Prevented child entities from detaching when mouse exit and enters edit area
* When PGDN EBE cursor to ground, will now reset to zero layer even if grid size > 1
* Added new ROW shape to the EBE prefab shapes to allow quicker hole punching task
* Changed preserve mode for Column so it does not respect cubes next to it
* Added special case for EBE grid size so ROW shape can match 1 cube high dimension
* Fixed issue of EBE surfaces that share materials no longer sharing texture ref
* Adjusted visual defaults of GameGuru to prefer HIGHEST and stronger color settings
* Fixed LightRay shader to accept the adjustment from the Lightray Mode slider
* Finally removed the EBE grab marker from the lightmapping blocker list
* Adjusted the EBE entity grid offset to match regular 100x100 global grid system
* Written 'forcesimpleobstacle = 3' for all EBE structures to give them better AI
* Updated Door and Window Frames to use 'forcesimpleobstacle = 3' (as above)
PC SPECS: Windows 8.1 Pro 64-bit, Intel Core i7-5930K (PASSMARK:13645), NVIDIA Geforce GTX 980 GPU (PASSMARK:9762) , 32GB RAM