@Lee, thanks for putting on the flameproof coat to brave the forums. I have enormous respect for the product you've made, despite the misgivings I may have with respect to what's going on with it at the moment.
As someone who's had the assiduous task of practically living in GameGuru for the past 10 months as I write my book (which is nearly ready to go to the publisher!) I've learned a lot. A lot more than I think most people have with respect to GameGuru. There's tons of information on GameGuru and initially my goal was the simply aggregate the information into one location so people could have it.
I've spent hours pouring through C++ code to find information on simple functions that had no documentation. Debugged Lua and traced out AI code simply to properly write how things will react. I've learned how to manipulate shaders and functions that exist within GameGuru but are only known to a select group of people. Things that seem simple often are not.
There's a LOT of things going on under the hood for GameGuru. Things that can basically be dismissed for most as 'that functionality exists' but no one knows how to use. That said, there's also a LOT that needs repaired but is probably could be done in three to six months. So here's my big hitter list of things that need fixed, for what it's worth.
You can divide this into two separate categories.
1) Performance.
2) Function.
Starting with performance:
-- Dynamic lighting needs to shine. I'm happy to see that it has vastly been overhauled in the past 6 months. That said it still:
=== Shines through walls
=== Doesn't cast shadows the way it should
=== Doesn't properly occlude itself based on distance or location.
All of these items would really massively improve the way dynamic light functions.
-- Static lighting eats too many calories. Default settings in the setup.ini file essentially ensure that any level bigger than a simple 'few buildings and objects' will either crash or consume too much memory to function.
-- Internal graphics cards need either excluded from use or have a further restricted memory mode to prevent overflow. I realize a lot of GG users are on lower end machines but when you are running a 32bit application on 4GB of ram and using onboard video that shares video memory with system ram you are GOING to have problems. Either say 'no, you can't do this' or find a way to put them in a walled garden from a memory standpoint.
-- Objects need tuned for 'out of the box performance'. Why are trees animated, when we know that they are massive consumers of in-game performance? Why aren't there 'performance friendly' objects that are physics and collisions disabled? These are things that exist and have existed within GameGuru but are known killers of framerate. Literally the moment you spray 100 trees down, the entire game bogs down to a practically unplayable state.
-- The game engine needs to optimize end products more. There's no optimization phase in standalone generation and it's utterly destructive for end users. They produce something in the editor that's a total clump of materials and memory which then doesn't run - and they they immediately complain about. For reference, my chapter on optimization is 8000+ words. If you exclude my appendixes, that makes it nearly 8% of the book's total content. It's by far one of the largest chapters because of how MANY things the end user needs to keep in mind just to get a game that runs well.
-- Memory management: what's to say that hasn't already been said? It's been significantly improved - until you do something like lightmap or anything that becomes intensive memory-wise. Lua code uses too many globals out of the box and as a result devours further performance and memory.
-- Draw calls - a better way to track this would be ideal, along with some better measurements of how they are affecting FPS/gameplay. With PBR adding nearly quadruple the draw calls per object, this is of more than minor consequence, IMHO.
-- The widget. Look, I can tell you flat out at least part of the problem with the widget is a math error.
Please read this Lee, if you read nothing else.
The widget has a math error if your object is facing the opposite direction. It causes it to go exponential on one side and act 'normally' on the other. I took a cursory look at the code and couldn't find it, but I am positive this is what is happening after much in-editor testing and work.
Moving on to functionality:
-- The editor. Lee, you saw my email previously on this. There's TOO MUCH that you can do outside of the editor for this to be an easy game maker.
=== Please add incremental widget functionality as stated by previous posters. It would go miles towards functionality.
=== Why are 90% of the FPE settings something you cannot toggle inside of the editor?
=== Why isn't the third party setup.ini editor not duplicated and made part of the game engine?
=== Why can't we pass variables to Lua from the properties pane?
=== optimally I'd see a dynamic menu at the top (as discussed in email), along with command menus that have:
***** A way to compile/modify shaders built in
***** A way to access 'advanced' FPE properties from the editor
***** Vastly more detailed memory usage information
***** A way to properly search the entity list. Simple meta tagging and a basic in-editor search would go MILES towards functionality.
*****
AN AUTOSAVE FEATURE FOR THE LOVE OF ALL THAT'S HOLY
-- Third party programs need to be incorporated into the game engine. I'm enormously proud of the work the community had done in this regard but now it's time to bring it home.
***** A heightmapper built in
***** A setup.ini editor built in
***** Styleguru or similar built in.
***** A notepad++ or similar lua editor built in (perhaps a link to it inside of the engine via command menu).
-- Just give us an 'advanced' menu where we can edit as much as possible from inside the editor. Please. I realize you are trying to cater to 'anyone can pick up and use this' but how far do you intend them to go when you cut them off at the knees within the confines of the editor?
-- The vegetation system is one of the beast features of this engine. Please let us spray up to 4 types of vegetation. This would solve the issues of trees eating memory (spray trees like DK does and it becomes a non-issue) and would give us greatly enhanced function as developers!
It simply doesn't matter that people like me know how to do workarounds to these things - the average user DOES NOT! The entire system is underscored by the fact that it works fine if you *ONLY* build 10 or less objects in it. If you actually sit down and build a massive level, you will find it goes from being an easy game maker to a difficult one. You have to constantly go out and adjust FPE files, edit things, spray them, configure them to occlude properly so they don't pop, tune setup.ini, religiously save your game and more.
I hope, truly, that everyone understands what a monumental work this product is. It's come a long way with the improved community involvement and now needs some love from the originator of it to help get it to a place where it can really shine. I am hoping after I'm done with the book I won't be so burned out that I don't touch GG for a long period. I'm hoping I can dig into the C code and make adjustments myself to improve things but I can't be sure of that. So I'm putting my thoughts out here on this in the hope that you are receptive towards this Lee and will re prioritize this to make this engine as good as it has the potential to be.