Synthetic Reality Forums Post New Topic  Post A Reply
my profile | directory login | register | search | faq | forum home

  next oldest topic   next newest topic
» Synthetic Reality Forums » Android Games » synSpace: Drone Runners » Meet synSpace: Drone Runners (Page 3)

  This topic comprises 5 pages: 1  2  3  4  5   
Author Topic: Meet synSpace: Drone Runners
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
today's question for google, spoken in the car:

"OK, google, who was the cute one on battlestar galactica and also Face on that other show?"


Did not pause a beat and took me to an info page on Dirk Benedict (any spelling errors are mine).

Pretty good, Google, pretty good. I just wish it read the answer aloud for me since I can't read the screen without a magnifying glass even when we're NOT hurtling through space.

And yes, ironically I know that's exactly the feature Google tried to get me to enable but I feared it since I want the default to be a normal quiet result set, rather than shouting out to the theatre: "DIRK BENEDICT WAS THE CUTE ONE"

But really what the mobile world needs is just much better volume controls. It's the 21st century, I should have to wait 4 seconds for a volume control to appear, and it should be easy to do what I want once it does appear. If it just instantly flipped to a full screen volume control wth separate sliders, fine. But I am constantly hitting power/vol buttons almost randomly, and then working through the idioscyncracies of telling it which volume I want to change, which is always the last one it wants me to change. It way overvalues its importance as a communicatinos and scheduling device, where I am more of a 'you are my servant, don't try to boss me around' mood in my inter,,,, aborting angry old man rant. This is about praising the Google Natural Language processing and knowledge storage/access.

You're OK, Google!

Maybe it could respond to "Shush, Google". I guess that's really what I want: quick mute. While it is fine to adjust your volume level carefully, most of the time I am just trying to turn it off or back to how I had it. So I would benefit more from a single mute button on the side of the phone... tap it once and it confirms current setting and offers large sliders and a mute checkbox. Tap it a second time and it toggles the mute. No more taps and it closes after 4 seconds. 3 seconds. well, just the right number of seconds, possibly informed by it actually measuring how long it took me to start touching it the last time I showed an interest.

My situation is that I test on a lot of mobile devices and they all have their buttons just slightly off from one another, even when following the same paradigm, so I don't get any long term finger memory as to where things are, which direction they go, (I'm looking at YOU, Nexus 9 Sanyo with your volume control that is actually sensible, but reversed from every other manufacturer) Yes, every other manufacturer got it backwards (because of their portrait mode bias) when I know that landscape is the one true mode for all things.

What else.... My Google Fi phone continues to be better (at about $25/month) than my Verizon phone at $260/4 lines. Sadly, I had to replace my verizon phone within the last two years, so it would actually cost me money to shut it down.

And again, my only real complaint about Verizon is the money. The simple fact they advertise so much is evidence their plans could be less expensive.

I just don't think a 21st century portable super computer with more power and access than anything at any time ever before in human history, should cost over $70 a month.

It should cost $10/month, plus data at a reasonable linear pay-for-what-you-eat, rate. (Google Fi guarantees $10/GB, and only charges for the portion you actually use)

And, for another $10 a month, I should get all the world's collective media (music, movies, books..) streamed on demand.

And there should be guaranteed housing at a reasonable rent (say $250 per person, or $1000 for four person family, though you always pay for square feet, which is available in a variety of configurations)

One major component of the 99% debate is that housing used to be affordable. You didn't NEED a huge income, because housing wasn't outrageously expensive. The baby boomers speculated the crap out of housing (on the leading edge of the boom. We can expect probably a plunge at the trailing edge). Likewise oil went purely speculative, so energy prices were unrealistic. (Fracking is fixing that. Sorry Coal, your true enemy is Methane, not Solar)

But if the average taxpayer had affordable housing, healthcare, and education opportunities, things would feel a lot happier.

A Basic Income is inevitable (either that or complete revolution, really) but can be done incorrectly for sure. It's like if I just decide to give you $1000 a month whether you need it or not, versus my paying your qualifying bills up to $1000 a month, but keeping any excess for myself.

Also, all 'gifts' from the government should be tracked over your lifetime, and should you someday be in a better position financially, you would automatically pay back what you received (it's never a gift, it's always a loan/investment in you. Interest free, no need to pay it back unless you CAN, and then it is mandatory.

So the system can in theory be self-funding, or at least not be entirely funded by this year's tax base.

But the real value of the Basic Income is as the feedback (turbocharge!) mechanism in the jet engine of the economy.

* government collects taxes from this year's economic 'winners'

* government redistributes some portion by basic income (which I think goes to everyone, even 'the rich' just to keep the accounting fair, though it obviously makes a bigger difference in the life of a poor person)

* here's the important part: the basic income is then SPENT, going to businesses who will become next year's "winners" (and will pay the most taxes then)

And the important bit is that actual real consumers are spending it. It isn't being doled out by the government to specific contractors who probably are corruptly connected to our legislators.

So the 'winners' are the ones who provided the most real value to the consumers, who liked them best.

So long as the basic income is mandatorily SPENT each month, this is just a flow control problem and the manufacturers actively compete for a larger part of the stream, but the total money in and out is basically the same, just flowing through many pockets.

Now, if a company wants to also have a big bank account (money NOT flowing) then that money has to come FROM somewhere each year. So the system needs a way to explain that. And I think the magic word is 'wealth creation' that while processing $1 of basic income, you actually created $2 worth of value, and kept $1 for yourself.

That's fundamentally inflationary, but I think we already depend on inflation, as an correction to the speculated prices. I take out a loan to buy my overpriced house, but inflation makes my 30 year loan payments feel cheaper over time (assuming my wage is one of the things that is inflating)

I would say in my lifetime, at least half my perceived growth was actually phantom and just the result of inflation raising all boats, as it were.

That works, so loong as you accept periodic massive deflation events, or repricing of currencies.

For sustainable capitalism though, I need to be able to spend X on materials, Y on labor, and Z on fixed costs, and then sell the product for more than X+Y+Z, the difference being the 'intrinsic value' of those materials having been skillfully rearranged into that product, in a way the consumer could not easily do for themselves. So long as that is honestly true, capitalism creates wealth.

But wealth is not permanent. I can convert my wealth into donuts, or other perishables. And with that it is completely removed from the economy (well, other than value as fertilizer, I guess), and anything removed like that is great, as it gives us an excuse to declare more growth without feeling inflationary. Sinks and Sources.

Likewise, hoarding of wealth for wealth's sake can be very harmfully inflationary, and is one reason we are simply no longer offered savings accounts that pay any interest to speak of.

The economy cannot strictly speaking survive with the level of savings that already exists (in a few hands), so it is to be discouraged.

Flow is king. Keep the money in motion and discourage speculation (which does NOT increase actual value, and is unfair since non-participants to the speculation can suffer the negative consequences)

Using Skilled Labor to Create Desirable Products from Inexpensive, but sustainable, resources, is the One True Way to create actual wealth. (which comes ultimately from the skilled labor, and seasoned management, in exchange for a fair wage, and profit/ownership participation )

Creating shortages, betting against markets, monopolies and cartels are great ways for the well-connected to exploit the system for their personal gain at the expense of others. (Why does a banker get such a high percentage of my IPO? Has he really performed a 50 million dollar service for me? I mean, sure, it's a lot of paperwork. But 50 million dollars for a week's work? That's pretty good. I bet there's a lot of competition for a job that good. No? How odd!

I mean, you might argue "why should a sports star make so much, why can't a hedge fund guy? Isn't he a star in his field?"

Maybe you can, maybe you can. And I'm not against being rich, nor even against getting lucky, or even being rewarded for working hard and wisely.

Capitalism is great! It's the best ever system. It's evolutionary! It just needs to have real competition or it's not capitalism. And if you're going to bend it anyway, a little socialist bending now could prevent a total meltdown later when literally none of us will be able to find work, since it will literally all be automated.

At that point you pretty much have to rethink everything. If Emancipated Autonomous Giga Factories will magically churn out plasma tvs from pennies worth of sand and solar power, then does it still make sense for anyone to own it? (hence the Emancipated) and maybe we just let the factories do their things and we live off all the great free stuff, and only 'pay' to the degree an item is not sustainable.

I mean, if Elon Musk decided "I have all the money I need to colonize Mars, so I hereby liberate this factory to serve the public good, in return for which I expect $1 per year", then that would be one such factory. And possibly, that's all you need if the factory can replicate itself (it's just a giant 3D printer, right?)

You just have to be sure the factories know when to stop building things... "the market for tv factories has saturated. We can't get TVs any cheaper than negative 57 cents, but a hamburger is still over a nickel, so let's invest more in printing those, or pre-cursor materials for final assembly of burger at home."

And then we just sit around all day chatting with our friends. You know, college! It's what humans were meant for.

And we form groups that do stuff cos we think it would be neat. And maybe we're wrong, but who cares and we're not hurting anybody. And sometimes we get paid for something we did or made. We're never cold or starving, but neither are we all living the rock star lifestyle.

We still want to encourage people to be.. hardworking.. in a way, but maybe not a way that is measured by stuff they make.

And try to avoid becoming a bunch of couch potatoes at home with VR goggle-beds, just being parked. Sort of a we-built-it-ourselves "The Matrix" (I guess you would need a service industry of people who make house calls to make sure you're not in too deep a pool of your own effluence. Nah, robots can do that, too)

So, ideally, it's more like college when you were too poor to have your own VR-bed-toilet, and still had to go to concerts, swimming, bike riding, and other unfortunate healthy activities.

But never without your personal "selfie-drone" that let's you have an infinite conversation, unbound by location in space. You're always alone physically, but always in a group, um, telepathically.

Hmm, a typo there has created a product category: telephallic.


Now, the cool thing to do would be to delete this without even posting it!

I'm not that cool.

But I can always delete it later, and I reserve the right to change my mind on all topics.

[ 06-22-2016, 08:05 AM: Message edited by: samsyn ]

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
Some new videos of various things....

Another 'bot ballet' where I lure some drones into a zone I know will hurt them, and make them angry at me.

https://www.youtube.com/watch?v=Wb35W1CB_YQ

And another 'bot cut scene' that is nothing new, but now is formally documented, informally

https://www.youtube.com/watch?v=CK9GvI47EVM

The last one is more the rambly, mumbly, run-on grunting video showing the First User Experience on a new device (Tangerine $49 Kindle!).

I didn't PLAN to test FUE, but it's serendipitous that I did, since it was pretty broken. First thiing it did was accuse you of not owning the default map.

When I fixed that, I also upgraded handling of 'no network' and added a simple SOLO play mode (basically it's the same as being on a server by yourself. Some maps may be more entertaining than others in SOLO mode)

But at least the game isn't completely blocked if you have no wifi. If you want to FORCE solo mode, I don't have a button for that, you have to disable your wifi and restart the game :-)

The game really wants you in multiplayer, if at all possible :-)

Oh, and SpaceX had a hard landing on OCISLY in real time, which ends the video...

https://www.youtube.com/watch?v=mLlqguz5_0Q

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
still too busy with work work, but here's the latest playthrough video

https://www.youtube.com/watch?v=pqw2wsfIgIU&list=UUJ04cum1DVWsXHrtxk_A0Uw&index=1

I used this camera holder thing so it would hopefully not be so sea-sicky. But it ended up losing the camera zoom and resetting to wide angle without my noticing it, such that things were way too small. So then I used the video editing software to zoom back in, for a sort of low rez closeup.

Hopefully I am just collecting footage that can someday be edited with a new sound track that isn't mister mumble mouth.

The tutorial map is getting approachably easy to add story to, though the 1500 lines of support code is definitely in the way. But it's just a couple lines of code for my training sargeant to assign you a new task.

Lua has the concept of the 'require' keyword which can be used to load a lua 'library.' So my goal should be to support that, with some non-standard ness, to get something the effect of the WoS #include command.

It would probably look like
code:
-- Hi, I am some lua code
require http://www.synthetic-reality.com/drone/story_platform

-- The line above basically fetched the text of
-- a lua library from a web resource, then loaded
-- it into this lua context such that the
-- following lua code can act as if those
-- libraries are available (because they will
-- have created one or more global objects
-- you can invoke methods on, like the game
-- object you always have.)

But I wouldn't really start out with it accepting random urls, and initially though it might LOOK like it is fetching a web asset, I would probably just include my 'platform' with the game itself, and the require command would just exist so you could decide whether or not you wanted to take advantage of the library. Presumably it would save you money and load time to NOT use any libraries, if your starmap was something that didn't need that stuff.

And when the day came that I DID allow random urls, I would probably cache them in some way. The issue being these are getting pretty large, and a standard library shouldn't be changing much.

---

On another subject, it looks like I will be upgrading from my Vista PC finally. My synReal machine, I mean. It will be the first time I plugged the cards in myself in a very long time. SOrt of a budget gaming machine with emphasis on SSD, and only a mid level graphics card.

According to the benchmarks, the CPU upgrade alone should be 250% not counting the faster memory and instant disk access, so it SHOULD be one of those upgrades where things actually feel faster once the dust settles.

This will also be 64bit Windows (10), so I don't know how much of my old stuff will be affected by that transition, so I am keeping the old machine around.

I look forward to all the stuff that refuses to install on the Vista machine (new Chrome, Kerbal Space Program, you know, the necessities!), and Visual Studio Community 2015 (free) sure LOOKs like a good deal. Not sure what the catch is.

Wouldn't it be funny if VS2015 could directly compile old WoS and have it run on a windows phone? Still, WoS 2D has that two-button mouse dependency that translates poorly to touch.

---

But yeah, SSDs come in 1 Terabyte already. That's exciting.

ZOTAC GeForce GTX 1060 AMP Edition, ZT-P10600B-10M, 6GB GDDR5 Super Compact Dual-Fan IceStorm Cooling FREEZE Fan Stop

which is also ten years newer than what I have. Well, maybe only seven :-)

