Members | Sign In
All Forums > Mission Scripting

Artemis Mission Editor (old topic, up to ver.

posted Apr 19, 2012 15:41:59 by Hissatsu

This is a complete Mission Editor environment for Artemis!
It provides GUI interface for editing the mission, adding and editing objects and conditions on a graphical space map, editing commands and conditions as statements presented in plain english, and more...

This program will allow you to:

- Create and edit missions in a Windows Forms interface
- Edit your commands and conditions in a graphial user interface with dropdown input suggestion, context help and lots of keyboard hotkeys for fast operation
- See and operate mission conditions and statements as plain english text, meaning you dont have to study the help files to know what commands or conditions are available to you or what the exact command or condition you encountered in mission file will actually do in game, you just chose commands or conditions from the list, and see everything in plain english, like "Create enemy at point (x, y, z) bearing 35 degrees with name..."
- Structurize your mission's events into folders, making it MUCH easier to navigate bigger missions
- Convert deprecated statements (like "direct") into their new versions (direct => add_ai point_throttle/target_throttle)
- Edit "create object" statements in events and start blocks using a graphical space map, which termendously helps positioning objects around
- Edit coordinates / spheres / rectangles on space map too (used in statements like direct, add_ai, if_inside/outside_sphere/box, destroy_near,...)
- See the logic flow and event dependency (which event triggers which event or requires which event to be triggered, etc.)
- Quickly find errors in your mission, like missing attributes that will crash the game, etc.
- Use all the quality-of-life features you expect to have. Copy/paste (you can even copy/paste to/from a text editor), undo/redo, autosave into a separate file so you dont lose unsaved work in the case of unexpected shutdown, smart find/replace, etc.
- Tweak it to your liking by modifying an extensive settings list.

You can find instructions, tutorial videos, latest version download links on the artemis wiki:


I am currently taking a break from Artemis, so I dont think I will develop this program further anytime soon. I will still make sure to visit this thread at regular basis and fix all bugs found, or update the editor to work with new Artemis versions, so please keep the feedback coming!

ATTENTION: If anyone would like to take over this project, to develop the editor further, I would gladly share the source codes (VS2010 C# project) and explain the inner workings of the code I wrote.

The new topic for this editor is here as it is now updated by RussJudge
[Last edited Jan 31, 2013 07:47:42]
page   1 2 3 4 5 next last
171 replies
DwayneShaffer said Apr 20, 2012 03:51:24
You been busy I see. this looks awesome can't wait to try it out downloading it now.
Dwayne Shaffer C.O.
Vidar GSR 3701
C.D.F. 7th Fleet
Mike_Substelny said Apr 21, 2012 17:53:41
I'm excited to give this a try ASAP.
"Damn the torpedoes! Four bells, Captain Drayton!"

(Likely actual words of Admiral David Farragut, USN, at the battle of Mobile Bay. Four bells was the signal for the engine room to make full steam ahead).
Hissatsu said Apr 21, 2012 17:59:09
New version

* Added ability to copy and paste nodes and events.
* Nameless objects (like nebulas) from the start node show on the map when you add create statements to other nodes
* Objects named with whitespaces display in square brackets so you can distinguish those from unnamed ones
* Fixed auto-convert of direct statement, now you can convert manually by clicking the label inside the direct expression
* Fixed some problems and bugs

PS: Please redownload the file, Mike. I just found and fixed a very rare and tricky bug :( I hoped noone would've downloaded yet so i just re-uploaded with the same name.
[Last edited Apr 21, 2012 19:11:34]
Hissatsu said Apr 23, 2012 07:05:36
I'd like to clarify, this (Mission Editor) is a complete suite for editing missions. It incorporates the map tool i released earlier this month, a stand-alone editor of create statements.

For all purposes, please use this, not the map tool.
Hissatsu said Apr 23, 2012 19:48:55
New version

* Added default names of the player ships for create statement's name attribute
* Added custom editor windows for console list (warning_popup_message) and elite ability bits (set_property) - you can now use hotkeys or mouse to check corresponding checkboxes
* Added customised types and boundaries for set_property statement (like, integer within 0...100 000 for x and z, 0 to 100 for surrender chance, etc)
* Fixed generic mesh's color capital letter (should be colorRed instead of ColorRed etc.)
* Generic mesh's color is now 255,0,255 by default when spawning on the space map
* Generic mesh's color is used to draw generic mesh on the space map (there is a setting of minimal allowed luminance, so that very dark generic meshes are not invisible on the space map)
* Added functional settings form (allows you to set numerous settings and parameters, and change colors)
* Added ability to define default start node contents (so that when you make a new mission - you already have all the statements you need in a start node, like create player ship, set difficulty etc)
[Last edited Apr 23, 2012 20:00:16]
dhmholley said Apr 23, 2012 20:34:31
I'm loving this tool. It's incredibly useful for setting out terrain on the map. I can't wait to get into the nitty gritty of scripting.

Hopefully once I've used it for a while, I'll have some feedback for you. Looking good for now!
The unofficial Artemis Wiki - your handy reference guide to just about everything.
Hissatsu said Apr 24, 2012 05:16:49
Yeah, by the way, it also shows the "ghost" of the start node's "terrain" when you add objects in events, which should help setting other objects around the map relative to the map's objects. Looking forward to your feedback.
[Last edited Apr 24, 2012 05:35:28]
Mike_Substelny said Apr 25, 2012 02:37:44
I am playing with it now. Looks great. The map viewer is especially wonderful, and I like the object property editor. A few comments on functionality:

Pre-existing event names don't seem to show up. I have numerous named events in my recent missions and they aren't visible in the Editor.

I write my missions with XML Pad Pro. I like to have a bunch of scripts open at the same time. I use them as a library of common tasks. When I need a new event (say "create menacing enemy fleet") I find a similar event in another mission, copy it into the new mission, then edit the variables.

It would be great if your editor had a searchable library of pre-written event blocks that a user could copy and paste into the current mission. If you can create the library functionality I could supply a bunch of generic pre-written event blocks.

The secret sauce: It would be awesome if I could go into a "storyboard mode." In storyboard mode I could select an event and the editor shows what timers and variables are set by that event. Click "execute" and it simulates the setting of those variables and finishing of those timers - - - all events disappear except the ones active under those conditions. Then select one of those events, click "execute" and now I will only see the events active under the new set of conditions.

Come to think of it you would also need to be able to access the map, since some events are triggered by objects being in certain areas. Hmmm.

If it's possible that would make storytelling MUCH easier!
"Damn the torpedoes! Four bells, Captain Drayton!"

(Likely actual words of Admiral David Farragut, USN, at the battle of Mobile Bay. Four bells was the signal for the engine room to make full steam ahead).
Hissatsu said Apr 25, 2012 07:04:39

1)Pre-existing event names don't seem to show up.

You mean you named events in my editor, saved, loaded and they didnt appear (events that had names are named "Event XXX")? Event names are supposed to be stored as arme_name attribute in the event node, do those appear in the xml the editor saves?
If you want to convert lines of comments before events into event names, you can use tools-convert options to do it (you can convert every comment above an event into event name, or you can convert only single-line comments, so you dont get last line of a multiline comment converted, it looks wierd)

2) Searchable event library:

In other words, you need an ability to copy an event or start block to some "storage" that persists on exit, and being able to paste from that "storage" at any time, right?

Or, do you want it to search each mission you have (like, each mission inside Artemis/dat/missions folder) based on some criteria?

What do you want the search to look like? Search by what criteria?

Maybe i should just make it so you can copy events as text from your text xml editor and paste them into my editor? It seems to me that a notepad++ or similar tool you're using has a much better interface for searching for stuff you need than i could make in any reasonable time (since you can search in files, propably use regular expressions, etce tc). So you could use that to search and then just paste it into my program, simple and easy?

3) Storyboard mode

