That's me.. asking for trouble.
So I decided to have a bash at seeing if I could create an alternative tutorial mission.
Sure, I've no clue about the various event types, objective types or any of the parameters... but therein lies the fun.
I didn't get very far, mainly because there's just things which I wanted to do.. that I can't (or perhaps didn't know how to).
I don't need answers or documentation or anything... Please consider this feedback.
<---- CUT ------> <---- AND PASTE------>
So... some of my stumbling blocks.
- Problem 1: Altering size= didn't seem to affect the world size. I ended up trying numbers as low as 5. It feels like the word sizes may be fixed as 60, 100 and 150. Grrrr.
- Problem 2: disabling the UI still allows marking blocks for digging. I was hoping to stop all interactions until I switched them on.
- Problem 3: Time advances. time= parameters are fixed relative to the mission time. So if the player does nothing or spends longer than normal reading, events collide together.
- Problem 4: All messages require an email. I'd really like to be able to put up messages that aren't emails.
- Problem 5: The objective tracker is only 4 lines long. It feels like "well, I only needed 4 lines" solution.
- Problem 6: Enabling/Disabling colonist lander timers looks like it's tied to world generation, rather than being an event (like disableUI).
- Problem 7: I don't understand the "moveTutorialCamera" event. There's no parameters, yet in the existing tutorial, the camera goes to very specific places. (did you hardcode it, Simon? )
- Problem 8: Coding time= onto an event with an email automatically opens that email. Shouldn't that be a separate parameter? What if I want to send an email on a timer, but not have it auto-open?
- Problem 9: I tried to combine event type="highlightInfoModeSelection" with time= ... bad things happened. Though I'm thinking that's probably fine.
I appreciate some of the stuff I wanted to do may already be available. Like enabling and disabling marking for mining, or enabling and disabling the colonist lander timer.
The main one for me was a combination of the time= stuff and the exclusive use of emails for displaying text to the user.
I really wanted to create a series of informational messages for the user to read and acknowledge before advancing to the next message.
Since it's impossible to know how long a user will take to read a message or even if the user might go AFK right at the beginning - I couldn't just stack up message by time.
I tried to get around it using objectives, but then I just ended up with a mass of objectives running into each other.
Things I'd like to see (if they aren't already possible).
- An action to display a message, without it being an email.
- An action to enable/disable receiving normal emails (it's still the tutorial, reading the power messages and such seems a bit premature).
- An action to enable/disable marking mining blocks, lander timers, meteor events, earthquake event, etc.
- Maybe combine all those with each being starting disabled if tutorial="true" is coded on the world generation tag.
- Absolute control of the camera position, zoom and angle.
- An action to clear the email queue. (especially if all messages NEED to be emails).
- Since emails are part of events, and events have id="xxx"... is it possible to have an objective type of "closedEmail" and/or "dismissedEmail" tagged with the event id that created it? (ie. to check for players having finished reading mails and/or have dismissed them from the email queue?). If that somehow covered my fictional non-email message, that'd be peachy too.
- A parameter for an event to clear completed items the objective queue. I appreciate not all objectives will be flagged as requirePreviousObjective. But I already wanted to create a new set of objectives without the old objectives still hanging around on screen.
- The objective "haveFood" is used for checking the food exceeding a specified amount. Could we also have a "food below a specified amount" check too? Same with the other resource types too.
- EDIT: The ability to make an event conditionally dependant on other event(s) have completed. (maybe you want to send an email after x, y and z have been built - without making them objectives on the objective tracker.
- EDIT: Timings and time= are all absolute. It would be nice if time= could include something like time=+20, where the "+" makes it relative to... erm.. something. (Problem is previous events can already be long complete by the user sees the email linked to them - again, another issue highlighted by a player going AFK - Try playing the Sulphur mission and going AFK for 8 minutes at the beginning).
EDIT: I suppose at the heart of it, what I want is to be able to trigger some future events based on when the player took positive actions within the game (and not just using the objective tracker). i.e. If the script schedules two emails for time=10 and time=20, that seems fine until you realise the 2nd email won't be shown to the player until they close email #1. I keep mentioning the extreme of what if the player goes AFK, but the extremes are what highlight the minor problems. btw, the objective tracker has similar but seemingly opposite problems - especially over short periods. Timers on objectives don't start until the objective is displayed on the screen - which is something that happened to me when I added a 5 objective condition and objective #5 was waiting for the objective #1 to scroll off the screen.
I know that's a lot - and as I said earlier, it's just feedback rather than a wishlist (okay, it's also a wishlist - but only if it makes sense for the overall plan for the game).
Plus I know you're busy bug fixing. Then there will be stuff that's on the roadmap. Then there will be scenarios. And none of this gets the game any closer to release (though I think it would be better for it).
Plus this is only the stuff that came up when I was trying to do something fairly specific. If I'd have gotten further into my tutorial ... no doubt my wishlist would have gotten longer and I'd have noticed more hard coded solutions.