Difference between revisions of "ExtensibleScenarioEditor"
David.hilton (talk | contribs) (→The Proposal: Significant update and clarification - incomplete edit) |
David.hilton (talk | contribs) m |
||
Line 74: | Line 74: | ||
* Effectiveness of the plugin design to support advanced features | * Effectiveness of the plugin design to support advanced features | ||
− | It is highly probable that in order to have good features that are | + | It is highly probable that in order to have good/advanced features that are easy to use, each feature will need a lot of thought. Before implementation starts, coming up with a couple of specific examples and getting input from non-coders would be good, to investigate the flexibility of this approach. |
[[Category:Summer of Code]] | [[Category:Summer of Code]] |
Revision as of 17:48, 20 March 2008
Contents
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 (in some form) 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 or actions directly dealing with variables (retaining Turing completeness). Also, there would be no restriction on the number of actions to take place per state.
Definitions
- Events: results of normal game progression (user actions, death of characters, etc)
- Actions: actions to be performed by the scenario engine
- Node: container of any number of Actions
- something for multiple Events?
- Chain of Events: a connected graph of Nodes and Events
The concept of events and actions is central. Events/Actions should be easily added (by plugins, or directly into the source?), allowing for the eventual development of a very rich graphical language. Initially, events/actions would contain snippets of WML, but eventually would be extended to interact with the GUI (on the map editor, as well as the scenario editor) to a much greater extent.
Summary
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 (displayed as an editor of multiple chains of events)
- 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)
Elements that need further consideration in my design:
- Effectiveness of the plugin design to support advanced features
It is highly probable that in order to have good/advanced features that are easy to use, each feature will need a lot of thought. Before implementation starts, coming up with a couple of specific examples and getting input from non-coders would be good, to investigate the flexibility of this approach.