ExtensibleScenarioEditor

From The Battle for Wesnoth Wiki
Revision as of 06:53, 19 March 2008 by David.hilton (talk | contribs) (Initial spec)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Contact

My account names are fairly similar; on gna, I am davidhilton, in the forum, I am david.hilton, and on irc, I am david_hilton_p.

Me

I have been playing Wesnoth for about a year now. I really like turn-based strategy (X-COM rules!), but I don't consider myself a gamer; I have a tendency to program more than I game. I currently work both as a software contractor working with LogoMetrix to commercialize a research project (Palatometers) and as a Linux sysadmin.

I am a Junior/Senior CS student at BYU.

As far as my desire to participate in the Google SoC, I figure if I can get paid to play, why not? I would like to get a good taste of being involved in a fun OSS project with a good-sized group of developers.

Projects

I've worked on personal projects, including a genetic optimizer of AI and a probabilistic grammar checker, in addition to work and school-related projects, ranging from data collection software to an OSS shopping cart (perl-based *cringe*) to project management software.

I have limited experience working in teams; I haven't worked on the same code base with more than one other person on any commercial project. I have worked with up to three others on school projects.

As far as development models go, I enjoy the waterfall. Especially combined with the big bang style of programming. On a more serious note, I have been trying agile development at school, but I haven't decided what I think of it. Regardless of that, some things are certain; prototyping and comprehensive test cases are very important.

I'm not currently involved with any OSS projects. I do have a personal project, but it is purely experimental.

Languages and Development

  • I have done both school work and professional development in C and C++; in a sense, they are my native tongue.
  • I have done coursework using Java, C#, and Scheme.
  • I am currently learning Common Lisp, forgetting perl (but I still use it), and getting better at bash.
  • I have used various IDEs, but I tend to use emacs nowadays.

Communication

I am very fluent in English, and quite competent at Spanish (I served as an LDS missionary in Argentina for 2 years).

I am fine with voip, and I am awake from 12:00 to 4:00 UTC.


The Proposal

Create a graph editor that would be integrated with the map editor. Although I have described it as based on a finite state machine editor, that description is somewhat inaccurate, as events of any type could be added, including events directly dealing with variables (retaining Turing completeness). Also, there would be no restriction on the number of events to take place per state.

The concept of events is central to this idea; these events should be easily added (by plugins, or directly into the source?), allowing for the eventual development of a very rich graphical language. Initially, events would contain snippets of WML, but eventually would be extended to interact with the GUI to a much greater extent.


To summarize, my proposal is to create an extension to the map editor, allowing for scenario editing.

For an initial phase, I would:

  • Create a graph editor within the map editor
  • Create nodes that are triggered by events and contain events to perform
  • Create a basic event type, allowing for direct modification of WML
  • Create a converter from the graph structure to WML


The design could later be extended by:

  • Adding a utility to merge maps into a campaign
  • Creating a concise interface to the map editor state, easing the creation of higher-level events
  • Adding Unique events whose WML would not be visible
  • Adding metadata to the converter output
  • Creating a WML importer (allowing for some degree of manual modification of editor exported scenarios)