Well, an emulation of the game in controlled environment is what this ultimately is - that would be time consuming to do, including the fact that if Thom decides to make some major improvement to the mission scripting, it would mean a re-write of this part, possibly from very scratch. Also, i'm thinking this is much better for game author to implement, something like a console (~) mode where user can see what events fired, query status of any variable or timer, run any command, make stuff invincible etc. This would be better because it wouldnt require a re-write each time a game changes - it would use the same code parts the game uses to execute those events.

What you propose is a much simplier version of this, but either i dont understand you or it wont work. If it works only by executing single events, then you could lack some variable introduced in another event, like, if you dont start from the beginning, and execute some other event, it may be so no other event can fire because some global variable like "chapter_number" isnt set.

However, based on your idea, right now i think something like this would make sense and be not hard to implement or support when game changes:

A mode (new window) can be opened where you see the "game state". It consists of:
- the list of objects currently on the map with basic info on their stats
- list of variables and their current values
- list of timers and their current seconds
- list of events executed or actions taken by the operator

There also should be a list of events that are ready to fire based on the current state of the variables, existance of objects etc. You can click a button to execute topmost of them or execute them manually.

Also, a list of events that are ready to be executed BUT require something from the space map would appear, and you could go through them and see what they need to fire (like, this event fires when timer expires, variable is set and property XXX of object YYY is less than ZZZ, and timer and variable conditions are fulfilled, then it will show in that list, and when you select it, it tells you in some manner what this event needs to execute, and you can click execute on that event

The operator can:
- advance time until next timer expires or set seconds forward
- add or remove manually any variable or timer and set them to any value
- remove (destroy) or add any named object
- execute topmost or any event ready to be executed
- execute by hand any event that is ready to fire except it needs something from the space map (like, it needs a ship to be destroyed, or it needs a ship to be inside rectangle, etc).

Executing the events of course changes the list of objects on the map, and state of variables and timers

You can also move back and forward (undo/redo like functionality) in the list of executed events or actions.

What do you think of this idea?
[Last edited Apr 25, 2012 07:09:08]
Mike_Substelny said Apr 25, 2012 14:08:35
1)Pre-existing event names don't seem to show up.

