|
SHIP SHELL
EDITOR Apparently, the same
self-replication technology that rebuilds the drones can
also create new hulls from scratch, based on your
designs. I've included a simple thumb-friendly shell
designer which can send the necessary construction
commands for you.
You start out
with just the stock Shells that come with the app. But
you can clone them and then edit your own copies to
create a set of custom ships to use.
The editor shows
the current hull shape (Shell) as a series of connected
lines, with 'handles' at the vertices, and in the middle
of each 'bone.' Drag vertices (round handles) as you
like. Drag bones (square handles) to 'break' them and
create a new vertex, that you can drag around.
Don't forget to
save your changes!
Your designs are
shared automatically with those with whom you make
contact.
>
PILOT FACE EDITOR
The AI indicated
it felt more comfortable if the individual pilots
provided an identifying image of themselves. Hence, in
addition to the SHELL that represents the drone, you can
provide a FACE that represents you, the pilot of the
drone.
It's still not
clear what the AI wants these for, but since there is no
requirement that they resemble you in any way, it seems
harmless enough.
PATCH EDITOR
As the AI works
on its speech skills by listening to what we say, I've
had some success communicating with it via music. I've
been working on a series of PATCHes (the knob settings
you need for the built-in music synthesizer to recreate a
particular sort of sound), and you should feel free to
clone and improve them at will.
There's also a GROOVE EDITOR for recording and
re-mixing loops and jams into mutatable music. You'll
find some tips here, and here but as I said, the AI is
constantly rewriting the interface!
STARMAP EDITOR
The game comes with a few dozen starmaps that you can unlock (via powerups), but the intention is for
players to create new starmaps of their own, and share them with each other.
If you're interested in becoming a Starmap Designer, check out our
Starmap Designer Resource Center
!
A StarMap is really just a text file that you can edit without needing any special software, but you
will probably find it most convenient to use your Google Drive, since the game can import from there.
StarMaps declare the static appearance of the map: the stars, gravity, barriers, spawn points, colors, pains, etc.
But they can also (optionally) include script code (using the 'lua' language, and a special synspace game
api)
This enables a starmap author to add quests and adventures to their starmap. You can even create campaigns of
multiple maps, sharing common player data (progress tokens). Assuming you have a copy of the game and a device
it can run on (with access to your Google Drive), there should be no special equipment or cost to being a
starmap developer.
To publish your starmap, just play it on the server. If anyone joins you, they will get a copy. If it is a TEMP
map (freshly IMPORTED) then the copies delete themselves when the game shuts down. Otherwise, everyone keeps a copy
and can start new sessios on their own.
You can clone any
existing Starmap that you have collected, and then make
changes to it, save it to a new name (hopefully retaining
some sort of chain of authorship) and then share it with
others.
Drop NPC
"Bosses" and other scriptable objects for
shared adventures, quests, races, duels, etc.
Some maps might
have NPC bad guys and support cooperative play. Some maps
might have highly storied quests, issued from 'planet's
via radio beacon. 'help us from the pirates' 'bring
medicine', etc.
DRONE AI
I think the
drones might be trying to learn our language. You might
think about what you say in front of one. Others might be
listening! I've added an option to squelch your
microphone, but otherwise -- they're listening.. and
learning.
MUSIC AI
I promise, you
will be able to turn this off.
===========================================================================
===========================================================================
SPOILER ALERT... BACKGROUND
INFORMATION FOLLOWS!!!
===================================================
===================================================
>
synSpace:
Drone Runners |
Lest the
back story encourage you to believe otherwise, I
assure you this is just a game, and does not
depend on the hijacking of any Radio Telescopes
or the breaking of any laws at any time. |
WHY
THIS APP? At one level, this is just a port
of my game, synSpace for Windows, to the Android
platform. But really this project came out of my
long term goal to eventually make Well of Souls: Rune Runner a more complete
experience, with player-created worlds, like its
forbear, my game Well of Souls (for Windows).
Only in 3D this time.
To take
Rune Runner to the next level, I needed to make
it multiplayer, and provide content creation
tools and a path for submission. Note that no one
asked me to do this, nor is there much of a
pressing need for this, it's just how I choose to
spend my weekends for therapeutic reasons :-)
Ultimately,
I would like a self-managing ecosystem of asset
types (skeletons, animations, sounds, textures,
materials, instruments, compositions, npcs, maps,
quests, etc) which were interchangeable within
the context of my android apps (to the degree
that makes sense/is possible), without
particularly trying to create a new Open Standard
and encourage others to join it. This is just a
cul-de-sac on the march to the future.
But in my
dream, you would use finger-friendly tools to
make cute little critters that you could then arm
and equip and drop into some jungle in a Rune
Runner map you just made and shared. And your
critters and map would ideally be archived in
some master database other players could browse
when making their own maps. All assuming I
declare some appropriate Terms of Use that
explains what the game will do with your
creation. It probably will NOT pay you. BUt the
idea is that it SHOULD credit you.
And you
should play along by not creating obscenities.
And there should be a mechanism for preventing
you from tainting innocent minds.
That's
the little dream. We'll pretend it's a plan.
|
Anyway,
so what does synSpace have to do with Rune
Runner? Not a lot. synSpace is a 2.5D
space game, a la the original SpaceWars, with a
lot of wiggly little details, and getting more
wiggly every week.
But being
a pretty simple game at its core allowed me to
use it as a driver for improvements to my python
based 'mixter' server (Mix for android, as it
were). I made that server for 'WarPath for
Android' but it only supported WarPath, where the
online metaphor is "all the players launch
at the same time" and Rune Runner needed
more of a drop-in, drop-out as you like, but
still offer synchronized experiences.
So, I
added some features like:
* drop in
play
* solid
infrastructure for secure sessions
*
possible access to SQL databases
* more
flexibility in 'intent' declararion of player (I
want THIS map, with THIS many peopld, using THESE
rule variations, etc, ) when selecting a session
assignment *including not assigning you to a
session if people in that session have you on
mute) These intents need to be game agnostic
since Mixter doesn't know game-specifics other
than "oh, it's a synthetic reality android
game" It's just pooling you with people who
have declare similar intents.
But
mainly this was to solve the WarPath problem of
"people are unwilling to wait for other
players to appear, if they have nothing to do in
the meantime." The server logs are full of
sad stories of players just missing each other by
a few seconds.
So, with
synSpace: Drone Runners, the goal is to have you
fully engaged in a multiplayer session within
just a few seconds of launching the app (had it
down to 2.5, but now it's up to 5). That assumes
it will resume with your previous intent (from
the last time you played), and then you can
change your intent and look for a different
session if you like, but you are ON THE SERVER
right away, no matter what else you do. So other
people see you and can play you immediately, so
fewer people miss each other and you have a more
predictable experience when you play.
Plus the
game itself gives you lots of activities to fill
the time with, including the creation of assets
using integrated finger-friendly editors and a
simple peer-to-peer asset sharing scheme. (sorry,
can't be used to move non-game files, and will be
unable to carry that illegal video download you
have there!)
And
that's what makes it a bit like Well of Souls:
Rune Runner. So the plan is to get all the
infrastructure working in synSpace, and then port
it back into Rune Runner.
|
The
Developer Blog for synSpace::Drone Runners (for
Android) Now I will just blabber on about
synSpace, what I did, what's working,
screenshots, etc. I don't expect anyone to be
reading this, but feel free to surprise me with
comments and suggestions.
Here's
the current Splash Screen. For ME, this is high
art:
The first
time you start the app, it will insist on your
picking a name for yourself. It's just for fun.
Don't use your real name! Well, you CAN, but it's
just for fun, so why make it about privacy? After
the connection to droneNet completes, you are
taken to the currently selected Star System (the
tutorial system for a newbie) and offered the
selection of one of eight drone star ships
available in that Star System.
The drone
channels are color coded, pick your preferred
color, if it is available.
While you
think about what color you want, the built-in
Handbook runs a slide show for you with more
backstory, and then the basic operation of the
game
That's
also an example of a supported 'Collectible.' In
this case, a 'Face.' You create them, clone them,
edit them, and share them. Collectibles are
shared automatically when needed, but that may or
may not grant the right to thereafter 'use' the
asset (in this case, maybe you cannot select
someone else's face (or clone it) without some
in-game interaction. Like "Hey, let's swap
faces!") But while you are wearing your
custom face, everyone who encounters you gets a
copy of it, which the game retains in a
collection cache (you COLLECT assets. It's a meta
game!) that they can review later.
Mostly I
do NOT want to 'lock' assets, but I see value in
a game mechanic where you share faces via
facebook or some other social media concept. But
stop right now thinking that your creation will
be 'protected from re-use' as I can make no such
promise.
Here's
another asset type, the 'Shell' (aka 'Hull'). It
represents the cosmetic outer appearance of your
drone (while the Face documents you, the remote
pilot).
Each
Asset type requires an editor, and while I think
it would be cool if all the editors where HTML5
thingamies that maintained a master database that
was then accesssed by the games... well, for now
the editor is built into the game.
And if
anyone is keeping track, yep, another lost
business opportunity if I can't spin the editors
out as standalong apps for another buck each.
But my
favorite new Asset type in synSpace is the
Musical Instrument with this editor:
Why a
Music Synthesizer in my Space Game?
Well,
because Rune Runner will want music! (see above
until that makes sense). I can also let you
define personal entrance music that plays when
you join a session. Maybe. But certainly when you
script a synSpace adventure where some malevolent
force comes on screen, you'll definitely want to
have some Theremins playing, won't you?
There is
pretty much no documentation yet for the synth,
and it's a moving target, but it's what I was
working on lately, so it's dear to my heart at
the moment. So I will now document it!
Obviously,
if you tap a note on the keyboard, you hear a
sound. The built in oscilloscope depicts the
sound it made (you can pinch zoom and scroll
that).
Being an
'additive' synthesizer, the actual sound is the
sum of a bunch of sine waves, each generated by
its own "Harmonic Oscillator" These are
defined by those green/yellow rectangles with the
"1x, 2x, 3x" text below them. touch
inside of one, then drag up or down (even outside
of it, just don't lift your finger) to raise or
lower the little attenuation control for that
oscillator.
The
higher the bar, the louder that sine wave will be
in the mix of sine waves you hear.
But the
loudness is also controlled by a Contour
generator, which you can see in the section above
the harmonic oscillators. Contours are triggered
by you tapping a key on the keyboard. They then
play out a little loudness envelope (a little
pulse that indicates how fast the note starts to
sound, and how slowly it drops off when its
done). You drag those little verts around to
control the shape.
Each
Harmonic oscillator is driven by one of the
countour generators (I offer six total at
present). But it doesn't have to all be the same
CG. You select a particular CG by tapping its tab
along the top. That shows its shape in highlight,
but you can dimly see all the other contrours in
the background to help you line things up.
By
default (until you change it), all oscillators
are driven by the far left CG, so they all get
the same loudness shape, and only their personal
attenuators control how loud one sine wave is
relative to the others.
But if
you then assign SOME oscillators to OTHER CGs and
then modify those CGs, you can achieve effects
like 'the fundamental plays immediately, as do
the harmonics, but the harmonics drop off
quickly, while the fundamental remains'
You do
that by assigning the higher harmonic oscillators
to CGs that start out strong, but fade out more
quickly than your 'main' loudness CG.
You
assign a CG to an oscillator by: 1.) select the
CG by its tab, 2.) hold finger still on the
oscillator for about a second.
You can
tell which is assigned by selecting the CG and
seeing which oscillators are GREEN (assigned to
this CG) or YELLOW (assigned to some other CG)
|
Fun with
Music So, you might be thinking "my
god, he's porting ALL of his Windows games to
android, and doing most of them inside of
synSpace itself!" And yes, this probably is
along the lines of my Windows game synJam (for
Arcadia), and I WILL seek to eventually offer
live performance with the other people in the
session.
By that
point, I should definitely make a separate app
that focuses on that, if only to make it easier
to avoid rendevous with people who insist on
playing their latest song to you.
Musical
Misogyny aside (I didn't mis-spell that, I made
it up! Unless I spelled it right, in which case,
look how smart I am!).
My thin
rational is, of course, that Well of Souls world
developers enjoyed providing music, and thus I
need to be able to do that, in general, and why
not just do it from scratch with my own
synthesizer than just use some easily available
MIDI code for android?
Shut up!
synJam
INVENTED fun with midi! Actually, you probably
can plug a nice MIDII keyboard into an android
usb plug, and maybe I will support that someday.
And I likely will offer a midi file
importer/exporter of some form, but my internal
music format is not pure midi, though it is
midi-like. (key up/down events, channels, etc)
synJam
addressed latency by having the performance be a
river that passed by all the players at a
different time. You could play along with
anything you heard coming down the river from
above, and people below you on the river heard
that same thing with your stuff added in at the
appropriate time, but no oone could hear anyone
'down river' of them, or at least not without
noticable lag.
But, in
synJam, all the performances ended up inside of
the MIDI file it produced, so playback included
all parts, some of which were then heard for the
first time by the upstream musicians, but the
idea was you would contribute to a track multiple
times until eventually everyone had a solid track
they liked (which then looped while other
musicians achieved their perfect recording)
At least
that was the idea, and I plan something similar
here.
Just
above the piano keyboard is a row of 15 buttons
(empty rectangles in the screenshot). The first
six buttons are shortcuts to your favorite
instruments. They work a bit like a car radio.
Tap to change patch, orlong press to bind slot to
current patch..
The rest
of the buttons in that row generally toggle
additional control windows, like the PATCH and
GROOVE browsers, the oscilloscope, the PATCH
editor, etc.
On the
far right is the 'social' key you use to step
through all the social keyboard choices (music
being just one of them)
Musical
Jams and Collaboratve Compositions
My PLAN
is to have LOOP button which opens a panel
(replacing the instrument editor in this
screenshot) that shows a diagram of a
multi-track, looping performance of some length.
The idea would be that within a given server
session, all players are synchronized to a common
loop. They play along with the timing of the loop
as they see it, and other players hear their
contribution either rigth away, or 'the next time
around' depending on whether the note arrives
before or after that loop point passes by on the
listener's device.
Probably
some finite number of tracks (midi limits
probably), and you have to grab a track for YOU,
so some moderatino required. But you can finishe
with one track, and fgrab aother for a subsequent
loop.
That
would be 'live' mode, or a 'jam'
But you
could also just ignore real time and click
anywhere on the loop to lay down a new
contribution at that point. All the data is still
being shared, so when you play your local copy of
the loop, it contains all that is known, even if
you weren't listening to it in real time.
That's
more of a collaborative composition where you
might even start with a prototype MIDI file (like
synJam did) to riff off of.
And just
to get my Windows game Collaboration involved,
maybe a collaboration for Music, where players
offer tracks, and get voted for inclusion in the
piece, which is composed one measure at a time.
See, life
is fun when rules are few!
I should
point out that as in love as I am with my
synthesizer, you won't really have any trouble
distinguishing it from a professional instrument,
and the key lag depends on a lot of things not
entirely under my control. On most tablets (well,
that are a year or two old at least), there is a
noticable lag from the moment you tap the key
until you first hear the note. Sometimes real
instruments do that as well (pipe Organs) but it
doesn't make them easy to play.
-----
Update:
After writing that, I went ahead and added a
'sequencer' and a new collectible type, called
GROOVE. A groove contains up to 4 channels of
'live piano performance' as well as up to fifteen
pre-programmed LOOPs which can be turned on and
off during a live performance. So, where a PATCH
represents a certain kind of instrument sound, a
GROOVE represents a multi-track performance that
can be played back in whole or part.
Like all
collectibles, you can clone and edit them,
replacing loops, instruments, and tracks as you
like, while preserving other elements of the
original
As I type
this, the way to share music with other players
is:
1) make
some interesting PATCHes on your own
2) use
your PATCHes to record a GROOVE
3.) on
the GROOVE panel, tap USE IT to select it as your
current GROOVE
That's
similar to how you specify your FACE and SHELL.
After a change, within a few seconds, the other
pilots in your star system have received the
'collectible id' of your new GROOVE.
Thus
everyone you meet sees the id of your GROOVE.
They then look to see if they have a copy (and if
they are ignoring you or something) and then ask
you for the actual GROOVE if they don't have it.
You
comply (automatically) by sending it to them,
whereafter it appears in your GROOVE browser.
On the
Pilot Info page, a new button appears if you know
of a GROOVE selected by this player. If you tap
that button it opens the GROOVE browser with that
groove selected. You can read about it, or just
press PLAY to hear it.
When you
receive a new GROOVE, you automatically unpack it
and get the PATCH ids that it uses. And again, if
you are missing any of them, you ask the same guy
for a copy.
Bottom
line, with minimum effort on anyone's part, your
GROOVE is sent to people who care, and people can
then easily PLAY it, if they choose to.
Obviously, being able to, under the proper
circumstances, get more live music triggers that
turn things on and off automatically is also
desirable, so long as the listener has adequate
control against spam in sound or bandwidth.
That's
not synJam, but it DOES allow collaborative music
projects :-)
---
Update:
Finally started the Track Editor, which lets you
delete and reshape your previously recorded jam
trax. It's not done, but should make a first
appearance in the next release.
It's your
basic Piano Roll display, with a pretty minimal
set of functions, but you can select notes
individually or in groups, and then modify the
selection. Shift it up or down in pitch, back and
forth in time, change duration or stress or
associated instrument. Finger Friendly, but
probably pretty useless on a tiny screen. Maybe
with a stylus.
|
How
To Play synSpace: Drone Runners (for android) I'm not really
going to cover that here probably, see game for
more up to date info. But here are some screen
shots and comments in no particular order
After you
select your drone color, you get to configure
your drone before launching it. That screen looks
like this, and is largely red because I picked
the red 'thumb' (see it on the left? It is now
decorated with some icons. The STAR means it is
ME (the person holding the device). You are
always the STAR of the game! The little crown
means I am the moderator of this server session
(server picks the moderator automatically.
Moderator role in the session has added
responsibilities and powers, in some StarMaps)
To change
your selections, you can tap on a named button,
or you can tap on the actual Face, Shell, or name
in the panel. Selecting a Face or Shell is also
how you get to the editor to clone and make new
ones.
You have
to make these choices before you launch, but your
previous picks are retained until you change
them.
The
triangle on the right is how you allocate your
initial six 'pods' between the categories of
Shields, Weapons, or Engines. After you launch,
you can pick up (up to) four additional pods of
each type, via PowerUps.
This same
info will be available in-game, for all pilots,
but will be read-only at that point.
The stats
just track drone destructions: yours (lost) or
theirs (won). The rating is based on the general
'chess rating' alorithm and goes up more when you
beat someone rated more highly than yourself (and
goes down more when you lose to someone less
highly rated than yourself)
You earn
galactic credits as a bounty for destroying
drones (since you're helping preserve the galaxy)
|
Scripting The game includes
a 'Threaded Script" engine, using Lua as the
scripting language. It's optional, but you can
add a script to your StarMap by adding a final
TAG followed by the text of the script
;
;
This is the last line of the normal starmap file
(that defines barriers and zones)
[SCRIPT]
-- This is the first line of your Lua Script
-- Note that Lua uses two dashes for comments,
avoid using semicolons
-- Your script is a message handler, that tries
to react quickly to incoming messages.
|
function onMsg( cmd, url )
|.. if cmd eq 'go' then
|.... handleGoCommand( url )
|.. end
| end
I added
the |.. crap just to force an indentation, you
don't do that for real. Anyway, I will document
the real API elsewhere as it comes into shape.
But just
to give you an idea. Imagine you wanted to play a
game of tag. The moderator would start the game
by sending a packet to all players (I mean, the
script would do that in response to the moderator
tapping a button that the script willed into
existence). That packet would send the full game
state "it=sernum" so everyone would
know which pilot was it.
upon
receipt of that packet, each player's copy of the
script is invoked with that message, and the
result is the script records the state, announces
it locally on screen ("billy is it"),
plays a sound effect based on a musical PATCH,
and commands the game engine to display a special
marker on billy's ship and add a special radar
marker as well. Whatever the script likes.
on
Billy's device, his copy of the script would tell
him to display the tag on his ship, and also
suppress weapon fire and shields, and slow him
down and whatever other primitives synSpace,
supports and your map game finds desirable.
Billy
would then be on the hunt for another player, and
when he saw him, hw would try to shoot him,
possibly by using a special weapon available only
on this starmap. When Jill sees her ship take the
right kind of damage, synSpace informs her copy
of the script 'Jill was hit with tickle_phasers
at xyz by Bill"
The
script is the only one that knows the rules of
this game, which it is inventing. It decides that
your report is honest and qualifies for making
you IT, so it sends a packet to the moderator
saying so.
When the
moderator gets an "I am IT!" packet, it
checks to make sure it makes sense and isn't some
antique packet from a player whose wifi was down
for 3 minutes...
and if it
meets the script's rules, it sends the big
"Jill is IT!" packet we started with,
and the cycle repeats.
As I
write this, the above is only almost possible. As
I read this later, version 1.0 has been released
and includes many possibilities via the game's
lua API. Check out the Starmap Designer Resource Center for more info.
|
TERMS of
SERVICE There should be some legalese
somewhere, but I have a short in-game ToS which
covers the basics. We reserve the right to
suspend your access to droneNet if you
demonstrate you cannot be trusted to play nicely
with others.
We
celebrate your creative expression, but please do
not abuse the provided tools to make vulgar or
hateful art pieces.
Accept
that while you are not allowed to use
Intellectual Property without the permission of
its source (so no pictures of Mickey Mouse), you
have granted an unlimited license to the other
players to build upon any art you create in game.
That
'art' extends to all collectible classes,
including, but not limited to: STARMAPs, GROOVEs,
PATCHes, FACEs, and SHELLs
Your
primary self-defense against obnoxious pilots is
to use the MUTANT BADGE (open their pilot info
and give them the MUTANT 'buddy badge'). This
will mute them, and block various transactions
with them.
Hopefully
the punishment can just be banishment to StarMap
Instances containing only other people who have
been banned from polite society.
|
And |
|