AI in Astrum Futura and QSL

It should be noted that AI in Astrum Futura, except for Pathfinding (A*), will be experimental. Even A* implementation should be considered, when finished, as a work in progress. The reasoning behind this adoption and development is to start the path to better AI in browser games. The beginning will be sort of ad-hoc at the start, but the long term goal is to eventually bring the AI components out of experimental status.

Pathfinding

The goal of the pathfinding is to calculate the distance between one point to another better than other games. In most games, you wouldn’t go straight through a blackhole or through a mountain. In 3D games, in space, you could over or below a blackhole, but in 2D space, going around is similar distance. Also, you would go around enemy territory and that would also cost in terms of distance.

It is the long way of giving accurate distance that couldn’t be determined by a set calculation that the user can make. It would make it interesting to say the least for how long it would take to reach a point, given that traveling is in real-time and not instant time like in some games.

The pathfinding can also be used for AI to search for resources like any other player. For sprites, it would give a realistic path for monsters in a RPG type game, given that the path is given to the sprite using JavaScript and moved using JavaScript. While, completely difficult to say the least, it would make such things possible for the developer without having to use cheap or hackish tricks.

Fuzzy Logic

The fuzzy logic class library will be a port of the C++ Free Fuzzy Logic Library. It would probably be easier to just write a PHP extension, using the library instead. However, the PHP port won’t make the game admin have a custom install of PHP. Enhancements will need to be made to allow for some Fuzzy logic ‘OR’, which the original does not include.

It should also speed up the initial development of the Fuzzy Logic to be used in the game in some areas. The library allows for the logic to be separated in a file (.fcl), in which would simplify that of defining the logic elements. Instead of working with PHP, they would only need to work with the file, which means working with what would only be defined as a new language. Documentation would have to be written for how to use the language and the API.

In the future, I would like to define the Fuzzy Logic as PHP objects or as such having a complete PHP implementation, but still allow the use of the FCL file.

Neural Network and Genetics

Details of this will come later, it is unlikely they will be used in the first version of the Astrum Futura game. However, I have plans for using these AI in a few of the Absidon games (Earth 3045 and Mecha Asylum). The development of these AI will most likely be slow and drawn out. There are other implementations out there for which to use as an reference or to extend for use in the Quantum Star Library (QSL). The exact details will be worked out later.

Why have AI available

If the AI library is available, then mod developers can take advantage of it, if they please. Most of the AI used in the game will be mostly in mods, which is okay. It is more likely to be used if it is available than if developers have to create it themselves. I would rather have Mod developers use the AI API for creating really cool features.

PHP Extension

It would be worth turning the QSL into a PHP extension at some point in the future when the game is nearing completion. The speed boost would be worth having in the game, especially for the AI API parts which would save some cycles. Given objects are slower than procedural code in PHP, it would be better to have the objects already compiled in C++.

The PHP Extension would be for those who are able to compile PHP. The speed increase should be noticeable, even with caching.

Possibly Related Posts:


2 Comments.

  1. When you get to the point of putting some of this into a C extension I would be interested in helping out, I have had some similiar thoughts and done some basic testing, something as simple as distance calc’s had a huge improvement being done in a pure C wrapper.

  2. Yeah, I’ll need as much help as possible. It would take more time if I had to do it all myself. It would also be more buggy if I did it all myself.

    I’m planning on starting it in March, so if at which point you are still interested then I’ll be sure to contact you.