<event name="my event">

That's the way I've been coding event names because that's what XMLPad Pro likes for navigation.

2. Searchable event library:

Here are some generic event blocks that I have in mind for the library:

<event name="Opening Credits">
<if_variable name="chapter" comparator="=" value="1"/>
<if_timer_finished name="credit_timer_1"/>
<if_variable name="credit_1" comparator="!=" value="1"/>
<big_message title="TITLE HERE" subtitle1="by Your Name" subtitle2="a mission for Artemis x.x"/>
<set_variable name="credit_1" value="1"/>
<set_timer name="credit_timer_2" seconds="10"/>

<event name="Incoming Text">
<if_variable name="chapter" comparator="=" value="1"/>
<if_timer_finished name="text_timer_1"/>
<if_variable name="text_mess_1" comparator="!=" value="1"/>
<incoming_comms_text from="Character name">
Insert text here. -
<set_variable name="text_mess_1" value="1"/>

<event name="Popup Message">
<if_variable name="chapter" comparator="=" value="1"/>
<if_timer_finished name="popup_timer_1"/>
<if_variable name="popup_1" comparator="!=" value="1"/>
<warning_popup_message message="Warning popup message here." consoles="SCHEWM"/>
<set_variable name="popup_1" value="1"/>

Just copy and paste them into a mission, edit the particulars.

3) Storyboard mode

Your idea is much more completely thought out than mine. Storyboard Mode isn't intended to be a substitute for playing the mission through, it's just a way of making sure the time names and variable names all match between actions.
"Damn the torpedoes! Four bells, Captain Drayton!"

(Likely actual words of Admiral David Farragut, USN, at the battle of Mobile Bay. Four bells was the signal for the engine room to make full steam ahead).
Hissatsu said Apr 25, 2012 15:34:27

I wanted to evade having any attribute names that match something that Artemis may ever use in the future. Thats why i invented "arme_XXXX" for all my attributes (arme = Artemis Mission Editor). I dont want to have any problems in the future when Artemis starts using an attribute for whatever reason and i'll have to write a converter for my missions into new format etc.

But I will make it read name attribute right now (until Artemis starts using the name attribute, if it ever does), just so it works for you (and whoever you taught to do that or use that software that adds it)

Right now i made it so you can import multiple statements or event/start nodes. I will release it this evening i hope or tomorrow.

You will be able to copy anything from your xml editor, and paste it to the Artemis Mission Editor. You can paste multiple event nodes, or multiple statements. You can even paste something taken from parts of events, that is not nessecarily a valid xml, like you can copy and then paste the following:

<set_variable name="spin_artemis" value="0"/>
<set_variable name="ramscoop_transfer" value="1"/>
<if_variable name="chapter" comparator="=" value="1"/>
<if_timer_finished name="install_timer"/>

