I find that I am really enjoying the gameplay with elevation involved. Exploration, especially with tall trees added, has become quite enjoyable even if there is really nothing much to find or do. There are a few tweaks that need to be done, however. One is that I probably ought to bring back path previews, in addition to the walkable spaces preview. When you press 'M' or click the Move button, the movement preview pops up highlighting all spaces that you can move to given your current number of movement points. However, with the addition of elevation (with its restrictions on how far you can step up or down) the movement path to a given location is no longer all that straightforward and easily guessed. Often, you will click a spot thinking to get near a resource node, only to find that the actual path goes the other way, passes two resource nodes on the way, doubles back, passes the node you were targeting, and stops on the far side of it, wasting a few points that you could have saved by stopping when you first encountered the node, or when you first encountered the other nodes.
In previous iterations of GC, I did include a path preview that showed the actual path you would take to the location highlighted by the cursor, continuously updated as the cursor moved. I'll probably end up bringing it back.
With the re-addition of trees, visibility has again become a critical dimension to exploration and tactics. In a previous iteration, I included a material for characters and objects to allow them to show a "ghost" when occluded. However, after a couple hours playing on the map as it is, I question the wisdom of bringing that material back. I think that the visibility issue can have quite a powerful effect on gameplay, adding a sense of mystery and suspense.
I have arrived at "the biggie" when it comes to moving systems over to C++: level generation. Level generation is actually the main problem, in regards to the issues involving tolua and the garbage collector, since it involves several instances of 2-deep nested loops implemented in Lua code, with creation of bound API-exposed objects, both locally created and returned as values from the API--the biggest no-no I could possible do. I would estimate that at least 70% of my performance issues stem from this level generation code. This code is badly in need of a revisit anyway, to make it more flexible, so that will be my project for the next few weeks. (Work allowing, of course. Also, I'm heading out of town for a week on Friday, so my efforts during that time will probably be sporadic at best, non-existent at worst.)
I also have some optimizations in mind for the landscape hex blocks and materials, that hopefully will bear some fruit.
Edit: Oh, also I am working on a method for creating trees like these. Those trees look awesome to me. Unfortunately, Blender doesn't support editing vertex normals to accomplish that task. So I am writing some code right now to accomplish it in-engine. Hopefully tonight after work I can get a test asset done as a proof of concept.