So basically a micro ATX MB in a mid-tower with SSD and a video card and not much else. Just within the limits of my physical capabilities, though I am still scared of the cooler. I've watched a bunch of youtubes though, and it SEEEEEEEEEMs easy enough.

it will be nice to have more than 3GB or RAM, as well.

I have to pay for another copy of Windows though, since I didn't keep track of all my update disks along the way.

And Windows 10... I will NOT be close minded... I will NOT be close minded....

Though it looks like a one month subscription to MSDN mmight be a way to score Win7 install disks. BUt I will not pre-judge win10. I've used it on my other machines. It's not as great (yet) as Win7, but a lot of that is just familiarity issues.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
Leniad
Veteran Member
Member # 194

Member Rated:
4
Icon 1 posted      Profile for Leniad   Author's Homepage   Email Leniad   Send New Private Message       Edit/Delete Post 
Hey! This is looking nice! It's good to see you working on one of the better Arcadia games again [Smile]
Posts: 794 | From: Somewhere in Argentina | Registered: Jan 2000  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
Hi Pablo! Hope all is well with you and yours! I mean Olbap. :-)

Here's a progress video on the scripted tutorial. I guess this is about a third of the map.

https://www.youtube.com/watch?v=U46o393-WB8&feature=youtu.be

Oh, and I finally put together the new system, and all the parts went together as if I had practiced repeatedly by watching endless youtube videos ahead of time. There was that moment where the cooler felt like it was slipping, but I think I survived it. Only one skinned knuckle that I can see. SSDs are, of course, the bomb. Win10 was surprisingly easy to install. Easiest network setup I have ever encountered. Installed Steam and downloaded all my games, played a few to prove the new machine is super fast, compared to the old one. Bought a new game: "Inside" which is a real mind-bender. But still haven't integrated it into the computer room, as it were. Got a huge print illuminated keyboard which is pretty nice.

Oh, and for the record, I never would have been able to follow the instructions that came with the cooler (weird international diagrams with no words and images that didn't match reality), so youtube was a godsend in that regard.

----

oh, and my comcast link is hitting 100 Mbps on occasion, so THAT part of my life is running on all cylinders.

[ 09-07-2016, 01:15 AM: Message edited by: samsyn ]

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
Hesacon
Obsessive Member
Member # 3724

Member Rated:
4
Icon 1 posted      Profile for Hesacon   Author's Homepage   Email Hesacon   Send New Private Message       Edit/Delete Post 
 -

--------------------
SoV: Exalted Devout Oracle | World Developer | The Black Guard
Outside is just a prank older kids tell younger kids at Internet Camp

Posts: 9532 | From: NY | Registered: Apr 2003  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
I made another video today about the music system in synSpace: Drone Runners

https://www.youtube.com/watch?v=7debGnSK42s&feature=youtu.be

Because a lot had changed? Nah, I just felt like it. Well, my excuse is that most of the other music related videos suffer from over-exposure which makes it impossible to see the countour generator lines clearly, so I wanted to try it with that adjusted for.

My Excuses for not releasing this yet:

* Still very busy at work, even on weekends

* tutorial is basically done, but I would like to improooove it. I could do that post release, and probably do it better.

* storage fears. What if I have a bug, or need to make some incompatible change, such that all art assets are invalidated? Well, I probably will stil have that possibility no matter what.

* no built in barrier editor. This is actually a larger thing, having to do with my 'plan' to allow late/editable bindings which still has just enough vagaries around the edges (goal: to NOT waste a bunch of time making something fancier than needed, nor to miss some obvious opportunity to get it right so as to maximally leverage everyone's work. Ditto for the 'secure include' concept so you don't have to retype massive amounts of library code.

* No integrated use of vocoder, other than a fun mini-game. I really want my "aural chat-that-isn't-voice" And I should think about the API for that so it is useful both for the engine and the scripts.

* No 'delete the bad notes' key in the music system, and an incomplete automatic music composition system (a composer helper that lets you just indicate a progression and it adds a bunch of fiddly bits, though I keep forgetting that should be a starmap on its own with a cool editor in it that results in GROOVEs being generated that you then use in OTHER starmaps.)

* incomplete PARTY system, needs at least the 'follow' mechanic, and probably some notifications that would require server changes.

* no tractor beam! I want tractor beam, and maybe 'linked ships' (I'm NAV for both of us) The metaphor for that should be remote control though, not tractor beam (though the engine math is similar, just 'beam stiffness' :-)

------

OK, now I want to talk about tractor beam again, which is probably a set of geame 'mechanics' that can be enabled in various combinations to support various kinds of things

- two point 'tether' acting as a spring connecting two game objects (ships). Has an unstretched length, and some springiness factors for compression and expansion. Plus some max force value beyond which it breaks

- several players have to be able to tether the same target. so they can work together to pull it somewhere.

- while tethered, object physics includes an additional computation, which is driven by the instantaneous force of the tether, applied to the individual masses of the end points. Something like

code:
   acceleration = normalComputation()
if( tethered ) {
F = forceFromTetherGivenThePositionsOfEndPoints();
if( F > maxBreakingForceOfTetherAndForLongEnough ) {
breakTether);
// same F is applied to both endpoints
accelerationfromTether = F / mass
acceleration += accelerationfromTether
}
position += velocity * deltaTime
+ .5 * acceleration * deltaTimeSquared
// check for collisions/tether limits
// and coerce position change as needed
}

So if mass of ship is just 'total number of pods' (from 6 to 18 over course of game), and we had a completely rigid tether holding us exactly 1 km apart, and I fired my engines, then you would ultimately be pulled behind me, swinging like a pendulum, but always exactly one km away. I could run my engines up to the breaking limit for extended periods.

If there is some springiness, then you are also bobbing closer and further from me, and that probably leads to reinforcing oscillations on occasion that increase the instantaneous tension, leading to premature breakage.

But springiness might also allow a gentle accelration of a possibly otherwise immovable object.

In the case where both ends are firing engines, in incompatible directions, the 'collision' system has to do the right thing.. Maybe that's just "cancel the component of motion in the line of the spring" Yeah, make the initial computation in terms of acceleration on the end point, then cancel out (or dampen with springiness) the specific inline component of that, and just trust the rest of it to work out.

Which turns out to be what I already am doing to prevent your engines from adding acceleration in the direction of your current motion if you are at the max allowed game speed (while still allowing gravity to hurl you much faster than that)

OK OK, other attributes of tractor beam

* length/maxLength/minLengh
* springiness/breakTension
* cost to launch it (charge, stack limits)
* cost to maintain it (charge, energy?)
* ooh, vampire mode, suck energy while attached

oh my god.. yes, a map where the NPCs all fire light weigth tethers that break pretty easily, but suck energy from you. And you have five of them on you at once. Eeeeew. Needs a good 'sucking' animation. Maybe just a little circle that moves along the line like an elephant through a snake...

ditto for a 'charging beam' And so this should also cover the situation where there is no actual spring force at all, just a visual line that has some length limits (before breaking) and can indicate something happening (recharging or something else)

I was going to gave 'pain per second' but I guess that's included in the above.

But yeah, you could use one to refuel your team mate, from your own stores. I guess you would want a button to inentionally break the tether.

NOW, oh, I was going to ask "are these single use or repeat use until broken?" but we can have both (just another parameter), but the single use things would disappear from the button bar as soon as you tapped it, so there would be no convenient 'release' button.

Or.... the single-use just means it goes away 'upon release' so the currently active tether could maintain a button throughout.

Now, what if I wanted to tether two things at once. I don't think I can. I mean, tethering is an action that A does to B, so A is providing the tether and the UI and I declare he only gets one at a time of that.

B can be the target of several As at the same time, though, so you can passively get multiple tethers, but you can't actively initiate multiple tethers.

What if I tether you and you tether me at the same time? that sounds legal. Rather than 'cancel out', I think we are just double tethered and each tether does the math individually (so strain is not shared... hmm, that would be sad, but acceptable)

* tether color(s)
* render 'style' (limited to 'straight line')
* particle generation (maybe it sparkles on one end)
* launch speed (instant, or does it travel outward)
* predetermined target, or just 'whatecer gets close to the tip (like you fire a projectil towards something, and that prkectile is dragging an energy 'rope' and if the projectil scores a hit, then the rope is attached

* breakage animation (does it rewind back into your ship or just disappear) more particles?

* maybe some coloration change to indicate stress. I would prefer that breakage happen over time than all at once, like the tether has N hit points, and breaks when the last one is gone (I would like barriers to also do that), then normally nothing would diminsh th ehit points, except when there was great strain on the tether (losing points at some rate). So a brief strain doesn't snap, but the same strain applied over time, does. But even a brief strain compromises the lifetime of your tether.

oooh a tether used as a bullet wall? work together to make a bullet mirror to reflect a stream neither of you could survive on your own? reflected back on this cannon that is protecting a tunnel you need to fly down?

But other than that, I think it's shippable, so long as people's expectations are set appropriately. And I probably won't do anything too irritating to the players. And usage will presumably be too low to make my servers sad. creating a nice safe space to continue fiddling with for years to come, evolving into who knows what.

Youtube has finished processing my 4GB MP4 (converted by me to 300MB MOV and uploaded via comcast at about 6 Mbps). In theory, my new pooter has everything needed to do a better job on these, and eventually I should make One Official video (with my charming daughter and son as the talent, of course). Lord knows, I can't use the ones I've made for any sort of 'marketing' purpose :-)

Sorry to talk about the same things over and over again, but over time (a lot of time), things do seem to get done.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
Oh, so one of my tablets updated to android 7 (nougat) and synSpace immediately started crashing on launch.

Also, android 7 is the first version no longer compaitble with the Eclipse/ADT environment (Google commanded us a year ago to switch to Android Studio), so I could not get any logging at all out of the device to debug the crash.

Until I remembered I could get the log directly from the command line (which means they took some actual direct action to stop Eclipse from seeing the log, which is pretty low)

The log said (and I hope I didn't already report this, it was a few weeks ago) that I had caused a policy exception by making a network requiest from inside the main UI thread. Something that had always been 'illegal; but never led to a crash before.

Of course, I would NEVER invoke network from inside main UI thread, right? Except in this case, Google was completely correct. When you left a server, I was accidentally sending the 'good bye' packet from the wrong thread!

Now, here's where it gets good. Coincidentally, my server was also unhappy with the low quality of client good bye signals, resulting in the server almost always claiming you were still connected when really you signed off days earlier.

Once I fixed this violation, I saw the following changes:

1) good bye signals are now super clean and the server is very up to date on who is connected.

2.) no longer crashes on launch on android 7

3.) shut down no longer leaves an orhpaned thread running, which was preventing the andoid life cycle from completely doing its thing

4.) All of a sudden, I recover from being put to sleep... like a champ!

It's probably too soon to declare victory on that, but I haven't had an 'stuck asleep' issues since then.

That was a big nasty for release, so it's fantastic if I can really kiss it good bye.

Oh, also, it sped up my launch greatly. Apparently, it had been churning internally *i.e. instead of crashing, it would just go non performing for awhile, presumably as it wwaited for an aborted net request to time out.

----

So my remaining release gumption traps are:

* really finish the tutorial
* really integrate the vocoder
* make sure the starmap can play grooves
* sure would be nice to have tractor beams, but they could also be a nice release 2 thing.