...notice it has two parts of two events, and event tag parts are in between, not opened/closed properly if you consider this as an xml fragment.

So, you will use your text editor to look for your templates and copy required code, and then paste it into Artemis Mission Editor (as events or as statements)

When i release it, see if that way is easy to use.
If not - i'll see what i can do to make a library of a kind you asked for in original post of yours.

First of all, this is what name suggestion is for - you wont have problems mistyping something if you chose from the list.

Second, i was going to make a dependancy graph - thats something very similar to what you requested in your original post. Dependency graph shows for any event:
- which events set a timer/variable required by this event
- which events require a timer/variable set by this event
Like, if event1 has set_variable to 1..100 and event2 has if_variable <=0 then event2 will show event1 as something required for it to happen (if of course event1 doesnt set something else that contradicts event2, like sets some other variable to 1 while event2 needs it to be 0).
Dependencies can be:
- strong (meaning only this precursor event can set the required timer or variable for current event, so unless it happens, the current event will never fire)
- enough (meaning this precursor has all the current event needs to fire)
- enough except environment (meaning this precursor has all the timers and variables, but the current event also needs something else to happen like a ship to dock to a station or certain object property being equal to certain value)
- combination of the above ("strong, enough" or "strong, enough ex. env.")
- weak (meaning this precursor sets some timers/variables, but not all of those checked by current event)
It will also show loopbacks (if event has nothing that prevents itself from happening again, may be desired, like with your Hamak undock code, might be undesired...)

Will this be enough to futfill your original 3)?

Third, I will think about this idea (the one i proposed, a kind of mission simulation) more in my spare time and see if i come with an easy way to do it.
[Last edited Apr 25, 2012 21:10:17]
Mike_Substelny said Apr 26, 2012 00:33:23
Sounds great, Hissatsu.

I'm happy to try arme_ as the tag for names.

I'll spend some time in the editor again tonight getting more accustomed to how everything works. I want to see what it does for my productivity on "Catch 22.1."
"Damn the torpedoes! Four bells, Captain Drayton!"

(Likely actual words of Admiral David Farragut, USN, at the battle of Mobile Bay. Four bells was the signal for the engine room to make full steam ahead).
Mike_Substelny said Apr 26, 2012 01:07:42
Sorry, but I just found something I don't like. I see no way to search the xml for a string.

Somewhere in "Catch 22.1" I know I have a Comms Text message that includes the word "football." I need to find that message but that word is the only thing I can remember. So in a text editor I just hit [ctrl][f] and I can find the string "football."

Replacing strings is also important. For example, the original version of "Hamak" included starship Niagara instead of starship Warsaw. When I decided to change the name I just did a search and replace. In addition to being an argument in numerous events, the word Warsaw appears in dialog, variable names, timer names, and event names.
"Damn the torpedoes! Four bells, Captain Drayton!"

(Likely actual words of Admiral David Farragut, USN, at the battle of Mobile Bay. Four bells was the signal for the engine room to make full steam ahead).
Hissatsu said Apr 26, 2012 05:09:30
Yeah, thats nothing to feel sorry for, it's perfectly fine you found something like that! Thats what i'm looking for, since i havent made big missions, i cant know what kind of operations you usually have to preform when doing it.
I'll definetly work on it!
[Last edited Apr 26, 2012 05:31:11]
Hissatsu said Apr 26, 2012 19:34:09
New version

* Named objects from start node are displayed when adding objects in events (in addition to nameless objects that were shown before)
* Added ability to paste multipe event/start nodes and statements from a text file
* Edit direct, add_ai POINT_THROTTLE, destroy_near statements on space map
* Improved label selection - selected label is now shown when editing in dialog, and label is now shown as selected when clicking it, meaning it becomes selected before and not after the context menu appears
* Added context menu to expression label's right click, to hint the hotkeys mainly
* Added ability to find and replace (only "Find All" works right now, but i'm going to make find next/previous and replace work asap)

* Fixed minor bug in asteroid display
* Fixed minor bug in nameless objects display
* Fixed minor bug in "next value" action (space hotkey when selecting label)
* Fixed critical bug about deleting statements (didnt work before at all)

PS: If you have happened to get version, download the new version, it fixes the search to actually work propertly (and you dont need to manually reset settings anymore)
[Last edited Apr 27, 2012 08:07:14]
Login below to reply: