Discussions with Prof. Vangheluwe. T-Core TransformationsLast meeting, we discussed how to perform Statecharts model transformations. We found that it would be possible to utilise the T-Core python library for this purpose. I have since received the required packages and will soon start to investigate how to implement the transformations in T-Core. Techdemo Headless ModeDuring our last meeting we further discussed running the python techdemo in headless mode to enable fast evaluation of AI. By now, this works perfectly and is able to run a complete map of 3 rounds with 8 tanks in 'deathmatch' mode in about 10 seconds, sometimes as fast as 5 seconds. This speed is crucially important, as a lot of iterations will have to be run in order to evaluate the AI at a statistically significant level. Techdemo nearly completedHere's a little sneak preview of the tech demo I have been working on. The 'lights' coming from the Tanks represent the visibility of the tank's radars. The fuel barrel allows tanks to replenish fuel so they can keep driving about and the little garage icon repairs damage. Under each tank is a health (green) and fuel (blue) bar. This screenshot was taken with basic NPC models, which are included in the download below. You can start the demo with ./python-32 game.py. It will load the defaultsession.cfg file and keep cycling through the maps indefinitely (or until a game-breaking bug occurs, but I hope I've fixed nearly all of them by now). The requirements are python 2.7.x and the pygame and networkx packages.
Commercial ProductsMost commercial products looked at for use as the proof of concept allow programming in C++ or a proprietary scripting language. The problem with this is that the Statecharts compiler in use throughout this Thesis is currently not stable in regards to C++ code generation and creating a code generator for a proprietary scripting language would take so much time that it would detract from the goal of the thesis. To this end, I have chosen to greatly expand the scope of the original 'techdemo' I created. This means the techdemo is now much closer to an actual game engine in architecture and API. This allows more accurate research as per the applicability of Statecharts modeled NPCs, without detracting from the actual goal: Finding out how to efficiently model NPCs and transform their models such that more NPCs can be generated. Determining 'Good' TransformationsDuring one of our meetings, we discussed how to determine if certain model transformations are 'good' or 'bad'. It turns out what is good or bad can vary wildly by the application area of the models. Therefore, the transformation framework will allow users to create heuristic(s) to use in determining if a certain transformation has been beneficial or not. These heuristics can make use of the data gathered during the rounds played by the modelled NPCs. Related WorkI completed the related work chapter of my thesis. The preliminary version can be downloaded here. Meeting of 13 March 2012We met with the intent of determining the final goals of the thesis. We determined the first thing that still needs to be done is providing a clear overview of previous work and indicating how my thesis relates to this work. On the implementation side, we determined two things. First, I will further develop the techdemo to allow for automatic testing and scoring of different AIs on the basis of a certain heuristic. The AIs we will test will differ on several levels due to transformations and switching a statechart associated with a class with another one. The intent is to find out how transformations affect the AI. Secondly, I will create a Proof Of Concept using Valve's Source engine, with the intent of showing that my work on the framework is not only applicable in a controlled environment (the techdemo), but is also applicable to real, commercial products. Should this work be completed, I will relate my results back to the related work to show how my contributions stack up and what this might mean for future work in this area. Our next meeting is on Tuesday, 20 March 2012. By then I will finish the related work section of the thesis and construct a mind map of the overall structure of the thesis. If I have the time, I will also continue the work on the techdemo, allowing for the functionality discussed during our meeting this week. First semester of the academic yearIn the first semester of the academic year, a framework and techdemo was developed. The framework allows you to associate statecharts with classes, broadcast events to other active statecharts and also allows for timed transitions to be scheduled. The techdemo uses this framework to power a tankwars-like game, where different tanks battle against each other. I also made it possible to control a tank and play against the AI, resulting in a 'survival' mode where the goal is to survive as long as possible. Plans for further development include improvements to the design of the framework, with the aim of improving modularity and providing a clearer API. Since the framework is currently developed in Python, extensive documentation is also needed to aid future work with developing the framework in other languages. Before the academic year startedWe discussed several approaches to this thesis. One decision that had to be made was wether I would develop the AI using statecharts or in a textual fashion. We eventually chose the statechart modeling formalism, because it could possibly result in very re-usable AI code. This also means I will need to develop a statechart compiler (to generate the required scripting language code), however. Another discussion point was how I would demonstrate the modeled AI. This could be done using an academic virtual world or a commercially available one. After a bit of initial research, I believe a commercially available virtual world would benefit this thesis in several ways: Firstly, having the AI run in some commercially available product demonstrates that it is not just some academic research without real-world applications. Secondly, commercially available virtual worlds usually have a community supporting third-party development for the title, which would not only help me solve problems I encounter, but also generate interest for the project. |
Maintained by Gino Wuytjens. |