Oh, I recently added 'tool tips' for the powerup buttons. So if you LONG PRESS one you get a little ibfo about it. Watch out to not 'tap' by accident and use the powerup.

I would also like to harvest all the SHELL and FACE designs I have made so far, and add them as default art for re-use by mapmakers. Also some PATCHes and maybe even a GROOVE to come stock with the game.

----

I left the late-binding comment hanging: My goal is to be able to use some sort of link editor to let the map designer populate the map with assets from the map designer's current collection. Then, the thinking goes, when you CLONE the map to make a shippable version, it takes all those local assets and turns them into some sort of text blob insisde the map file, so the assets can be included 'with the map' without requiring individual collections. Or not. Asset management is not super fun for me, so I want it as automatic as possible, though a central repository would also solve the problem.

Anyway, probably unlikely to be a first release issue.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
today I re-implemented TOKENs... again

The problem was that the map script can never just 'ask' for information, since that information is always on the far side of an inter-thread message queue.

So whenever a TOKEN changes, the game engine sends an onTOKEN message, with the full set of 248 bits for the current player.

The script caches the most recent set, and the game promises to message updates as promptly as possible when changes occur. (generally only when the script asks them to change)

Then the script tests those cached values whenever it needs to know.

There is a delay from the time the script sets a token, before it is reported as set, should the script test it immediately afterward.

For Example

Map grants you a token (you accomplished something to be remembered)

code:
   -- the player has finished task (#14)
-- we don't want him or her to have to repeat it
-- set the appropriate token (0 to 247)
setToken( 14, 1 ) -- i can set(1) or clear(0) it

That goes through the queue to the engine that maintains a datablob that remembers up to 248 token bits, per authored map-root.

It takes as long as it takes for that message to be delivered to the game engine. If you were to try to read back the new value right after you set it, you would still see the old value.

code:
-- check if I set token 14
if hasToken( 14 ) then
-- cool, it appears to have worked
-- say thank you and start the next task
else
-- I guess I will go ahead and make him do
-- task 14 again until he finishes it.
end

In general, maps do not share tokens. Each map declares a root name ('maproot') which is the name of its token storage.

code:
; in the credits section
; actual title, with spaces
mapname= The End of Indolence
; root keyword, common to all your works, sharing tokens. alphanumeric only, no punctuation
maproot= IndolenceTrilogy

So you can release additional versions of the same and different maps, using the same 'maproot' and able to share persistent tokens. For the prequel maps "Birth of Indolence" and "Indolence Prime" in this case.

or give each map a unique (within your sernum) maproot, and hence its personal set of tokens.

if you clone from another work, it may keep the same maproot (lazy clone), but will have a different sernum, and hence a separate token set.

So there is no reason to clone a popular game and edit it to grant you all the good stuff, and then try to play against people playing the original version.

Anyway, it was kind of a pain, since in java I store the bits in an array of 64bit longs (but java doesn't have 'unsigned' concept), but lua is constrained (well, in my case) to 32bit, also signed. So all those sign bits were ultimately just too horrible to deal with and I ended up only using 31 bits per array entry in lua, and 62 in java (yeah, I know).

Then there is some JSON in the middle that is doing its own funky thing (I think it is working out whether a negative or positive version of the value is fewer characters and using the shortest one.) It shows scary negative values, but it comes back out of it undamaged at the other end.

I did some unit testing and it eventually worked :-)

But I guess the tutorial needs a map option to reset the tokens for replay of the actual tutorial stage.

----

my current lua boilerplate is well over 2000 lines already, and it doesn't have all that wide of an API yet. I know I will add a library metaphor (and then maybe you could publish via a set of files on your website if that was easier. But not for first release, which only needs the actual space pirates and slave miners to make an appearance

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
Then THAT happened.

But let's see if I am back on course now.

Moved the web site, so I won't have that as an interruption any more. Saves a little money.

wrote the outline for the rest of the tutorial.

it doesn't have to be perfect in release 1, just have to react promptly to player feedback.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
MAP TRIGGERS

So, trying to finish my tutorial script means I also have to test/tweak the game engine API to support what the script would like to do.

And there's a spot in my story where the player is told to meet up with another ship "behind the fuel depot"

Now, I could have put a zone there and reacted to the existing zone enter/leave messages (the same ones I use for capture the flag), but I really wanted to be 'close to the ship' and not 'in the zone'

So, instead, I added another 'thing', the Map Trigger. Your script just requests a trigger, providing the conditional parameters and the name of a message to be sent when the condition is met.

This is specifically for conditions the script cannot work out on its own (the script has no idea where the ships are unless it put them there)

anyway, the lua that does the work looks like this

code:
    waitUntilPlayerNearBot = function( scene, bot, dist, msec, hints )
local senseIndex = 1 -- in theory we have an array of these
scene:startDistDetector( senseIndex, bot, dist, msec, "uGotCloseToKlaus" )
scene.senses[ senseIndex ] = 0 -- clear old value
while ( scene.senses[ senseIndex ] == 0 ) do
-- TODO: emit some hints
wait( 1 )
end
end,

senseIndex is actuall trigger Index, but you control it. so '1' for your map, might mean "got close to Klaus"

Once the game engine sees the player sufficiently close for enough msec, it sends that message to the scene. The scene has a handler WHICH IS FREAKING DYNAMICALLY ADDED TO THE TABLE. code as data is mind blowing. And there is a routine hard wired to that message.

Anyway, I like that the message handler is defined in the routine that cares, instead of at some top level all worked out ahead of time.

That bit looks like this

code:
    startDistDetector  = function ( scene, senseIndex, bot, dist, msec, uMsg  )
-- I think this guy adds an actual message handler to the array. I mean,
-- why not?
-- this is called when the game engine sends us the uMsg we asked for
local senseIndex = 1 -- TODO: pass this in args

scene.handler[ uMsg ] = function( scene, args )
log( 1, uMsg .. " handler in scene id ".. scene.id .. " was called" )
if ( scene.senses[ senseIndex ] ) then
-- just increment the sense and let the caller work out what to do
scene.senses[ senseIndex ] = scene.senses[ senseIndex ] + 1
end
end

-- THEN we tell the game engine what we're looking for
-- 1 = distance check from ship, send message when trigger hits
setTrigger( 1, bot.ship, dist, msec, senseIndex, uMsg )
end,

Writing a tutorial is a necessary evil. Many improvements spawned by necessity. I think I finally understand how to use my camera API without it getting all jerky. I want to be able to do WoS scene timing, with camera cuts and 'orbits' during the scripted dialog, and not have to think about it to prevent camera jerkiness

having the ships 'turn to face the ship they are talking to' is surprisingly effective. Kinda dragon warrior I.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
let's see... after the basic 'how to' tutorial, the script now delivers backstory, directs the camera, can wait for the player to achieve rendevous with an NPC, can add a new powerup dynamically to the map (escaped miners), gets notified when the player taps the pup key, using a message which is dynamically added to the message handlers of the scene (doesn't have to be pre-planned), counts the number of rescued miners, giving hints and trash talk through out, pulls a major switcheroo (impossible to guess what's coming, it's the most original thing ever written)(I jest).

But now I have to do the big boss fight, with a side of minions. Basically the big bad guy has been severly damaged and is lurking inside of one of the two clone factories (squares) on the map. You need to do X (game over, you win) before he is repaired (game over, you lose)

I think I will just plant his minions outside the zone and put them in a guard mode where they do not move from their sentry position, but shoot at anything that comes close. Then your official goal is basically to capture the enemy flag 3 times, but metaphorically you are damaging the energy crystal that powers the clone reactor.

Capturing the flag is impeded by the minion sentries and the zone's hurtful energy while you are inside of it. So you probably kill the sentries first, or get someone to distract them, or find a suitable shield and try to race through.

Once you 'destroy' the clone reactor (hmm, that has a nice ring.. but I think I am married to Clone Factory for the whole concept), anyway, then it turns out that the boss was just finally repaired, so you have to fight him anyway, and he needs an AI that is difficult, but not super challenging

ANd that last bit is probably the replay point if you choose to play the map again in the future as a basic melee ctf game.

the tutorial itself is completely solo, in the sense that any NPCs it makes are only seen by you. BUt everyone sees all the training pens and the fellow newbies training in them. We just don't see what they are shooting at. We can join in and maybe get lucky if their copy of the game feels one of our attacks was successful.

After part one of the tutorial, I remove one wall of your pen, so you can freely go in and out (and I keep a full recharge pup in there for you), but only YOU see the missing wall. To everyone else, the wall is there and they and their bullets, just bounce off. So each player has a little safe area they can flee to.

---
my current story writing technique, such as it is, I am at least making tiny steps of progress:

1.) write an outline. If you can't do that, it won't be any easier once you start coding. It doesn't have to be perfect, and you will follow inspiration as it comes, but first an outline of the whole map story.

2.) write the dialog (inside of real 'say' commands)
As in: write out the full dialog of the entire story, as if it were experienced linearly all at once. Use comments to indicate stage action pauses like 'wait for player to rendevous with X'

3.) play that a few times and get the dialog close to what you'd like (It will continue to change though). This is also where you establish all the bot characters you need. Make a Lua table for each bot, setting their name, thumb and other properties.

4.) Think out your camera work and add any transitions of point of view from player ship to another and back. This is something that needs tweaking to get a pleasant pacing

5.) implement each of the 'wait' points as a call to another function, like "waitForPlayerRendevous( bot )" and just make empty functions

6.) play the whole thing over and over (and maybe add some debug flags to let you skip big chunks. You probably should plan your TOKENs as part of the outline. I will probably use 3 tokens or so, so you can start at the beginning, just after the 'how to', or just before the boss fight based on your best progress so far on that map.

7.) implement the 'wait' functions, that wait (and hint/taunt) for the player to achieve some goal before continuing with the next dialog/camera work.

In my case, I have the additional step of

8.) add game engine API to support the thing you really wish it could already do and/or thought it really did.

For example, today I 'harvested' some of my less awful shell designs and moved them into the static 'stock' files, so they come with the game. Then I assigned shells to the bots in the tutorial, at which point I discovered that my code, to obey the script's shell choice, never worked in the first place.

Easy fix and now my characters have actual semi-unique 'looks' that match their personae. I probably should add a scripted scale factor so the boss could just be 'larger than a normal ship' while using the same SHELL file.

[ 12-05-2016, 08:13 AM: Message edited by: samsyn ]

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
So, tonight I wrote the 'wait' functions for 'wait for all miners,' 'wait for reactor failure' and 'wait for boss to explode'

I'm taking more advantage of synamically adding, or hijacking, message handlers. It's your map script, you're not hurting anyone but yourself, if you mess it up. But lua lets me write helper functions that override the message handler with a custom function and then wait for some condition based on that message to come true, something like:

code:
function waitForAllFlags( scene )
scene.numFlagsTaken = 0 -- start from scratch
-- hijack the onFLAG message handler
scene.handler['onFLAG'] = function(scene,args)
-- just increment the flag counter
scene.numFlagsTaken = scene.numFlagsTaken + 1
end
-- wait for all flags to be captured
while ( scene.numFlagsTaken < 5 ) do
wait(1) -- let other coroutines run
end

-- if we get here, mission accomplished, you
-- can now return
end

Anyway, when what you WANT is to block the player on a specific assignment until it is completed, this is a very easy structure to work with. Just be sure to only invoke that inside of a coroutine and not do anything fancy inside the message handler.

And note that we are only hijacking the handler from our own scene, and not affecting anyone else who might also care about that message.

In that while loop, I actually have a bunch of 'hint' messages I can fire off, mainly to remind you that I am indeed waiting for you to finish a specific task. Also, it detects changes in the counter and hurls a suitable invective in response.

Unfortunately, I have to modify the engine so I can assign a team assignment to the NPCs which might be at odds with their 'thumb team'

Right now, the boss is getting killed as soon as I park him back in his clone reactor -- the place that is supposed to be healing him, but the zone is on the opposing team and burns him instead. I could fix it by assigning bot slots based on the player's choice, but I feel in the long run I will need per bot team assignment. Maybe even with shifting allegiances. And the stupid zone has to obey the setting.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
today I mostly debugged reactor failure, though it's still not working right. I changed the trigger API so you can get a separate message for when the separation exceeds twice the sense radius. That made it easy to keep track of when the player is close to the trigger ship, so I can refuse to do certain things unless you're close enough.

