| Interactive
Simulation Newsletter |
Vol.
2, No. 1 (January, 2004) |
|
| This
Edition's Contents: |
| This newsletter
is brought to you by Jonathan Kaye and David
Castillo, the authors of "Flash
MX for Interactive Simulation," the first practical
guide to building interactive product simulations and performance-based
training in Flash. |
HAPPY
NEW YEAR!
2004 has started off
with a bang for us--lots of interesting events and projects are
in store. As you'll see in the Events section, Jonathan is teaching
the first ever, 10-week class on how to build virtual device simulations,
at Drexel University in Philadelphia. By mid-year, we expect to
move this class online, thanks to your (well, maybe not 'you' specifically!)
feedback through the online survey. You can still take the survey
and help us to shape the class.
For those of you who
haven't heard, we have collected and revised our component set,
in particular, have added full Reference panel help and
codehints. No need to dig around the book or inside component
code anymore to learn how to manipulate the device interface library
of almost 30 components. Check
them out over here!
When we last left you,
we published alternate state engine implementations (by Miro Samek
and Ralf Bokelberg), and this month's thread continues, in some
respects. We have received quite a lot of interest in learning more
about how to use state machines, but we sometimes get comments that
going from statecharts to code can be tricky. Even though the process
is completely cookie cutter, even we get tripped up sometimes remembering
what goes where.
Enter
your email address here to receive the accompanying
source code and automatic notification on future newsletter
releases.
|
|
Therefore, in this month's
newsletter on the technical side, we give you access to a tool we
made that generates skeleton code (in AS 1.0, AS 2.0, and C++) based
on an XML statechart description we created.
In our instructional
side of the newsletter, this month we discuss how your designers
can communicate simulator requirements to your developers. This
follows our philosophy of letting the design dictate interaction
requirements, rather than the developers rushing off to build interactivity
that may or may not be relevant or necessary to the prescribed tasks.
As always, your comments
and feedback are welcome.
Jonathan & David
|
| |
| |
| LET
US HELP YOU WITH YOUR PROJECTS |
| If
you have an interactive-simulation problem or project you
would like to discuss with us, please email
us and we'd be happy to help you. Through our company, Amethyst
Interactive LLC, we offer customized workshops and project assistance
to get your projects done quickly and correctly! |
|
| |
| |
| ADVERTISEMENT |
| |
|
| |
| REFERENCE
PANEL HELP FOR BOOK COMPONENTS NOW AVAILABLE |
| |
| For those of you who haven't
heard, we have collected and revised our component set, in particular,
have added full Reference panel help and codehints.
No need to dig around the book or inside component code anymore to
learn how to manipulate the device interface library of almost 30
components. Check
them out over here! |
| |
| GENERATING
SKELETON STATE ENGINE CODE FROM XML |
This
month's download is a file which is a bare-bones tool
for converting our XML statechart description to AS 1.0, AS
2.0, and C++.
While
subscriber's can download the swf file and documentation to
use locally, we also have provided an online version here. |
We have recently developed
a simple tool that allows you to quickly generate infrastructure
code once you describe the state hierarchies through an XML description:
http://www.eqsim.com/scxml2code.html
The basic idea is that
you paste in your XML code into the top box, choose the target state
engine implementation, and then press the Generate button.
The code appears in the bottom text box. You will see if the compiler
had a problem, it will tell you in the header comments how many
errors were encountered. This is a simple program and still leaves
a lot to be desired of in terms of error checking in your XML description,
but we have found this simple tool to allow us to shorten our production
time (from design to code) significantly. It also allows us to more
easily test designs at an earlier stage, since we can generate code
rapidly.
Currently, this tool
generates code into three target implementation:
- Our FStEng v 1.5
(ActionScript 1.0) implementation
- Miro Samek's QHsm
(ActionScript 2.0) implementation
- Miro Samek's QHsm
(C++) implementation
What, C++ you say? That
is one of the powers of designing your systems with statecharts--the
target platform is not intricately embedded in the system design.
For example, once you design your charts, you can produce C++ (or
Java, C#, or whatever) code, perhaps for embedding into the real
device, and also generate ActionScript for your Flash-based presentations
(prototypes, training, etc.). We have not yet implemented a code
generator to C# or Java, but if people want that, please let us
know and we'll put it out. This, of course, is all possible through
Miro's state machine implementations (see his
web site for information about the code in different target
platforms).
Note:
Miro has made his ActionScript implementation available for free
(in the November 2003 subscriber's edition
of our newsletter), but not the other target languages. You must
buy his book to unlock the codes for his C++ implementation. We
don't see how you are really going to use his code effectively
without the book, so it seems pretty reasonable to us. You can
get our FStEng v1.5 in the subscriber's edition of the July
2003 Newsletter, or by filling out the simulator
class survey.
The
Basic XML Description
In the downloaded ZIP
file, or on the online tool page, you will find example XML code
you can use to explore the XML elements and attributes. As well,
we have included an HTML document that sketches the allowable elements
and attributes for use as a reference.
We have defined our XML
elements to follow the basic conventions described in our book.
The XML code has two parts (1) the description of the state machine,
and (2) a description of the events. These are coded as follows:
<HSM name="My State Engine">
... </HSM>
<events> ... </events>
As you might imagine,
within the HSM tag, you place a hierarchical arrangement of state,
hState, and hStateC
elements.
Note that only our FStEng
v1.5 engine supports hierarchical concurrent states. In his book,
Miro describes how to implement them using his framework, but it
is a manual process. If the code generator runs across an hStateC
while producing code for a target platform that does not have this
feature, it reports an error and marks the place in comments within
the code.
For more information
about tags and capabilities, see the HTML file included in this
month's download, or ask us a question on our discussion
boards! |
| |
| BACK
TO TOP |
| |
| TIPS
ON HOW TO SPECIFY SIMULATOR REQUIREMENTS |
One of the common problems
we hear about in simulation development is the difficulties that
project managers, instructional designers, and developers have in
communicating the necessary functionality for simulations. Even
when the project revolves around a device, which usually should
ground the topics more easily than a soft skill situation, there
tends to be divergence in what level and type of functionality is
necessary.
Perhaps because there
is a device involved, it becomes more attractive to let the developers
loose on simulating the product before all the instructional elements
have been determined. Without proper guidance, developers can easily
get carried away with detail that is unimportant instructionally.
This inevitably leads to projects and simulations that are unnecessarily
complex (even to the point of being worse than a simpler approach),
and take longer than necessary to complete (both in terms of time
and money).
We'd like to offer our
basic approach as the basis for establishing that communication,
in particular, for relating what aspects of the simulated device
the instructional designer needs for the project. Since we take
a instructional-centered approach, we purposely hold off the main
tasks in device simulator development until the basic groundwork
has been laid.
Our approach focuses
essentially on what the simulator needs to look like, and what it
needs to do. We don't have the designer try to specify how it works,
only what elements are required to fulfill the instructional pieces
of the presentation. We have identified five essential areas in
the specification of a simulator:
- Look.
What visuals are required for the simulator? The look describes
how the simulator visually needs to appear. Is the interface simply
an instrument panel, or does it include schematics and/or other
mental models? Ideally, we like to provide visuals here so we
have a starting point.
- Functionality.
What functions does the device have to perform? Since this can
turn into quite an open question, we like to break down the different
specific functions and computations that are required. Are there
any fidelity requirements in terms of behavior that have to be
met? For example, does the device have to perform a function with
a specific accuracy related to the real device? Often, for instructional
purposes, it is fine to develop computational algorithms that
approximate, or let's face it, fake, the output. That is not bad,
so long as the boundaries of realistic output are not violated.
You don't want users drawing conclusions that are incorrect, but
often the cost of developing highly-accurate computations is greater
than necessary for the tasks you need operators to accomplish.
Admittedly, this is an area we have gotten trapped in when we
start building the device before the instructional tasks are specified.
- Configuration.
How will the presentation need to configure the device, that is,
what starting points in terms of device state and context are
necessary? Knowing the limit of possible configurations can save
a lot of time from the developer standpoint.
- Active Querying.
What information about the simulator state or properties are needed
(e.g., for evaluation of correct or incorrect results)? This can
be determined by reviewing your performance objectives with special
attention to what you have defined as accomplishing those objectives
(the accomplishment is the element that says when you know the
user has met the objective). The prompting and feedback you design
will further help you figure out what information you need to
know from the simulator to make informed interventions.
- Passive Notification.
What critical events do I want the simulator to tell the presentation
that have occurred (e.g., to trigger evaluation, prompting, or
feedback)? An inefficient way to evaluate user performance is
to poll the simulator at some rate to see when the tasks have
been accomplished. A better way is to let the simulator tell the
presentation when the simulator has changed states, or values
have changed. These are what we call "passive notifications."
You as the designer should specify at which point the simulator
should communicate to the presentation that something meaningful
has happened. Note that the simulator may be generating a lot
of notifications that are not relevant to one particular task,
but you need to specify what may be relevant for different tasks
in the presentation.
You can think of the simulator while it's running as announcing
its current status with respect to meaningful things it does.
Whether or not the presentation wants to use that information
is determined by the presentation based on the specific task requirements.
For example, suppose you are teaching how to operate an analog/digital
watch, and one of the tasks is to set the correct time. Therefore,
the task will at least require a passive notification when the
watch leave the "time setting" state, and it will require
an active querying of the current time.
You will notice that
in the process of articulating your performance objectives and their
interaction requirements, such as the last part of Passive Notification
(5), you will come up with elements both for passive notification
and active querying, not to mention the other categories. We have
found that an efficient approach to answering these questions involves
reviewing each performance objective to determine required information
in each category.
In essence,
we find that the value of this approach lies in establishing a starting
point, namely the answers to these questions, which enable further
discussions among team members, but focused on specific answers.
We're always
eager to hear what you think!
|
|
| |
| |
| UPCOMING
EVENTS |
| |
| Do you know
about a simulation event you'd like to announce? Tell
us about it at events@FlashSim.com! |
| Date |
Event |
Location |
| Feb
11 |
UPenn
Bookstore. Here's your chance to try out a variety
of virtual products and equipment developed with the methodologies
taught in the book, as well as talk with Jonathan about his
upcoming class at Drexel.
Time and Location: 7-8PM, 36th and Walnut Street |
Philadelphia,
PA |
| Feb
17 |
Simulation
Based Training Development with Flash Hands-On |
New
York, NY |
| Mar
2 |
Simulation
Based Training Development with Flash Hands-On |
New
York, NY |
| Mar
5 |
How
to Construct and Use Device Simulations, Drexel
University Goodwin College of Professional Studies, 10-week
developer class (meeting once per week in the evening) |
Philadelphia,
PA |
|
| |
| We are currently
scheduling workshops and classes in the Hampton Roads and Washington
DC Metro area. Please let us know of your interest in attending these
workshops! |
| |
|
| YOUR
OPINION COUNTS |
| |
| Note:
While we encourage you to join the discussion, we feel we've
heard enough about making money fast, cheap or natural Viagra,
African dignitaries wanting to give us money, low cost insurance,
penis enlargement, dates for married men, Russian girls waiting
to hear from us, reducing wrinkles, tips for exploding our
income, and losing weight rapidly. So if your post was going
to be about one of those or along a similar vein, please post
somewhere else. On the other hand, if you need any of these
services, I'm the man to talk with!
Jonathan |
We constantly run into
all different people around the country and world who have interesting
simulation projects they have in mind or have prepared. We want
to encourage you simulator programmers, instructional designers,
gamers, managers, and other developers to share your stories and
best practices with the rest of us. We invite you to lead or join
the discussion on our FlashSim discussion board:
http://FlashSim.infopop.cc/
We also will monitor
the discussions for particular topics that might make good newsletter
information, so go forth and post!
If you have suggestion
for topics you'd like to see in the newsletter, or links to events
or interesting Flash pieces you've made, please email us at newsletter@FlashSim.com. |
| |
| |
| ADMINISTRATION |
| This newsletter (in
public form) also is available on FlashSim in the
RESOURCES section:
http://www.FlashSim.com/newsletter/v2n1.html
If you are receiving
this newsletter from a friend and want to subscribe yourself, please
email us a message with the subject "Subscribe" to addListener@FlashSim.com. |
| |
| |
|