This section i will describe a problem or bug that i ever found. Some of them still remain in code (it will have my excuse that wht its still remain) . some are already get rid of, but another people who will modify my code may face it again. Anyone who know more about these topic please discuss and share your knowledge:)- Py_InitModule fail
AI-TEM dose not limit AI methods that it can be used with, because its concept is only using an emulator as game engine. Some AI methodology, however, requires extra functions. For example, using Genetic Algorithm requires running tests large amount of times, may be hundreds or thousands generation. Therefore, automatic result recorder is needed. High speed running mode will also be an additional welcome, for it can save time to train AI. High speed mode is already available in VBA and many other emulators. Not all games may allow us to provide automatic running mode. This is because, if we cannot find memory data address that tells us about the beginning and the end of the game, we cannot force the situation. But in general, automatic result collection can be done. Therefore, various AI techniques can be used.
If researchers are interested in FPS, RTS or NWN game, there are games that come with tools. Good testing environment for such games can be built with such tools. Also, there are very few of these games on consoles. AI-TEM may not be the first choice for testing such games. If researchers are interested in simple platform action game, writing a game from scratch or finding some open source clone game is not a bad choice because all environments of the game can be fully controlled. However, developing games, from tools provided by a game, or from an open source clone cannot easily get us commercial-quality game. This is where AI-TEM can come in. AI-TEM can be used to test an AI developed on a simple, but fully controllable environment, against real commercial game. In the case of racing game it is difficult to know game state data such as opponent car position and the track situation. As a result, AI-TEM will not be appropriate. For fighting game we think that using AI-TEM is suitable, because this type of game is rather difficult to make and even more difficult to make it as good as commercial game. Therefore, we think the tradeoff in the case of fighting game is worthwhile. For sport game, we think that it is still suitable to use AI-TEM, because of the same reason as fighting game. Even though there may be many game states that an AI module needs to know, finding them may be easier than creating a high quality sport game from scratch. Some AI researchers use Robocup simulation league to be a testbed for their football AI research (Sean Luke 1997). However, Robocup simulation league rules are still not the same as real football rules. For other types of games, researchers have to consider the same factors as in this section
To play a multiplayer mode in VBA (Link), two or more instances of emulators have to be used. Controlling many emulators at the same time while testing is not very convenient. With STZ3, when we want to test our script against the original AI, we have to use versus mode, that forces us to open another VBA instance. Otherwise we cannot select an opponent and difficulty level. The second instance is forced to run in window mode unnecessarily. It will be better if the second instance can run in the screen-off mode, in order to save CPU power. Sometimes two connected emulators do not synchronize. This may damage the automatic module in long run. Detecting game state of both VBAs becomes necessary. We can then reload the game again if they do not synchronize. Although there are some inconveniences, AI-TEM generally works. The emulator can be fixed to tackle the problem.
PC game trainer is a program used for editing states of a game that runs on PC. It will search state data of the game that is running and find the right address to edit. If it is used to observe some game state data and send AI commands into PC game, it will be just like our AI-TEM. However, it is compare to be only game state observer module in our system. If researchers want to use it, they will need to implement other modules to complete the testbed system.
An emulator is a software program that simulates the working of another software or hardware system
on another system. For example VeriLogger simulates the working of electronic transistors and logic gates on
PC. There are many mulators of console/handheld game hardware. VisualboyAdvance (VBA) and
isualboyAdvance Link (VBA Link) are GBA emulators. ePSXe is a PlayStation emulator. Even rcade machines
have MAME as their emulators.
ROM (Read Only Memory) is the game data dumped from the riginal game cartridge or disc. Using a game ROM with its emulator, a game can be simulated and played on PC.
Street Fighter Zero 3 on GBA is a port version of original Street Fighter Zero 3 from the arcade Machine.
Its original game is regarded as one of the best fighting games in the world. STZ3 is a fighting game. In This
type of game, a player must select one character from many characters, and fight one by one with an opponent
character. A Player must decide what action he will perform in many different situations based on his character
and opponent character’s status. An expert player will have knowledge about the timing of every action in the
game. Expert players also know about which special move will have which special effect. Therefore, the game
allows clear distinction between expert and novice players. It is also a game that has many ways to play, even
for the same character. Therefore, we believe this is a good game for tuning our testbed and for AI research.
More information about how to play Street Fighter Zero3 can be found at www.gamefaqs.com. stz3 gba faqs
There are many genius game player dedicate their time to made those document.
Plase see GBA ROM FAQ
Err..., You should have your own cartridge and dump it your own. But... you know it does not hard to find on internet...
The syntom is strange, when running program and start python program will crash. But this not appear when run in debugging mode, so cannot find the cause easily. After "some (huge)" attemps, i can found that the cause of problem is at Py_InitModule() function. The m_stz3Method array must have size equal to the number of interface function that you will initial, cannot let it remain. And beware to make it in structure that when allocate memory it will devide by4. (so sorry i dont know to muc about this and cannot explain well........................)
This because when loading or saving movie by VBA tools. The path of working will change to the path that load/save movie. So if python script is place at another path (normally at same place as .exe) the progam will cannot run.
I found that even using py script to press button, to make combos. (sensitive combo that must use very good timing). But sometimes it not success?! Use program to press button should reliable. but why sometime it miss? Many experiment had done for findout the cause... but i still not understand the cause now...... (at lease i think it does not cause from the delay of calling python.) How ever for another action that not timing critical, i still not sense a problem like this.
I always think that more data may required to make AI for fighting games. They are, each animation frame time, each animation attack range, each animation hit and unhit position (pixel detect information for each frame). Those data are data that original fighting game developer know. (and i think may be only they that know those info) However, may be those data, info can know by training AI to collect them...is it posible or not?
I always have problem when build program in release version. Sometime it cannot build or can but cannot run on another machine or required another dll to run (mfc dll....) This time too, i face that problem again (very bore this problem...) so i decide to release in debug version first and i will try to find the way to build perfectly release that can run without requirde any dll (like original VBA can release).