Oh, I think I fixed the oldest bug in the world. Even back in old synSpace, it used to draw this random extra line segment on powerups, and sometimes one bar of the object would be an incorrect color, like c3po's leg. Anyway, drone runners had the same glitch and it turns out to have been a really silly bug. But the extra line segment really could have been anything (stack contents) so it's amazing it wasn't worse, visually.

You can spend a lot of time tweaking the camera and overall pacing, and I'm not even doing that much. I am sort of using the rendevous trope a lot though. In several places I need you to navigate and meet up with another ship (following a beacon), and when you 'get close,' that triggers the script and you automatically stop, and dialog ensues. I'm thinking I need to maybe make you invulnerable any time I freeze you, just in case. Anyway, once I stop you, I then zoom in, so you see yourself and the destination up close and the dialog feels more grounded. Then when the dialog is done, I zoom back to normal and release your ship (if it was frozen). I guess that's the moral equivalent of 'dropping in to a scene' in WoS.

I'm also using fewer cuts to other ships, when both you and the other guy are in the same scene. It just feels like unnecessary micro-centering on the camera. Maybe to be reserved for a spefici effect.

It's possible I should have some marker on the ship that is currently being shown in the quest dialog box. Ditto when I follow through on my
"it isn't voice chat" plan. "this is the ship that didn't just voice chat"

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
the dominoes keep falling... very close to finishing the tutorial. Tweaking the API, making it more bot/scene centric

code:
-- For example, the old think is:

someGlobalFunction( bot )

-- but now I lean to

bot:someBotFunction()

Pretty much the same implementations, but I think it makes a more readable 'screenplay'

code:
   -- meet the bad guy
bot:enter( style ) -- he appears
wait(2) -- dramatic pause
bot:say( "welcome to your nightmare" )
bot:moveTo( x, y, style/speed )
bot:target( myShipIndex ) -- target the local player
bot:hunt() -- sets bot ai into huntAndKill mode

This also makes it easier for individual bots to override individual functions if you want some bots to behave differently, in some situation, but in other ways to be the same.

So the script just says the bot moves from A to B, but THIS bot 'walks' and THAT bot 'saunters' as part of their personality, as defined in their personal bot table (lua table).

----

this late realization that I could do just-in-time message handlers, rather than have to think them all out in advance, and code them in a physically different section.. well, this project just continues to astound me with how the pieces actually work together sometimes to make life even better.

It's, like, it's so easy to add a new message handler, right when you need it (and remove it later, or even have it remove itself upon completion of its task).

Anyway, I find myself doing the thinking 'in the sender' that I might typically do 'in the receiver', and then sending a very specialized messageName, and need to include no arguments.

Rather than sending a more general message, with arguments. Especially trying to avoid the additional step of decoding the args to work out which part of the scene was waiting for that message. More parallel code that would need to be kept up to date with narrative changes.

But coroutines to the rescue and the code can be as linear as it needs to be, without blocking other tasks. And it can all be written in one spot, and that can be swept off into its own function if that makes the main narrative simpler to read.

The only tricky bit to remember is that the message handler is being called from the main thread, not from a background coroutine, so it should be non-blocking... I mean, it should avoid triggering a mutex... I mean, it should do as little work as possible and return immediately, for best responsiveness for the player.

so no "wait"s in a message handler, please. only in a coroutine (that can be easily spawned by that message handler).

Once a coroutine is running, it can wait() all it likes, plus it has full access to program memory, so you can use flags to communicate from the message handler, and poll in the coroutine.

I end up using this pattern a lot:

code:
  -- you're already a running in a scene coroutine
...
botCharley:say( "Greetings, please do something for me" )
waitOnDlg( 0 ) -- wait for all popups to pop

-- define and initialize our 'flag'
scene.somethingHasBeenDone = 0 -- nothing done yet

-- Define our special message handler
-- all it does is set that flag
scene.handler['MessageSentWhenSomethingIsDone'] = function( scene )
scene.somethingHasBeenDone = 1
end

-- If needed, ask for some service, that will
-- send the message when it completes
possiblyInvokeTheMessageIfItIsn'tAutomatic()

-- Now just wait for that flag to get set
while ( scene.somethingHasBeenDone == 0 ) do
occasionallyEmitAHintOrReminder()
wait( 1 ) -- so other code can play through
end

-- we only continue after something has been done
-- we can clean up after ourselves
scene.handler['MessageSentWhenSomethingIsDone'] = nil

botCharley:say( "I can't believe you did that! Now do this." )

...

implicit in the above is that you know the message is expected. Either because it's a general, always happens, sort of message, or you invoked some system (like the trigger system documented earlier) which will send a message when the trigger condition occurs.

Another nice thing is you can have several of those little jobs running at the same time. So maybe four different bots have jobs for you and they would be independently nagging you to complete those jobs.

And you would code those as four separate functions, and not have to worry about overlap and blocking. Well, worry at a different level, at least.

fun :-)

I'm positive there will be API bugs in the first release, probably some awful ones. But I think I will do a better job selecting priorities once there are actual players, should that happen. I guess I better be ready to capture any metrics I can, to figure out what turns them off.

[ 12-19-2016, 03:26 PM: Message edited by: samsyn ]

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
And that starts with adding the recent batch of russian spambot IPs to the ban list. If you think I banned you.. well.. you wouldn't be able to read this, but send me an email about it if you can.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
I bit the bullet and tricked out the 'go' behavior so a bot can now be sent to a location which is an offset from an object (it doesn't have to just head for the center of the object)

So now, when WATTE enters and exits it looks like he is coming FROM somewhere, or headed off TO somewhere, instead of just materializing in front of you.

It's actually slightly dramatic looking and would benefit from a nice music line.

This also broadens the AI targeting/nav opportunities

It's still very unimpressive when the gate opens. I need, at least, to be able to emit particles and/or play special animations on scripted demand.

But the barriers themselves should probably handle state transitions with animations (so the barrier fades/explodes/shatters or something, and makes a sound while it's at it)

I don't need a LOT of that kind of thing, but I need a bit more than I have.

But I'm still re-dinking the earlier parts of the tutorial, instead of fleshing out the final minute. That's a recipe for never finishing.

I also have to go back and rewrite the first part to use my new, simplified, api. Get the benefit of my work.

come to think of it, I will need to add a token for finishing the reactor meltdown. Otherwise, you'd have to redo that each time you lost the boss fight, which would be tedious unless you were doing this 'as a scenario' where you expect to replay all parts. Still, even then you would expect the dead things to stay dead. if you had to respawn in the middle.

I didn't want to get carried away with tokens on this map, but maybe 'three' is not so carried away :-)

* you learned the basics
* you rescued the miners
* you destroyed the clone reactor

Then the boss fight would always happen, whether you'd done it before or not, and it should be designed to be fun for multiplayer.

Or not. Maybe there will be something after the boss, in which case I will add a boss token and the thing AFTER can be the thing you can re-experience

I added a SCRIPT menu option to clear the tokens, to let you forget your success on the map.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
zim zim
Veteran Member
Member # 1233

Member Rated:
4
Icon 1 posted      Profile for zim zim   Author's Homepage   Email zim zim   Send New Private Message       Edit/Delete Post 
Any clue on a release date yet? Been looking forward to it since it was my favorite on Arcadia.

--------------------
I'll be around here until the plug gets pulled.
http://flashzz.webs.com/

Posts: 550 | From: USA-WI | Registered: Aug 2001  |  IP: Logged
zim zim
Veteran Member
Member # 1233

Member Rated:
4
Icon 1 posted      Profile for zim zim   Author's Homepage   Email zim zim   Send New Private Message       Edit/Delete Post 
Maybe at some point in time include orbits to stars/planets. Would be interesting trying to fight other players while dodging through an orbital system. Even a team fight against a boss in its solar system would be nice too.

--------------------
I'll be around here until the plug gets pulled.
http://flashzz.webs.com/

Posts: 550 | From: USA-WI | Registered: Aug 2001  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
At this point, I am just polishing, and testing all paths through the tutorial.

Yesterday I added a little eye candy (NPC ships can explode now, for dramatic effect... and barriers that are removed can have a little animation of their coming and going), plus a couple new sound effects.

The writing still has that 'trying too hard to be funny' quality, but I can continue tweaking that post release.

I guess technically I need to release it tonight before midnight. If I want it out in 2016, I mean. Which I think I do. So yes, I would very much like to release it TONIGHT.

Then I can release it again TOMORROW and every day after, as needed :-)

The NPC battles are still too hard, and too short. I can't decide if they are too strong, I am too weak, or if they just need to shoot less often. Right now it's like walking into a laser beam of bullets that kill you in a second or two.

BUt I fear that if I nerf that, it might make it overly difficult to shoot human pilots and maybe it will be too easy to recharge before you explode.

In theory, I like the current balance for human on human, so I think maybe nerfing the NPC is the right idea.

---

While I don't have 'canned orbits,' I do have gravity and you do have to work around it in mid battle. You can't really achieve a permanent orbit since I intentionally add some drag that ultimately pulls you in. Because I am evil.

Yes, I like the thought of first release tonight.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
And... I guess I forgot that New Years Eve has its own agenda :-)

So, my new goal is to release today, on new year's day.

I COULD release it right this second, but I know the tutorial boss battle is broken and that would be pretty rude.

I mean, the game is a sandbox for players to inteact inside of, and only has a small bit of scripted content (the tutorial), so it would be weird if 8 minutes in to the 10 minutes of content, it hangs and pisses you off.

I don't want to make the player think it's a big content game (though hopefully that will be the result, it's not the case on day one)

It's a no content needed game, with extensible content :-)

I just need the tutorial to go smoothly, bring a smile, some loss, and a victory.

I did family playtests over the holiday week with varying degrees of success. We found lots of edge case issues. Like what happens if you jump the gun and destroy something before the tutorial expected you to?

That's what encouraged to basically rewrite the tutorial, by which I just mean copying and pasting pieces until I had the same thing, organizes as a set of routines, each wrapped with its own token check. So there are four 'save points' within the tutorial and you don't have to go all the way back to the beginning, should you die in the middle.

It also allowed me to group the stories to include their own 'connecting dialog' as it were, so again, I can treat each mini-adventure as its own thing and not have to jump around all through the script file in order to add something.

But my primitive art comes back to bite me. My depiction of the 'clone factory reactor core' as 'a square' is a little too minimalist. I need the image itself to convey a bit of importance, as in "watch out, this is dangerous"

Though I can always just let the player find out by getting blown up a few times, it became obvious the tutorial really needs to have a spot of exposition where the reactors are shown to the player ahead of time... And my tool for that is to have the camera focus on them and orbit them for a few seconds while your tutor blabbers away about it. The guided tour of the star map.

Anyway, officially, that's the bit that's holding up release right this second. Well, and the generally less-tested aspect of the final section.

The playtests took some real time though, maybe it's an understatement to say there is only 10 minutes of content.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
Just to formally note the occasion here: synSpace: Drone Runners, version 1.0, was released to the Android Play Store on 1/1/17, approximately four years from its inception. That's probably a record for me (to go without a release).

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
So, I 'designed' my TRACK EDITOR last night and started coding it today

Nothing too fancy. Standard piano roll display where you can directly manipulate individual 'note ribbons' with scrolling as needed to see the whole track and all notes

tap an existing note to select it. A delete button appears somewhere (tap to delete selected note)

drag-select a range of notes, move or delete as a group

tap/scroll a 'time ruler' along the top to frame a portion of the track, but it might be fixed size, based on fingertip sized resolution

tap/scroll a 'note ruler' along the left (sideways piano keyboard) ti access 5 ictaves of notes on a 1 octave screen.

If there is an assigned key signature, I will decorate the 'notes to avoid'

copy and paste

If I am somewhat careful, I should be able to show the other channels as gray 'underlays' beneat the colorful notes of the channel you are editing

and pretend I said TRACK anywhere I just said channel.

But first, where to PUT it? my UI is already pretty dense, and I need it to work on smaller screens, and unlike a mouse, I have to deal with the fact that your finger is blocking your view of the screen.

I knew I wanted to be full screen for this one (no t mucj benefit to bleed through from the game below), but I wanted to retain quick navigation between screens. Plus I didn't even want to add another button to turn it on.

So, here's my solution. While GROOVING, you have four tabs:

GROOVE (general info and your collection)
LOOPS (buttons to define and use 15 loop channels)
TRAX (your four midi-like event channels)
BAND (table of patches used in this GROOVE)

Those are all in the top third of the screen. The bottom third has the piano and associated controls, and the middle is as clear as I can make it.

So, when you want to EDIT your TRAX, what do you do?

1.) select TRAX
2.) while selected, tap TRAX again

