I am currently developing a game. Originally it was a web-form based RPG text quest, written in Java, with UI framework. It grew from pure text quest engine that I wrote in an couple of hours - basically eternal while loop with simple handler of input choices, based on resources. No thing interesting.
Then I created, due to inspiration, simple Battle Arena in C# + WinForms - text based pseudo random imitation of battle (high level character unable to defeat low lever though. But for example same level characters had a result based on pure luck I suppose (they could parry, block, cross the attack based on their attack and defence + some kind of luck (random generatio)).
Then I decided to concentrate on writing real text game with the desire to port from C# to Java my battle arena. However I was not able to implement it fully because I got tired writing resources for it (I mean for example I had dialog system similar to Mass Effect where different choices led to different results + ability NPC behavior varied depending on whether I am doing NPC quest or etc. It was so hard to write all this routes) - I had dialog system, different stats, different skills, inventory, equipment(armor, accessory), leveling (at least I added mechanism for it - I did not implement it though), different NPC in different locations, basic descriptions of locations, prototype of WIKI for skills, enemies and etc. As for battle arena - I created the UI platform it but did not port the backend.
Also I had basic threading - at least I had ability to set daemon tasks - like aging of NPCs (I could create tasks in resources by specifying want task, what stat affect and for whom, its start and end time). I additionally added saving/loading functionality via serialization. Nevertheless as I dropped development it got stuck on < 10000 lines of pure code. Nothing special.
But anyway - I got tired of writing resources for it (I had to create SDK for it, I wanted to use C# and its Windows Forms but It was also rather tedious. After all I prefer pure coding over everything).
So I decided to rewrite everything from the very beginning, but using my Java experience (it my main skill as I am working most of the time with Java EE) in C++.
Well that was an introduction.
As for technology stack I decided to use SDL + GEGUI, backend - C++ and Boost + some additional libraries that I'll find useful. Also I use Sqlite as a data storage and I'm planning to use IDL - interface description language - some kind of my own XML which allows to describe facilities for UI. Basically declarative UI. For AI I maybe use Lua - because I am interested in learning it.
For communication with Sqlite I decided to use python(Sqlite support is basically integrated in it) - I've been waiting for its use for a long time - and for parsing XML (beautiful soup).
As always I started developing from backend - to be more precise - repository level -> facilities for operating with database. I created C++and Python bridge, though I haven't fully leveraged it yet. Anyway It allows me to communicate with python.
However I found out that some things are simply too time consuming to develop using C++. It's of course interesting to implement but still - something like for example compressing/decompressing of files, database communication or recently dll memory loading are easier to do in python than C++. It's easier to create data exchange between python and C++ then writing this in pure C++.
I understand that such I approach won't work for game runtime - if I had to compress file during game runtime I had to write it in C++ and I won't have any slightest idea to use some Java language wrapper for renderer, but at the same time during game resource loading - it's better and easier to operate with higher level abstractive languages.
So my the question is - could it be that scripting and languages with higher level of abstraction have its best use in all the facilities that do not lie in game runtime? It will allow not to drop game runtime performance but at the same simplify the development. Because a lot of things was easier to do in Java and sometimes I though to write some intermediate layer for C++ to communicate with Java using JNI, or I even had ideas to use C++\CLI when Java was not a real helper or something I like in C# better.
P.S. Sorry for the wall of text

