SummerOfCodeProposal 2011 LuaAI champ

From The Battle for Wesnoth Wiki

This page is related to Summer of Code 2011
See the list of Summer of Code 2011 Ideas

This is a Summer of Code 2011 student page
Project: SoC_Ideas_LuaAI_2011


champ - Implement Multi-player Lua AI scripting security

I plan to implement a secure mechanism on Lua AI scripting system.
The mechanism will be implement on C++ level and transparent to Lua AI scripts.
Make player-unaccessible resource also unaccessible for Lua AI scripts. (For example: If fog is on, units covered by fog for current player should not accessible to Lua scripts initiated by current player.)
Make player-read-only resource also read-only for Lua AI scripts. (For example: Lua scripts should be able to access the coordinate for a player-owned unit, but should not be able to modify it directly.)



champ, MinXiang

Wesnoth forum


Gna id



cff29546 (at)

SoC Application

SoC Application

Project Detail

General Idea

  • Use both user access control and token access control to manage player based resources and terrain based resources.
    Each resources have a owner(player or the game), some resources require tokens. lua may only read resources it owned or it belongs to a token owned.
    when a Lua script is submitted to interpretor, use submittor as user. check every lua accessed data.
  • Check the accessiblity at the C++ object level, make the check transparent to Lua.
  • Provide a data structure (which can be a dupication of existing one) to allow Lua to make moves virtually or virtually hypothesis so that AI script can evaluate certain cases.

Implement Additional Function

Make Virtual Read-Write resource
As the units status and position can not be changed by Lua scripts due to Multi-player Lua AI scripting security, some advanced Lua AI which need 'Table-top exercises' requires virtual private data structure (For instance, a virtual battlefield) to perform trial actions and to evaluate certain status on it.
In this scheme a data structure of virtual in game resource should be able to create, either from a copy of the real resource or from definitions in creating script.
This virtual resource should be fully controlled by the creator, which means the creator can view/add/remove/alter units on the virtual battlefield.
It is good to make it possible using the same operation the real resources use for these virtual resources.


Qusetionnaire is here.

This page was last edited on 9 April 2011, at 12:37.