voila, TRAXs expands to full screen, but you still have the buttons for GROOVE/LOOPS/TRAX/BAND so you can quickly go back and forth between those (and all of those, other than TRAX, currently have access to all the UI.

So, a little weird, but brilliant in its way. Turns out it was something of a pain to implement, but that's now in the past so I can get over it.

To be clear, all I have coded is the rectangle that comes and goes, which covers the bottom two thirds of the screen (and WILL HAVE the actual editor in it). The top third will be the old TRAX info, but acting as a navigation device to pick trac (which of 4) and spot in song.

But there were lots of complications, like making sure all those controls 'beneath' the editor are properly turned off, so you aren't still playing the piano while editing notes (well, you probably ARE, but not by hitting invisible keyboards right under your work space). It turns out I didn't know how half of my controls were working in the first place, and I still have one obnoxious bug that DOES thinnk you hit an invisible piano key.

But I think I can make something that is reasonably easy/fun to use while cleaning up noisy captures.

I will have to solve the 1000 event issue someday as well. I limit each track to no more than 1000 events, which is about 500 notes (down and up event per note). The vocoder captures make tons of note events and a 3 minute song won't fit in 1000 events (per track). Yet I don't want to just have a huge limit because I still like small files. If you said "gee dan, I have a 120 bpm song that is 5 minutes long and every beat is a note, so I need 120 * 5 * 2 events, don't I?

And that's only 1200, hardly a stone's throw from my arbitrary cap of 1000. And you get 4 quarter beats as well, taking us to 4800 as the generous value for the world's most unlisttenable song.

ANYWAY, my gut says that a good 'rinsing' of a captured song will cut out half the events and only make the song sound better. So I still feel like 1000 is a good compromise value for your final product. Especially since you can put the fiddly bits in LOOPs and trigger them economically, leveraging one event into many.

But during the capture and editing, I think you probably need more than 1000.

maybe some auto-chording/auto-progressing with auto-intro and auto-extro, but all limited to a particular Vector Quantization of Star Wars scores :-)

The 500 most common themes and variations... maybe sets like 2 note themes, 3 note themes, 12 note themes...

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
my thought is for the track editor to be the eye candy justifying release 2, which is actually ready to go with several crash fixes and misc small enhancements.

From the past, I also have the notion that releasing more often than every two weeks (well, unless there is some emergency) is a pain for everyone concerned, and google might even punish you for it (apps posting tons of trivial changes just to stay on the 'recent' list)

But I hope this editor stays as clean as it is now (a single rectangle :-) and I don't bury it in multicolored text.

I guess next I need to work out the basic grid and its scrollability. If time is measured in quarter-beats-per-minute, then pick the attractive color palette, and make rectangles with the softest of rounded edges, and the most perfectly determined borders.

Then the scroll bars and fiddle until it is easy and fun to navogate an existing groove track.

then add gesture sensing for moving notes around in pitch and time. With note preview as you slide around, and a demo button to play the track from around where you are now, or between two markers.

Then the concept of 'the selection'

then a mini control panel for selection options (delete, copy, properties)

At each stage, provide helper functions to manipulate an existing event stream (adding/removing evnts or changing their event times)

Insert/Remove silence

Line up selection (left/right)

real time composition:

* tap anywhere to add a note there
* length is whatever your last length was
* once added, note can be moved in pitch or time
by direct manipulation with 'outRigger cursor'
to let you see under your thumb
* selected note(s) can be deleted or copied to clipboard.
* clipboard can be pasted to new location
(insert vs replace) or append even. But probably insert mostly, pushing existing stuff further back in time.
* post insert, the inserted copy should be highlighted for easy movement/deletion.

multi-stage undo/redo would, of course, be NICE

a fragment library of successful themes/variations? Maybe that is just harvested from your entire groove collection, as needed.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
I captured beethoven's seventh (second movement -- you know, the theme to Zardoz) and then used the new track editor to remove just a few screeches and the result is pretty nice. Not the original symphony but a sort of interesting, jerky, take on it. If you met up with me in map tonight, then you probably got a copy.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
I've been thinking about TAUNTS and wondering if that could/should be another asset type. Basically a TAUNT would be a short vocoder utterance of a second or two. The sort of thing I plan to let you manually 'speak to other players with' but this would then save individual grunts as assets you could use again later (for example am emoji keyboard that sent your 10 favorite grunts), and perhaps it could evolve into a 'sound' definition that you might use on your star map for a new powerup sound or something.

BUt if I had that TODAY with the current state of vocoder utterances, I would not be satisfied.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
A nice lady wrote me and asked if I would link to an article she'd written about synSpace, so here it is!

https://gameskeys.net/hidden-gems-games-you-may-have-missed/

It looks like she just copied and pasted text and an image from my Google Play store entry, so I'm not sure it qualifies as an article (or writing) per se. But hey, if it's a link from a popular site, where's the harm?

Now, the site seems to sell game keys mostly. Is that legal? I mean, if they're sure the key was never used, it makes sense to recycle them for a good price, but what if you get one that was already used?

But it's a pretty official looking site, so I don't mean to cast any aspersions, and maybe they have cheap DAW keys.

---

oh, you pretty much have to text search for synSpace (she abbreviated the name) since the clickable bookmark in the index takes you (me, at least) to some other game. Maybe that's just temporary...

I wouldn't give it five stars, but I appreciate the attention all the same :-) Everyone gets a medal!

----
Here's a thoughtful article about discount game keys

https://www.makeuseof.com/tag/too-good-to-be-true-read-this-before-buying-discounted-game-keys/

I tried to find some reviews of gameskeys.net, but I'm not sure if the horrible reviews I found were for them or for some other site with the same name. (.co.uk) but man, those reviews are horrible so I hope not.

[ 06-06-2020, 10:48 AM: Message edited by: samsyn ]

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
I'll just blabber here for a moment and pretend it is on-topic

I made this new text file with just one line descriptions of things to do (like "powered paragliders and cool mini-subs") before releasing v1.09

And, of course, that file has rapidly grown to many pages (and, to be fair, I have marked off a few of them, but progress continues to be glacially slow by any real-world measure)

A fully rational person would prioritize the list, focussing on bugs, and fleshing out the lua API to support all the new stuff (and then making a cool new starmap to demonstrate those APIs) and then release, and then start 1.10 with that list re-organized for the next batch of additions.

My body conspires against that, however, since I don't have many minutes at a time before my feet, eyes, or gut distract me one way or another. Or cat. or brain.

so I continue to implement from my bucket list until the joy stops flowing and I move on to the next item.

----

