Hi Pirates!
Here is my first post since I even not finished yet to build my computer for running this jewel
Nevertheless I'm well interested about this API idea.
By API it could be a real API or just logs, I don't care.
Well...
First of wall I don't think is mandatory to have something else than getters (API which extracts data).
Since the game is played through user's input, a third app can already emulate them.
Secondly I think we have to really take care about the quantity of information provided by API. Giving location in real time of entities could provide a good opportunity for developping bots and then... well probably nobody wants to see player's ship controled by a bot. Elite is not an FPS but having a third party being able to detect and automatically avoid missiles, or providing the best trajectory for following the escape vector would be too much.
And third, information is provided to user depending on context.
You can see the cargo only if you scan.
You can scan only if you target the ship.
You target the ship only if you see it,
and more, you can plan your journey only if you are on the map.
The API should not break this rule. The risk would be to give too much power to players having the good third party tool than others.
When you open you map you hide your view. Third party tools should have the same disadvantage.
I have in mind at least two usecases where an API will be a great addition.
1) Vocal assistant.
Some guys are doing really good jobs on voice attack for implementing a virtual assistant. Having data from the environment would be an incredible help for improving them. They will directly know if your cargo bay is open or not, if you are at 50% engine or more, etc. They will not have to maintain a fake status of your ship, but they will be able to read it directly.
For this, all visible informations should be available by API, that means all readable data visible on each panel of your ship.
Concerning the radar, we could imagine the list of items, and to have events if they appear or disappear. Each item should have an id.
The same ID should be used in the left panel describing your target. This in order to help third party tool to know which item is currently targeted.
One usage could be for instance when a target drops its cargo or when doing mining.
A third party tool would be able detect new containers, to scan each of them, and informing user "hey there are new gold containers!!!".
2) Motion seats.
I saw some projects of motion seats. But they are missing acceleration data.
In fact, since we are in space, everything can be computed from user inputs: if he goes left, the force goes right. But it works only if we are alone.
Since we touch another entity, land, get a missile in face etc, the acceleration is dependent to external elements.
The best would be to be able to get the acceleration in real time.
But it could be easily simplified by an event notification saying "vibration" or "big bump" in this or this direction in space.
Based on everything, what about a unique API?
This API (which could be even a simple log) would just provide events.
Event of new item in space
Event of increasing power engine
Event of a laser shot
Event of a finished scan, with its content
If the player draws a journey in the map, event describing each steps
etc... etc..
Probably events relative to sounds (far explosion, lasers etc)
What I see here, is that a third parties would read all data from this stream.
And it will interact on the game directly by simulating user inputs (as Voice Attack behaves).
The idea behind it is:
- to a have a simple API (one for all), that you can improve easily (just put more events, more properties on those events)
- to limit the advantage of using a third party tool compared to full human play (in any case it uses user input)
- several tools can connect to the same data flow of event.
A such solution would impose to provide a bunch of events each time you restart your game, in order to inform tools of the current status.
The only remaining problem for me would be how to describe the map through events. Perhaps a graph of the n'th closests system near to your selection, I don't know.
Thanks!
Plousk