Difference between revisions of "ExtensibleScenarioEditor"

From The Battle for Wesnoth Wiki
m (added thoughts on advanced features)
(Mark as obsolete)
 
(27 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
{{Obsolete|Reason: a 2008 GSoC application. While the idea sounds interesting, this page only has the summary of it.}}
 +
 
==Contact==
 
==Contact==
  
Line 5: Line 7:
 
==Me==
 
==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 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 (as BlueBlaze can attest).  I currently work both as a software contractor working with LogoMetrix to commercialize a research project (development of palatometers, which are used to help people to learn proper pronunciation) and as a Linux sysadmin.
  
 
I am a Junior/Senior CS student at BYU.   
 
I am a Junior/Senior CS student at BYU.   
Line 17: Line 19:
 
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.
 
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.
+
As far as development models go, I enjoy the waterfall.  Especially combined with the big bang style of programming (write all the code, then wade through bugs for billions of years).
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.
+
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.
+
I'm not currently involved with any OSS projects.  I do have a personal project (a probabilistic grammar checker), but it is very young and purely experimental.
  
 
===Languages and Development===
 
===Languages and Development===
Line 35: Line 37:
 
I am fine with voip, and I am awake from 12:00 to 4:00 UTC.
 
I am fine with voip, and I am awake from 12:00 to 4:00 UTC.
  
 +
===Patches Submitted===
 +
 +
[https://gna.org/patch/index.php?1022 patch #1022]: refactoring of game.cpp, to allow for testing (rejected because of size)
 +
 +
[https://gna.org/patch/index.php?1026 patch #1026]: part 1 of refactoring
  
==The Proposal==
+
==A 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.
+
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.
  
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.
+
===Definitions===
  
 +
* Actions: actions to be performed by the scenario engine
 +
* Events: results of normal game progression (user actions, death of characters, etc)
 +
* Node: container of any number of Actions
 +
* Event Bundle: combination of multiple Events
 +
* Chain of Events: a connected graph of Nodes and Events
 +
* //Region: an area on a map that can be used in Actions 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 would eventually be extended to interact with the GUI (on the map editor, as well as the scenario editor) to a much greater extent.
 +
 +
===A GUI Layout===
 +
 +
http://students.cs.byu.edu/~davidhil/wesnothEdGui.png
 +
 +
Yes, this is lacking some important details.  Yes, my handwriting is pretty bad.
 +
 +
===Summary===
  
 
To summarize, my proposal is to create an extension to the map editor, allowing for scenario editing.   
 
To summarize, my proposal is to create an extension to the map editor, allowing for scenario editing.   
 +
  
 
For an initial phase, I would:
 
For an initial phase, I would:
  
* Create a graph editor within the map editor (displayed as a timeline)
+
* 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 nodes that are triggered by events and contain events to perform
 
* Create a basic event type, allowing for direct modification of WML
 
* Create a basic event type, allowing for direct modification of WML
Line 62: Line 87:
  
  
Elements that need further consideration in my design
+
Elements of my design that need further evaluation:
  
 
* 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 intuitive, 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.
 
  
 +
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, in order to investigate the flexibility of this approach.
 +
 +
==Not Another Proposal!==
 +
 +
In the long term, I would probably be more interested in the AI than the editor.  I had a ton of fun creating and refining my first/last one.  I don't know much formal theory on AI, but I'm pretty sharp (not to imply that others aren't).  I'm pretty good at analysis and getting around hairy problems, especially when I really like the topic.  It becomes an obsession.
 +
 +
I would be happy to work on other parts of the game, as opportunity demands.
  
 
[[Category:Summer of Code]]
 
[[Category:Summer of Code]]

Latest revision as of 09:52, 13 December 2022


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 (as BlueBlaze can attest). I currently work both as a software contractor working with LogoMetrix to commercialize a research project (development of palatometers, which are used to help people to learn proper pronunciation) 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 (write all the code, then wade through bugs for billions of years). 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 (a probabilistic grammar checker), but it is very young and 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.

Patches Submitted

patch #1022: refactoring of game.cpp, to allow for testing (rejected because of size)

patch #1026: part 1 of refactoring

A 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

  • Actions: actions to be performed by the scenario engine
  • Events: results of normal game progression (user actions, death of characters, etc)
  • Node: container of any number of Actions
  • Event Bundle: combination of multiple Events
  • Chain of Events: a connected graph of Nodes and Events
  • //Region: an area on a map that can be used in Actions 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 would eventually be extended to interact with the GUI (on the map editor, as well as the scenario editor) to a much greater extent.

A GUI Layout

wesnothEdGui.png

Yes, this is lacking some important details. Yes, my handwriting is pretty bad.

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 of my design that need further evaluation:

  • 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, in order to investigate the flexibility of this approach.

Not Another Proposal!

In the long term, I would probably be more interested in the AI than the editor. I had a ton of fun creating and refining my first/last one. I don't know much formal theory on AI, but I'm pretty sharp (not to imply that others aren't). I'm pretty good at analysis and getting around hairy problems, especially when I really like the topic. It becomes an obsession.

I would be happy to work on other parts of the game, as opportunity demands.

This page was last edited on 13 December 2022, at 09:52.