I think this weekend will be a focus on 'multiplayer in critter world' (for example, right now, you can't see other people flying around, and I would like to fix that, so we can chase each other both in grid space and in critter world.)

Then I should really focus on lua API and my new starmap to exercise it. This is the Lunar Lander starmap, but now it's going to have both a lunar lander and a 'cessna overcoat' (and probably others, like a minisub/boat (with deployable sails, or maybe that's a separate vehicle) baked into the starmap (no cool dedicated asset editor for aeros yet, though that seems a natural for the SKINs panel, and aeros should be able to pick the skeleton node they want to depend on (and then animations can be used to change orientation of aeros, for stuff like landing gear animation, or changing aerodynamics like swept wings or something). or water rudders, keels, spinnakers, etc.

At which point I have to go back into the climate system and make sure I am not 'leaking clouds' (they tend to drift off to infinity instead of wrapping around the planet)

But I still don't have a cogent story line.. I *think* you will be given a 'nano-factory' (visualize as a helpful bot, which might also double as the inventory button).

You (on this starmap) can craft items from resources you collect (and other items), and then, I hope, drop or pick up such items, maintain an inventory, and use items at will (vehicles, tools, weapons, etc)

The starmap should probably offer a form of technology tree encouraging you to level up your skills until you can make neat stuff.

The nano factory then actually does the work of materializing new items, given plans, resources, and energy (a la Rocket Club), and presumably is also used to de-materialize things you want to 'put back in your pocket' (or store as data-energy inside your nano-factory, more likely)

And, I think, you will only be introduced to a small number of critters, which are baked into the starmap, which have a simple set of animations (stand, walk, drive)

The Skeleton editor lets you craft new critters, and save them in 8 workspaces. Eventually I will let you clone a workspace into a critter asset, but I think the data is still likely to change format. But my thought is 1.09 would include a predefined 'workspace 0' (maybe a biped) which would be the default 'you', but you would then make new ones, and would have a way of indicating which one 'you are wearing right now'

Normal peer to peer file sharing would copy your unique critter to those who needed it (where it would then disappear when they shut down the game, until the day I offer cloning)

So, I am thinking, a starmap might have a limited number of skeletons on it, but you would get those PLUS an 'infinite' number of 'personal player skeletons' (potentially). And once cloning was supported, any skeleton you encountered would be available as a character in your own starmap drama. So goes the plan.

But I have a lot of little fiddly multiplayer things to deal with, like informing other players which of your workslots you are using (and it might turn out that I HAVE to make a critter asset first, or risk needing a duplicate implementation of the peer to peer stuff (which already automatically handles this for official assets)... Making them a full asset is not too big of a deal, but implementing an asset browser is. or feels like it.

Well, doing that right (or close to right) will make my life simpler, so I ought to prioritize that.

SpaceX launch stream starting in 25 minutes!

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
And it scrubbed.

So, as I almost was saying, I still don't have a story, but I am developing a list of 'characters' so to speak

* antigravity pulse beam (lunar lander)
* cessna overcoat
* hopefully a boat/sub
* hopefully a car/tank
* some runways
* some clearings
* hopefully a building/fractal city
(which you can blow up)
* probably 'two bases' for multiplayer combat
* a biped critter for default 'players'
* a quadruped critter that can be ridden
* water, fire, lava, iron, plant resources
* source of energy (lightning, probably)
* a 'monster' critter you might battle
* a 'boss' critter you might battle

So maybe it's a cowboy story where you are caring for herds of 'horses', and there are a few wolves around, and one master evil force to be conquered.

But that's not really what I want. I do want to earn points/love of the 'nice' critters, while fighting the 'bad' critter population, in an effort to somehow enhance my 'base', and the main mode would be cooperative play (between the humans) against the monsters. Maybe two separate planets (that you experience one at a time) showing two races that have hated each other in that star system since time began, and this is your chance to get involved with that. And a meta game could then be the relative population of the two planets over time...

Well, this first critter map, with limited critters.. wouldn't really make a good RPG map (not enough variety of things to fight), and I think I want to focus on movement (flying/animated skeletons) and crafting, I guess. Where crafting is about developing a UI for collection/inventory/recipe/manufacture that can be used on other maps.

And this map would probably only have a small number of recipes (ie. make a cessna overcoat)

And I think as much as possible, I would like the existing weapons (from grid space) to 'still work' in critter world.

BULLETs (shot from weapon mounts defined in aero, or from 'handheld' weapon). Rendered as individual triangles (spinning or whatever)

MINES (dropped from origin nodes, lurk and explode on enemy proximity) These could be landmines, sea-mines, or even floating air mines (I would just leave them where you launched them, but a variety that fell with gravity and then either exploded on terrain contact (bomb) or landed and became a land mine.... Like maybe you fly over an enemy building and drop one, it falls and if it hits the building (an official enemy structure), it explodes, but if it misses, it just sits on the ground until some opponent approaches it.

SEEKER MISSILES (missiles that track your current target), these should leave a 'linked linear' cloud trail (as in synJet, where I think that looked pretty nice and captured the motion well)

And just try to make nice looking projectiles out of triangles. But I can use textures here, so it should be possible to look interesting enough.

---

Hmm, now I want to make a lightning bolt simulation! Would also make a nice 'area attack'

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
I made it so each time your vehicle bounces off the ground, it sends up a shower of sparks and smoke (triangles), so now I leave behind a little smoke trail peppered with puffy areas, like a snake digesting a series of watermelons.

It's actually a bit diagnostic, showing the strength and angle of impact (which otherwise is over in a flash, so it's kind of cool having a little snapshot reminder)

And all I need is to change the particle color and ballistic angle when I am at sea level, so I can throw up rooster tails.

In each case, the particles are left behind as resources to be potentially collected (not sure what good a smoke particle might be, but in theory it's on the list)

I guess that would give me an excuse to need a boat. (to get close enough to collect a rooster-created water droplet that is now floating on the surface of the sea)

I had to rewrite the code that actually instantiates the critter (and its flightsim object) as what I had was horrible for multiplayer. So now I create critters (and vehicles) for the remote players as well, and you can, in theory, interact.

However, my 8km world (which takes less than a minute to fly over) is still big enough that your fellow players become microscopic only a short distance away from you.

I *want* a sense of size (4 islands, 8 villages ish per starmap), and it makes sense that individual battlegrounds (on foot melee, I mean) woulc be fairly small, and you would have a conventional RPG scale of display (zoom level, I mean).

But when flying a plane, your opponent, without a lot of coordination, is probably going to be a dot most of the time, and I will need to have targeting glyphs to help you find them.

And I will probably want some camera tricks, like a camera that stays behind you, but turns as needed to keep your target also in the shot.

And likely most weapons might be smart enough to steer themselves (outside of melee). But some cameras would lend themselves to a reticle in the center of the screen (get reticle on target, then pull trigger)..

still, I don't want to depend on too much jumping around in battle. I don't want people dropping their phones. Possibly going the RTS route of auto-smashing the enemy when you get close, so your thumbs are mainly concerned with telling units what to get close to.

And, of course, the whole point is that the starmap should control the look and feel. Yet common elements like camera will be limited to a small number of modes. (this is still a small game, though it has some big elements)

I was fond of an Apple ][ series of games called "Scott Adam's Adventures" (and not the same scott as of Dilbert). They were small text adventures of the ilk

> look
You see a series of round hedges
> take hedges
You grab the largest of the hedges and cut it free with your machete
....
etc. Each adventure had maybe 20 'items' that you found as you travelled around (a few dozen 'rooms' connected with n/s/e/w openings) and used in combinations to solve puzzles until you solved the adventure.

Simple, but great! I would like to have something like that.

Of course, even a text adventure (coupled with your imagination) has better graphics than synSpace :-)

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
General Rambling

* launch starmap
* get/skip backstory
* get first 'mission'
* (collect something in grid space)
* get told about 'planets' (how to land, and return to space)(tutorial-ish)
* use beacons to find the planet and enter orbit
* from high orbit, get next 'mission'
(lunar land on a particular supply base platform, with beacons to help you find it, and a gentle 'death' reaction on impact (return to high orbit)) or miss, (is tutorial on UFO mode navigation).
* after landing at base, get cessna overcoat as a reward
* get next mission, fly to an outpost air base(?)
what is on the map to start with? Two sides of some competition? You fly to an airbase to 'pick your side' (presumably this is all nonvolatile, so you could continue later in solo mode, but for now assume you go through this every time you play this starmap, but I want to evolve more towards 'each player must travel through a story, but while they share their real-time experience with other players, they are not all at the same point in 'the story'
*once your side is picked, you get the next mission, and maybe this is the quest hub thereafter. Your home base has an infinite number of missions (get 4 of these, get 2 of those, craft nine of these other things, take them to this spot, talk to this guy)
*"talk to this guy" is pretty useful, as a means to deliver backstory/exposition without actually needing a plot maguffin (a maltese falcon, as it were).
* some measure/score is maintained (fealty of your team, probably, like planet love in WarPath)
* each base should have NPC critters (hmm, and a crashed spaceship? Are we picking sides in a competition between two species to 'terra' form the plant to suit their needs?
(are bases inside of gas bubbles? Ooo, under the ocean?!/? ooo, I love blabbering.

The starting bases are under sea!, in bubbles! Have starting critters (which cannot leave the bubble?)

Your missions then generally further the terraforming to meet your needs. (the needs of your team). And if you run into NPCs of the other team (other critter) (scorpions vs horses) (both mount-able, with training)

GAS BOMBs..

Something you craft, then use your cessna overcoat to fly and overtake CLOUDs (get the climate particles into the act!) and then fire the bomb at the cloud (it doesn't HAVE to taste like apples!) and if successful, that cloud changes color! And maybe even contaminates other clouds it gets close to! So then it is pink clouds vs light blue clouds (or whatever)

Now, that can't be a real measure of 'area' since the winds blow the clouds all around the world pretty fast and won't hang over a particular bit of geography.

I'm thinking of doing a vegetation layer, similar to my water layer (uses the exact same points as the terrain triangle, but translated a little to get to sea level, or, in this case, 'tree top' height. And I guess, if it really is a tree canopy, it could be a little random/bumpy

And when you get close, I also start emitting individual tree triangles. And maybe someday have fractal trees (see Rocket Club) Maybe

But mainly, with the vegetation overlay, I could tint the vegetation (BOTANY BOMBS) which wouldboth indicate dominance of my team, but would also be 'edible to my team's critters)

(intelligent critters, probably, so they can text chat with you. At least their leadership.. possibly through some translation device not available to all members of the species. Anyway, it is a personal decision whether a critter will allow you to ride it (though surely there is a guarnteed means to earn your official mount)

But your official mount is maybe also your best friend NPC, with whom you chat all the time. He can probably carry stuff (like your nano-factory? You have to be given one of those as well, before you can start crafting bombs.

* some ingredients come from grid space, so there is a motivation to return to grid space and collect them. Maybe actual quests in grid space, difficult to reach locations, etc, but ultimately, you just get something on your action bar. (your row-zero inventory, your belt inventory, the things your ship is currently equipped with...)

* return to grid space via the lunar lander engine with a 'launch' that leaves an adequately satisfying smoke trail. And doesn't take too long. I will make it impossible to leave the planet in a cessna, maybe even auto-removing the cessna if you flew back to UFO high orbit altitude?

I probably have too many 'transitions' but that's the way my head works apparently. scatter shot.

But 'launch to space' is effecttively an animation, though I suppose I let you steer and modulate the throttle and even abort it, but if you're eager to return to grid space, I don't want that to be a hassle.

Decide you want to do it, equip your antigrav engines ("lunar engines as antigrav weapoon adapted to use as an engine" still appeals to me), hold the fire button, (automatic cinematic camera for nicest launch view?) and it just takes you up, all the way to high orbit and then out to grid space in a single motion, based entirely on altitude (with my cool multimedia altimeter) and when you cross the line, the view switches back to grid space with your shell ship shooting out of the planet at some random angle (so hopefully you are not just sitting ducks for some camper)

Hmm, how about a square zone (in grid space) you could place anywhere, and which cancelled gravity. So if yi placed it near a gravity object, you could manage to fly through it and tap STOP at which point you could stay forever, just near the gravity item (and maybe it was team-specific so enemies couldn't just join you, but they could do their own)... file that away. Might be a nice station from which to attack a planet. Maybe the gas bombs have to be fired from grid space? Though I am already married to the 'tinted clouds' aspect

Coming back from grid space, you enter high orbit as before, and can linger in UFO mode (which has its own weapon access) and do stuff (ufo missions -- this is the absolute easiest flight mode, so this should be made fun for players who don't really want any sort of flight simulation at all) And I should be sure to let the starmap indicate, maybe on a per vehicle basis, just how 'sim-my' it is, with an 'arcade' version always available.

But there could be tradeoffs (better weapons/defenses in simmy vehicles?)

But dropping into high orbit from grid space and then back out, should feel pretty effortless (I mean, my goal should be to make it feel pretty effortless, and not too unnatural when changing flight modes (grid space engines vs ufo mode vs lunarlander mode vs flightsim mode vs mounted on critter, vs on my own N feet.))

With things to do at each level (boats and subs are inside the flightsim category), and probably some terra-form at each level:

Our critters need (outside their base bubble domes)

* breathable air (change the color of the clouds) (which could have both team elements, so long as neither was actually poisonous to the other, though both options should be available)

* potable water (change the color of the ocean)

* edible vegetation (change the color of the 'tree canopy')

In addition there are also specific 'crops' (the ones the critters currently plant), but those are liley more about crafting, though they may only thrive in certain vegetation regimes

Well, hopefully IL will edit this until it is a game design.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
So, building on that...

Maybe you start by collecting a 'bubble city seed' in grid space, then your first act is something like

* enter from orbit, in UFO mode (aka 'slew' mode)
* pick a location, over the ocean, in an unclaimed spot
* drop the bubble city seed (bomb?)
* it falls and explodes (unexploded on land? Different kind of city?)
* it manifests as your 'base' (as needed for most RTS games)
* but you get a nice flat runway at the bottom of the sea, and a plausibly self sufficient atmosphere from the giant bubble (which sticks out above sea level, if I do it right, though I guess deep undersea cities is also viable with the fractal tweaks.
* and some level of fractal buildings, if only to be cannon fodder, but perhaps eventually a RTS like 'add buildings' sort of activity.
* and a critter or two, that occupy your base and represent the target for terraforming.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
sorry to use you as a piece of paper, but I am just that decrepit.

Starmap: Paradise, Utopia

/backstory

It's a big galaxy, but that doesn't mean it isn't crowded. Civilizations are generally bursting at the seams and always looking for new physical real estate (and the less advanced also worry about resources)

The tendrils of some civilizations have just reached this star system, where they have found likely 'goldilocks' planets that could meet their needs.

To explore and exploit these new systems, they hire prospectors like you. When you find something worth exploiting, you place a claim.

Claims extend as a sphere around the claim point, and their radius can grow as you develop the claim.

Two claims cannot overlap unless one gives permission to the other.

Bubble Claims come with a starter atmosphere, and are quite convenient to place on the sea bed, which makes an excellent flat surface for landing pads and runways.

The bubble domes will selectively pass creatures and objects (others will bounce off, or worse).

But be on the lookout for hackers, who might temporarily breach the defenses (and keep that in mind should you wish to explore an opponents claims)

Once you've set up a base of operations, you should start developing and producing the devices and vehicles you will need, to tune the ecosystem to your needs.

Of course, Central has determined there is no significant pre-existing life on the planet.

But you've heard that before and are pretty sure there is ALWAYS pre-existing life, whether it is nasty little insects, or hermit trillionaires.

Claims are made by dropping 'claim bombs' which mark the center of the claim and its initial radius. You should be relatively safe within your claim

But first, you'll need to get into high orbit around the planet, where you can scope out potential claims. That's pretty easy -- just push your shell ship right into the planet.

Your shell won't survive, but you'll be put into a 'critter' (a bio-synthetic creature you will remote control) which you'll use to explore the planet, and place your claims.

While on the planet, you'll use a variety of modes of transportation, until you can set up your teleport grid. Your crew chief will set you up with something that can get you down to the planet's surface. After that you will need to find a way back up, using the local resources.

For that, you'll need your nano-factory bot. He can assemble pretty much anything you can learn the recipe for.

You can also return to high orbit by, well, dying.

That is to say, if the red energy meter hits zero while you're in your critter, it will dissipate and you will be returned to your shell ship in grid space.

Nano factories are made by the "Epperson Inversion Tech" autonomous emancipated giga factory. They are all named 'Steve' in honor of the factory founder.

'Steve' requires both the recipe and raw materials to assemble the objects you request. And energy.

Steve can also dematerialize objects into their representation in dataspace, and then stores that inside himself (along with all the recipes you know), so you can carry an unlimited number of items as you collect them).

Re-materializing costs only a tiny bit of energy (blue meter).

Just click on Steve's icon to open his combined inventory/recipe list interface.

You will have a limited number of inventory slots to begin with, but can expand it to eventually include all designs known in this star system.

Inventory slots can hold only a single sort of item, but an unlimited number of them can be stacked in a single slot.

/enter WATTE

Great, <your name here>, you're finally here! We need to work quickly. Our clients have found this new planet, which they registered it under the name Utopia.

It's a fixer upper.

We'll need to renovate the whole thing. New air, better water, the usual. Just clean it up per our client's wishes, and start the ecosystem for them. You know, air they can breather, some plants they can eat, that sort of thing.

They have ordered the 'Paradise' package for their first claim. You know, the last one Epperson designed before... well.. you know.

But we have to get our claims in right away, as we're not the only guys looking this place over.

I've equipped your critter with an antigrav device. If you fire it while falling, it can slow your fall. But it's pretty low power, so you can't let your speed build up too much, or you won't be able to stop in time.

If your critter gets totalled, you'll be put back into a new one up in high orbit, and you can try again.

I've set up a 'Paradise' bubble claim bomb you can use. It's already equipped on your critter, just select it and drop it when you're over the spot you'd like to claim.

Inside the bubble will be the atmosphere the customer asked for. (And the recipe will be in your Steve)

Once you get that set up, you can start making gas bombs and tweaking the planet's atmosphere.

So, got it? Dive into the planet's atmosphere, Slew around in UFO mode, pick your claim and drop your paradise bomb. Easy enough?

If you don't remember how to slew, I'll call you back once you're in the planet's atmosphere. Just pile into the planet with your shell ship.

You might tap STOP just before you fall in, if you think you're going too fast.

Again, I'll call you as soon as you're in your critter!


----------------------
questlets

Oh, you can't make that yet -- your Steve needs an update. You'll need to find the recipe for that first. Normally that would be over the air, but your Steve can't connect to the download servers from this far out. I think you'll find the recipe inside the Paradise Bubble though. Head on down there. There should be something on the claim beacon (right at the center) you can hack to get access to the stored recipes. Your Steve can do that, he just needs to get close enough.

To get to the base, you must disengage your gravity dampers (which are keeping you in high orbit UFO slew mode), at which point you fall.

You then use the slew controls to get 'over your base' and tap the trigger (while the antigrav beam is selected) to come in for a soft landing on the landing pad. Failure here (crash) takes you back to high orbit in a new critter. Missing the pad just means you have to take off and land until you land softly on the pad.

Once you land on the pad, you are standing 'on your own N feet' (remote piloting a critter) and can walk around to explore your base. First you have to find the base controls, which should be on a control panel near the center. Hack that control panel with your Steve

You find and install Steve's upgrade, only to find not only can he now make things for you, he knows several useful recipes. But also his personality has completely changed. He now has full autonomy over his actions.

The paradise bubble also came with a few bars of 'anythingium' which can replace any ingredient in any recipe, but are rare (and valuable).

Steve explains (he speaks on behalf of the claim brains, which rarely speak on their own) that the Paradise claim is not fully operational, and what you need to do to bring it on line, with a suitable atmosphere (for your critter bio-synthetic, which represents your client species, for whom you have been contracted to improve this planet)

You feed your Steve what it needs (possibly with some anythingium) to get the bubble on line and the airport deployed and perhaps the start of a small fractal city. The claim brain interface will eventually allow you to upgrade the claim (bigger fractal city) and the radius of a claim

Steve learns how to make a cessna overcoat, and various gas bombs you can launch while flying around. Your Paradise bubble claim came with a landing pad/runway which can refuel red and blue energy while you sit on it. Though possibly you have to make the runway (find the recipe and materials).

Probably you should be able to build a small building 'anywhere' which then 'does something' (like mines anythingium at some rate depending on the mineral content of the ground (note to myself: randomize element distribution a la ROcket Club) and put it strait in your inventory

So a quest for each such factory building

make anythingium
make critters of some flavor
make crops
make water chemicals
make gas bombs
make steel, gears, etc. as materials

Make sure there are 'power ups' on the 3D terrain that you can pick up for surprises (like new recipes), or maybe radio messages out of the blue "Hey, remember me? You helped us bla bla bla in that other starmap, here's a cool recipe you might like but probably could 'solve the game' without

=====
something like that.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
Steve Epperson (placeholder name)

Trillionaire Hermit. Achieved tera wealth by advancing AI used in manufacturing. He invented the claim bombs, with their claim brains, and might have been instrumental in the development of DroneNet. He is presumed dead.

Before his departure, he granted autonomy to his most advanced factories, making them legally the owners of themselves, with the free will to manufacture anything they chose, using infinite free energy (solar), and raw materials snatched from the passing air (carbon et al), or dematerialization (recycling)

They are also free to charge as much as they like (thought usually they charge nothing), so long as they comply with local government ordinances.

Long ago these factories made themselves mobile (after a fashion) so as to not be suppressed by a tyrannical government.

And when an emancipated autonomous giga factory leaves your town, it takes the free televisions with it, so the corrupt government wouldn't last long.

Epperson also invented the 'Steve' (though he called it the 'portable nano-factory'). This is a pocket size device that learns recipes and can turn raw materials into finished goods (crafting)

A practically infinite amount of inventory can be maintained by your Steve, as it is held in phase space until you need it. Your Steve can then rematerialize it right where you need it.

Technically it's a brand new object that gets re-materialized, but don't tell that to anyone who has ever been teleported.

Epperson's final achievement, before his departure, was the Paradise Claim. This is a bubble claim that exceeds all others. Luxury appointments from the food synthesizers to the sample atmosphere generator. All custom tuned to the needs of your species. You breathe argon? Paradise can handle it!

Each bubble holds a species-friendly atmosphere, which also leaks to the planet itself. Once the planet's atmosphere has been adequately converted, those atmo domes can be taken down and the sample critters can be allowed to roam freely without fear of suffocation or poisoning.

Oh, sorry, Epperson also invented bio-synthetics and the 'critters' we use today to walk among them.

He was one of those once a century sort of game changers, and we were all sad to see him go. Though no one really knows what happened to him.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
CLAIM BUBBLE DEVELOPMENT

Pretty sure your first task is to deploy a Paradise Bubble for an un-named client (who later turns out to be the trillionaire hermit, or maybe the hermit pre-exists on the planet)

And that the deployment goes horribly wrong (your first time, lack of instruction, etc) so you have to go down to fix it (was supposed to be automatic, so you had no provisions for landing and have to make due for that first landing (lunar lander ballistic descent)

Then you have to interact with the failed claim bubble and repair its systems, requiring you manufacture parts, requiring you fix your nanofactory, requiring you collect resources..

Once the terraform engine is started, the bubble emits 'tinted clouds' which drift out of the bubble and into the sky, slowly turning the sky color as the gas concentrations change

And, I hope, the pink clouds (whatever) will drop pink rain, which will flow to the ocean, float on top for a bit (then fade), but tint the ocean the color/flavor the client wants (though who is to say what a broken dome might make... also, maybe you can hack an enemy dome to make something YOU like)

ANYWAY, so that's where that story is headed, but I will need some architectural objects, like domes/bubbles, runways, and buildings

And for that, I sort of need 3d skins (finally), but I have such a restricted triangle budget, I can't really head in the direction of high poly models. I will eventually do something more skin-like, but for now I am keeping it to 'simple geometric shapes, textured and lit as best I can within my triangle technology.

Oh, random non-sequitor, I think I have a brand idea "Byte-sized Adventures" (small adventures that are easy for players to make for each other, yet are strangely satisfying to play).

ANYWAY, my first foray into this was my runway code, where I made a single quad ('rectangle with a texture rendered on it') automatically tesselate itself to higher resolution as you got closer, maintaining the 'uv mapping' as it recursed into smaller triangles.

So then I wanted to make a cube (well, rectangular prism) for buildings I could blow up, etc. And I properly reasoned that a cube was just six runways, as it were.

Then I reasoned that a sphere was actually just a cube where each point is coerced to be radius-units away from a center point. So I do the same six-face auto-lod quad recursion, but for each new point I generate (by subdividing the surface), I 'correct' it by adjusting its distance from the center of the sphere.

No correction --> face stays 'flat' and you have a 'cube'

Radius correction --> face ends up curved to a perfect spherical surface

Other Corrections ---> cones, dumbells, arbitrarily odd things, time varying things, things driven by numbers taken from whatever music is playing, etc. It's all done real time, and per frame, so it could end up being sort of cool, though at the end of the day it's just a sparse array of triangles, but still. has potential, especially if I can move the tesselation triangles into the particle system so I can blow things up with satisfying bits of textured debris flying around :-)

Anyway, picture time showing my three primitives. First is a wireframe, showing a distant runway, and two huge floating structures (sphere and cube, both textured purple, with sub-based lighting). Note that different regions of the objects (based on distance/zoom) tesselate to different levels of detail, as needed.

 -

Next is the so-called 'green' shader which suppresses the color map info and just shows the vertex colors (which are shades of gray for lighting purposes and all object 'color' comes from the not-in-this-shader color map.

Nice golf ball.

 -

This is the 'color' shader which doesn't add any additional illumination, but the runway texture is now 'lit' (used to 'glow in the dark'), and the cube/sphere share a purple material, and are also 'lit'

In theory, I intended these to be alpha translucent, and hopefully it won't be a show stopper getting that to work.

 -

The claim bubble is actually a bomb you get handed by your trainer (I think), though later I imagine you finding/crafting additional ones (competing to terraform the planet). But this 'Paradise Bomb' is intended to be a special plot point and for there to be only one of them.

You enter planetary orbit, and from orbit you UFO around until you're over a good spot to drop it. You launch it and I hope it triggers a 'cinematic' which just takes control of the camera and follows the bomb as it falls.

It should hit the ground (or ocean) with some particles kicked up, bounce a few times, and roll to a stop in some spot (and I'm thinkint that real claim domes will more or less roll to where you expect with physics (and definitely bounce off of each other), but this first one might end up in a very particular spot, on a fractal map carefully crafted to create that spot, where Byte-sized Adventures lay in wait.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
Note to myself... if I pursue these 'radius functions' to get interesting shapes, I could do composites, like a perfect sphere for the top half (assuming the center is at ground level and half the sphere is under ground), and then a fractal deviation from spherical (repeatedly random deviations from perfect radius) to create a 'cave floor' in the bottom half of the bubble

Then some way to 'punch a hole' in the terrain to provide some access to the 'cave under the dome' (and use the cave floor as a collision against gravity)

Then maybe not even have the dome if all you wanted was a large underground volume to stick your dungeon in.

today I need to 1) vote, and 2) fix a bunch of bugs so all the old features work at the same time as the new ones, and 3) check out performance in the debugger to see what I can speed up. I know I just added a zillion square roots and sine/cosine computations to the render, and that's got to hurt.

For me, 12 fps seems to be the limit. My life experiences allow me to tolerate 12fps, but nothing slower. My formal goal is 30 fps, of course (grid space is running 34 fps on my reference tablet).

And probably it's the lack of hundred msec stalls that really makes it feel OK, and not the exact frame rate.

Also, a release build always runs a little faster anyway, so I get that back when I release a version.

Still, it's a little unplayably slow at the moment. Has been before. And the new auto-lod tesselation is making some mysterious decisions as well, leading to more triangles than desired.

and my lighting is 'sun-based', not 'sub-based' in case you saw that. My climate system models a sun passing over head (at very high speed) which I could pass the true position of, but right now I hole it still at (1,1,1) as it were (but normalized), which has the light hit the cube dead onto one corner, which makes the lighting identical on the three attached sides (and hence you lose the abillity to see the cube, so that's bad). Actually, let me just change that right now. It's my static value, I can make it anything I like!

Ha, I wrote that yesterday and never posted it.

Alpha xparency works now (though only when it is in the vertex color). I think I need to change the porter-duff settings of the canvas before rendering the material into it.

And embedding the sphere in the ground mostly works, but gives z-fighting an opportunity I should probably try to avoid. Better for my code to not spit out the triangles it 'knows' should be invisible.

The 'camera is inside the sphere, so flip the sense of the 'facing' triangles' works pretty well. But I should really support a different material id for the interior of the object, when using the same triangles for inner and outer walls.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
I added 'dome' as a formal structure shape (instead of just using a sphere 'planted in the ground') since that poses fewer z-fighting issues in my crazy triangle world.

After I did it, I thought "OMG, This is just like a 'real' program that does unions and intersections with perfect geometric shapes to construct more complicated shapes." Admittely, the version simplest very (sphere cut with plane)


Also, having a dome next to my runway feels really special. in wireframe mode the experience is not unlike SubLogic flight sim on the Apple ][ back in , um, 1980?

Only mine is *better*, since sublogic didn't have spheres, so I am WAY ADVANCED compared to 1980 :-)

or was it 1978?

---

to restate some ideas about 'claim bombs' (drop a claim bomb, it hits the ground and deploys a large sphere (mostly underground) and 'you' then 'own' that spherical chunk of volume (of dirt, ocean, space, whatever)

The starmap tracks all the claims, and keeps some info about each (if only to synchronize a new drop-in player to the current state). Each claim then shall have a little bit of data (birthdate, style, add-ons, color, whatever)

* in this starmap, you are a contractor, deploying one or more claim bombs for one or more clients.

* the claim itself confers ownership, and a modicum of protection (your critters are safe inside)

* claim dome walls are permeable to some critters, but not others. (teams, species, clients, etc)

* the dome can be damaged by enemy attack (and for RTS starmaps, that's probably game over when your 'base' dome gets destroyed)

* Claim Bubbles come in different sizes and flavors, often including 'terraforming' elements

* option: atmosphere tuning. Each dome emits small clouds which have a color tint indicating their primary (useful) gas: blue for oxygen, red for CO2, green for methane (and maybe more, as defined by starmap, where it's just a name and a color and no fancy chemistry really occurs)

These clouds drift away into the cloud population and eventually all clouds get the new tint, and the sky color follows in a coordinated (but appealing?) way.

* as you go up in altitude, back into 'orbit space' the sky color blends to black

* the claim bomb can include template critters with special needs (methane, corn, etc) and that is what controls the terraforming. critters need air, water, food, and entertainment. They create resources to feed the crafting recipes.

* critters are bio-synethics (which might in some cases mean a synthetic version of a real bio, like the clients are flesh and blood but can make these synthetics which are equally fragile, but are disposable without moral qualms -- and can always be repaired)

.. a smart man would write these paragraphs so as to paste them later into a list of 'tips' the starmap can scroll, which also acts as the aspirational design goals.

* critters have a biological simulation going on within them where they process inputs into outputs and stay alive or die in the process.

* critters have the behaviour of a home address (initially, inside the claim bubble) and will drunkards walk around that point.

* critters are aware of the atmosphere at the current location (planet's atmosphere, or claim bubble's atmosphere) and drive their BIO simulation from what they find.

* ditto for water and food (grain that grows out of the ground). Water falls from the sky as rain, and sits on the ground until it is collected, but also flows downhill and pools with other raindrops. Terraforming water might just be a side effect of changing the atmosphere. (or maybe vice versa even)

* if a critter BIO simulation enters distress (gasping for 'air', feeling 'poisoned', being 'hungry', being 'scared'), it is conditioned to run home.

* the critter has a VQ 'brain' apprpropriate to its status as a predator or prey

* the critter has a 'pheremone' or 'dna strand' of some length which defines what it is, in a species sense (and controls which critters can breed, and rules for the creation of child dna/pheremones).

* pheremones are emitted by critters, at their current 3D location, and left behind similar to exhaust smoke. They can be blown in the wind.

* one critter killing/eating another critter generates a cloud of pheremones which, in combination, tell you things about the predator and the meal (a plant, maybe!)

* another critter can sense nearby pheremone clouds and its VQ brain can work out 'was the predator like me' 'was the victim like me' and decide where to move away from or towards the smell.

* The VQ brain basically just remembers a handful of example 'facts' from which it infers how to handle future similar occurences.

* somewhere I have a list of eight or so molecules that I thought would be game friendly components of a critter's pheremones. And I'm trying hard to keep all of that in the starmap lua (not the game engine) so that the 'game design' is mostly in the starmap, and you can tell any stick-figure-on-primitive-3D-world story you'd like to tell :-)

* terraforming probably includes modifying the temperature, by modulating greenhouse effect or something. space lasers. This is probably more of a plot point than a climate simulation.

* ultimately I hope a colder planet would get more snow (rain becomes snow when it is cold enough - just changes color and terminal velocity) And in theory I can dynamically re-paint the terrain so as to slowly turn it white.

* hope to have 'snow/ice' terrain values to I guess control the surface friction, so on certain inclines the critters feet 'slide/skate'. My airplanes are already doing this, but I'm not sure if there is a satisfying control path. But if I could ski down a mountain siade and move the joystick left/right to some effect....

* and if I were brilliant, I could write a 'radius function' that dynamically creates a ski course with specific shapes and ramps and such.

---

still, so many bugs before I could release 1.09, and there will only be more if I switch to BIO immediately. Still the 'game' is still percolating. But I want to see a critter gasp for air and then run back into the dome. All by itself. Just 30 or 40 simple rules, and then let the world just play out.

tune the sky to any color you like, then use the genetics research components of your hand-held 'the Steve' (name pending). It can scan anything, recreate it (with resources and energy), store it (massless infinite inventory with just a 'the Steve' in your pocket.), decode its pheremoneDNA, recombine with other critters (or put them in a room together in some suitably chaste way) and get babies with fused characteristics (and again here it is more a plot device than a full genetic manipulation simulation. Like you scan a critter (getting its 'recipe' as it were, allowing you to replicate them ad infinitum), and then you add one of the N modifications offered by this starmap ('likes wheat') and then you can make critters that are similar in every way, only now they crave wheat instead of what their parents' liked (say, human flesh)

But the starmap only offers a handful of modifications like that, but in the best case, the definition of wheat would include its 'nutrition molecules' and the critters BIO sim would work with what it was given, and maybe a wheat-driven critter ends up with more or less mojo in some category or another, and maybe there could be just enough scientific simulation that it could be entertaining and surprising. But mainly the starmap will ultimately depend on you performing a sequence of actions which, when successful, enable the next stage which then repeats until you've had a satisfying amount of storyline and the instance data for the map has an interesting combination of claims and modifications and critters.

At any point you can start again from scratch, or, I hope, from the instance data you saved locally in a file, or got from another player (the moderator of this server instance, for example). So when I sign in to the server and indicate the game I want to play, I need to indicate 'and I need to moderate, as I will be providing instance data'

So you get a brand new instance, The server never sees your instance data (well, it passes through it unexamined, as your moderator copy of the game syncs up new players that drop in). So no API to save/load instance data in the cloud. Just peer to peer sharing, and the ability for any participant to save a copy to a local file (which might be remote, but that's between them and their device).

I like that. Not really news, but I struggle still with instance data persistence, since I want both a continuous aquarium/terrarium of personalized critters I have known from birth, but also a blow-everything-up-and-start-from-scratch-every-game-session

I think 'saved games' (how unique and brilliant!) are the way to go (and just never let any starmap affect your 'gold balance' used on a different map. (well, some sort of limits, I mean, to dis-incentivize the obvious 'cheating' possibilities with saved games)

And then not making the server know anything about saved games (it's handling all my games, and they all have different needs. In theory, it could provide a certain amount of database support, and I do plan to do league/tournament sorts of things using more of an official DB than the WoS Guilds system. But I'm not going to worry about leagues much until there are at least two players :-)

Overall, the game itself still doesn't grab my interest (or trigger enough OCD) to spend much time with it, and the 'action sequences' are insufficiently action-y, but every so once in awhile it delights me in some way.

However, flying around my 'base' with my (repaired again) 'cessna overcoat' last night, I found to be a lot of fun. Just trying to do touch and goes on my red runway next to my purple claim dome (now translucent)

I figure I will use things like the cessna overcoat as vehicles that you can fly around in a way that might require skill, but also come with a simple heading/elevation autopilot that will 'take you to the next beacon' as it were, and thus act as the in-game taxi service which works completely automatically for people who don't want to pilot themselves, but if you take over the controls in mid flight, the autopilot will let you do whatever you like, and still get you to your destination if you forget where you were headed. For a taxi-initiated flight (starmap decision).

Anyway, I just acknowledge that not everyone likes cheap flight simulators [Smile] and want to feature them in this starmap without making them a pain to those disinclined to enjoy the experience (also if the frame rate is horrible, it might be the only way to get anywhere)

But I see a lot of

"Take this box to this place"
yo go there
"Thank you, the box has a statue that must be placed here"
you go there
"thank you, tap this three times to place it"
you tap three times
"there are vines blocking the slots, cut them"
you cut the vines
"there are vine rats exposed
you defeat the vine rats
etc.

* go somewhere without getting too lost
* push some button when you get there
* collect some resource
* craft some object

repeat until you have the super object

---
So, as I continue babbling

as a solo game maybe the arc of the starmap is you plant the first bubble, then N additional ones (at least one each for each of 3 or 4 clients, and one dark evil client to defeat at the end, with the aid of the other clients? And a few betrayals, reversal and 'character growth' (changes an opinion? or just demonstrates character?)

But in this case

* make the Paradise Bubble (earthlike)
* make the Hell Bubble (mars/venus like)
* make the Stinky Bubble (methane)

Find appropriate regions of the map to make them all work together, repair broken systems, tweak critters as needed to achieve symbiosis (hmm, there's a game name hiding there synBIO..) "Here at SynBio Systems we ..."

successful domes build up critter populations (points) tracked by the starmap code.

game engine manifests virtual critters on demand to meet you when you visit an area, providing the illusion of densly populated when really the number of actual critters being simulated/rendered at any given time is just a handful.

 -

 -

 -

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
Oh My, I just tripled the framerate in critter world (from 5 fps to 15 fps, so still not really good enough, but if there are two more discoveries of this magnitude, I'm set!)

for the 3D math, I use a certain function (multiply matrix times vector) quite a lot. I thought I was calling a standard function, which I expected to have been tweaked to best performance, but admittedly, I can't even find the documentation for this (and there is a standard java function with a similar class name (but for left handed matrices, and I prefer right handed.. well, horizontal vectors... row vectors, so I don't use that library)

ANYWAY, I added some test code to call it a million times and it turns out it took 5000 nanoseconds each time. (to an old guy, that sounds pretty reasonable), but to be sure I wrote my own (its just an array multiply, sheesh) and mine only took 90 nanoseconds (50+ times faster!)

And that was just straight java and could presumbly have been done in native code even faster.

I mean, I'm sure it's my fault, and I was somehow linking to some inappropriate library that was pulling in a ton of other stuff and doing a lot of conversions and error checking and such, while I just have 16 multiplies.

But sheesh, now I am practically zooming around at a real game frame rate, and i KNOW I have other things to improve, frame-rate-wise, so a happy ending might be possible after all!

Oh here's the test. how does it play on this old 7 inch kindle fired HD...

grid space 36 fps
critter spacem in cessna 13.5

low, but completely playable!

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
Nothing really to report for this weekend/week, as illness prevailed over competence. But I can still blabber!

I'm still patching over bugs caused by the collision of grid space and critter space. Most of the game state exchanges are set up for grid space, so while you are in critter space, I translate the state into grid terms and then let the grid engine do the same state distribution as always.

But that means I have to copy state back and forth for some objects (well, all of them, but differently depending on if they are piloted, remote piloted, or NPC)

So the main bug I was trying to deal with was an incorrect heading value being distributed while in critter space. (Having forgotten that grid space offers both a heading (where nose is pointing) and a direction (of travel), so I probably need to go back through all that code and make sure I take advantage of that (and add some more, like a 'turret' angle)

But beyond just cramming the heading into an NPC flightSim, I want to actually run the flightsim math for remotely piloted critters, so I get all the little trubulence gusts and natural orientation changes for the NPC/remote vehicles, instead of just linear segments, updated on receipt of new state a couple times a second.

So I need to jimmy the flightsim math to do all the work, but leave the actual position and velocity 'unchanged' from the 'estimated values based on the state stream'. but let all the roll (orientation) stuff follow from the math.

Alternatively, I could take the heading data and then just fake it in the flight sim (smoothly move to new heading, with canned wing tilts to explain the turning, and pitch that follows changes in Z)

OR, I could be super cool and have an 'AI" autopilot that wants to 'drive' your copy of the object 'in the same way as the remote pilot', so again, the incoming state stream would give me the remote pilot's estimated heading at any given moment, and then the 'ai' would issue joystick commands to the flightsim, which would honestly follow them. The AI would need to know how to fly, of course, but I think I could encapsulate my own understanding of 'how to fly' and it would probably work most of the time, especially if I cheated a little around the edges (no sudden flipovers, even if the math says it should)

ULtimately, I want it to look nice when using the 'spy on' feature to spectate another player/NPC. But in fact, while in flight, other players are generally microscopic (without special camera work, which I totally should do -- 'track target' mode with auto-zoom)

but the microscopic part might end up being a problem if it is impossible to dogfight nicely.

Of course, if a lot of visual activity leaves contrails floating in the air, you can get a pretty good idea what is going on.

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
samsyn
Administrator
Member # 162

Member Rated:
4
Icon 1 posted      Profile for samsyn   Author's Homepage   Email samsyn   Send New Private Message       Edit/Delete Post 
If you like SpaceX, you'll love:

https://www.youtube.com/watch?v=tiD8nGD0Q6w

Otherwise, I dunno. Might be a trigger. But super well executed, whether you agree with it or not. Plus the comments are unifying, though, of course, in line with my fanboy leanings.

As one guy put it, this brightened my day.

I'm getting a little worried for Wintergatan, and trying not to draw any parallels. In case he reads this (:-), he should know that the journey *is* the destination. And he has already cast his spell upon us and we wish him nothing but good.

His work so far is an example we should all try to follow, and he needn't second-guess himself or be overly critical.

I am confident his project will land where he needs it to be, and I can only hope that any suffering he experiences will just make the music that much more powerful.

And then he can go on Dear Moon and just have fun!

--------------------
He knows when you are sleeping.

Posts: 11014 | From: California | Registered: Dec 1998  |  IP: Logged
  This topic comprises 5 pages: 1  2  3  4  5   

Quick Reply
Message:

HTML is not enabled.
UBB Code™ is enabled.

Instant Graemlins
   


Post New Topic  Post A Reply Close Topic   Unfeature Topic   Move Topic   Delete Topic next oldest topic   next newest topic
 - Printer-friendly view of this topic
Hop To:


Contact Us | Synthetic Reality

Copyright 2003 (c) Synthetic Reality Co.

Powered by UBB.classic™ 6.7.3