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 » synspace: Drone Runners 1.0.10 Release Notes (Page 1)

  This topic comprises 2 pages: 1  2   
Author Topic: synspace: Drone Runners 1.0.10 Release Notes
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 
These are the development and release notes for version 1.10 of my android game "synSpace: Drone Runners"

This game's current version is available in Google Play, and for the Amazon Fire HD.

The anticipated next steps are to continue fleshing out the game mechanics and API needed to support my new starmap (about terraforming planets on behalf of the needs of critters), And the interactions between the players and the 'million map objects'

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

Posts: 11017 | 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 
reserving a couple posts for later

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

Posts: 11017 | 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 
V1.0.10 TWEAK DOCUMENTATION

These are 'planet tweaks' in the range 100-199. The values are floating point numbers, so you can use fractional values like "0.345" or integers like "42"

You can experiment with tweaks using the text social mode. Start your line of text with a "/" followed by a tweak string and then SEND it.

For example, to set "tweak # 123" to the value "456.789", you would 'send' this:

"/123=456.789"


You can set multiple tweaks in a single string, separated by commas. For example: "set tweak#1 to 99 and tweak#33 to 1.7"

"/1=99,33=1.7"

You can set several tweaks in a row without specifying the tweak# if it is just one more than the previous one. For example, to set tweaks 1,2,3 and 44,45,46 from a single line:

"/1=0.1,0.2,0.3, 44=4.4,4.5,4.6"

I added a space for clarity, but it is unneeded.

Setting tweaks manually only affects your copy of the game. Setting tweaks in your starmap script synchronizes all players using that map.

NEW TWEAKS

code:
PLAYER TWEAKS 00 - 99  (affect local player)

10 Set vehicle ID (-1 for none)
20 Teleport to Planet (planet index)
21 set X value of player position (meters)
22 set Y
23 set Z

24 set X value of player velocity (m/s)
25 set Y of vel
26 set Z of vel

27 set throttle percent (0.00 to 1.00)

30 have camera follow this critter index
31 set X of position camera stares at
32 set Y of cam tgt
33 set Z of cam tgt

34 cam heading degrees (0-360)
35 cam pitch degrees (-90 to +90)
36 cam zoom (0.1 to 100)
37 cam tgt node height (when tgt critter)
(0-root, 1-head, 2-foot)

50 give player one item (itemId)



PLANET TWEAKS 100-199 (planet related)

100 Current planet index (0-9)
Your starmap might have more than one planet
In which case, set this first, then change
tweak values 'for that planet'
But many tweaks affect all planets anyway.
101 fractal seed (about 24 bits)
say, 0 to 15 million
defines the terrain
102 flora seed (24 bits)
defines the 'npc objects'
(trees, rocks, hives)
103 star seed (24 bits)
defines the stars in the sky

110 day length, in real seconds.
for example: 3600 for a 'one hour day'
(affected by climate factor)
111 set time to exact 'fractional hour':
0.0 (midnight)
6.0 (6am, sunrise)
12.0 (noon)
17.5 (5:30PM, golden hour)
18.0 (6pm sunset)
to 23.99 (just before midnight)
112 set clock mode
0 - reset to 'common time' seen by all
1 - pause at current time
2 - resume from paused moment
113 climate speed factor (cloud and clock speed)
1.0 - normal speed, clock runs normally
2.0 - double speed, clock runs fast
0.5 - half speed
etc, physics not guaranteed fun at all speeds


120 Wind Speed (knots)
or -1 for common wind
121 Wind Direction (degrees from north)
0.0 - north
45.0 - NE
90.0 - E
etc.
180 - S
270 - W
only affects when wind speed is >= 0
122 Turbulence Factor (essentially 0.0 to 1.0)
0.1 kinda normal, light turbulence
1.0 wild random chaos

130 Percent Land (0.0 to 1.0)
how much of the terrain is above sea level
0 - none, all wet
0.5 half covered with ocean
1.0 dry
etc
you have to force a rebuild
131 Sea Level Climate offset (meters)
offsets sea level by this much
132 Set Tidal Mode
0 - no tides, sea level at climate offset
1 = 'daily' tides
133 Set Tidal Crest height (meters)
how high (and low) above climate offset

199 Issue a 'planet command'
1 - rebuild planet after tweak change


INVENTORY ITEM TWEAKS 200-299 (crafting system)

200 select itemId (0-1023)
201 set item type (tab, 0-7)
202 set item name (text)
203 set item description (text)
204 'use' message (text) sent when used
text used on button as is
pre-pended with "on" as mshae
ex. "LOAD" button sends "onLOAD" message
or "onLongLOAD" for long press
205 vehicle ID (or -1) assigned to this item
206 set Icon ID, Snnn (s=set#, nnn=icon in set)

210 ingredient 0 (itemId) of recipe
211 required number of ingredient 0
212/13 ingredient 1
214/15 ingredient 2
216/17 ingredient 3


SPECIES TWEAKS (300-399) (available genomes)

300 select species index (0-63)
301 species name (text)
302 critter asset data string
will add some RPG values here


CRITTER INSTANCE TWEAKS 400-499 (individuals)

400 critter index to edit (0-1023)
401 eyeball gaze right (1) or left (-1)
402 eyeball gaze up (1) or down (-1)
403 eyeball radius (meters)
404 eyeball focal curve (2 for sphere)
405 pupil dilation (0.5 is normal)
406 eyeball blink msec
407 is 'lit' (affected by light in scene)
408 is '2 sided' (see back of triangles)
409 material id (front)
410 set species of critter (0-63)
411 set X position of critter (meters)
412 Y
413 Z
414 Set X value of velocity (m/s)
415 Set Y of vel
416 set Z of vel

420 autopilot flags (any combo)
1 - maintain heading
2 - maintain altitude
4 - maintain engine/pitch
421 AutoPilot heading degrees
422 AP altitude meters

430 set vehicle flaps if any
0 - 0 degrees
1 - 10 degrees
2 - 20 degrees
3 - 30 degrees

431 set sail 'up.down'
0 sail down, no 'power'
1 sail at 50% (half power)
2 sail 'up' (full power)
3 hydrofoil engaged (150%)

450 set vehicle id (or -1 if not in vehicle)
451 set owner (0-7, or -1, or 0-1023)
critters are owned by player or other crit
452 set target critterIndex
the critter that THIS critter has targeted


VEHICLE TWEAKS 1000-1099 (define aero vehicles)

1000 vehicle to edit (1-63)
1001 AERO of vehicle to edit (0-63)
1002 vehicle name (text)
1010 set first (of 20 floats of selected AERO
1011 second float
...
1029 20th float



PRIMITIVES TWEAKS 1100-1199 (geometric prims)

1100 select PRIM id (0-63)
1101 first float of PRIM description
1199 last float of PRIM description

prim description data to be defined later



CLEARINGS TWEAKS 1200-1299 (fractal overrides)

1200 Clearing to Configure (0-63)
1201 first float of clearing data
1299 last float of data

data format varies with clearing, still in flux



SYSTEM TWEAKS (9900-9999) (debugging/hacking)

9902 set desired frame rate
9910 set flora visibility distance (in meters)
9920 critterIndex with detailed loggin
(debug builds only)

9930 maxPools per frame (100)
9931 maxPush per frame (100)
9932 show flora (0/1)
9933 show roads (0/1)
9934 show critter skins
9935 show critters
9936 show prims (object type)
9937 show terrain
9938 show terrain normals
9939 show particles
9940 show fractal buildings
9941 show narration/announcements
9942 show ohorizon
9943 show critter world stars at night
9944 show 3D transforms (drawverts)
9945 copy bitmap to screen
9946 show controls

9950 update flora
9951 update hives
9952 update critters
9953 update Aero (vehicle sim math)



[ 04-22-2022, 10:04 PM: Message edited by: samsyn ]

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

Posts: 11017 | 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 
OK! Well, lots of balls in the air at the moment, but assuming all reviews and deployments are successful, there might just be a new version available in your town! And my apologies for it taking so long on my part, and in advance apologies for anything screwed up at the last moment.

---

But aside from that, I now resume to blabbering about v1.10 (really 1.0.10, but I don;t know that I will use that extra digit. I'll probably go to 1.9999999999999...

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

Posts: 11017 | 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 
OK, first new features [Smile]

* 'flora' objects can now include 'spawn points' where critters are spawned when you are nearby. This gives the illusion of a world teeming with critters, without ever having to instantiate more than a couple dozen critters.

* critters now remember 'where they were born' and will call that 'home' and will return there if they wander too far from it. Also, if they have trouble breathing (the atmo changes over time, in theory), they will head home as well.

* spawned critters now also obey gravity (bug fix)

* You can now 'tap on a critter in world' to select it as your target. (one step closer to implementing a battle system for critters)

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

Posts: 11017 | 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 
Critters now have a BIO system which is basically three organs:

STOMACH / TISSUES / BLOOD

Food that you eat is characterized by six 'molecules' (currently taken from the CHNOPS molecules of life: carbon, hydrogen, nitrogen, oxygen, phosphorous, sulfur -- though the names never appear anywhere)

When a critter eats something (animal, vegetable, or mineral), it is broken down into these six components and then mixed 'in the stomach' (forming a color-mixing sub-game, as you try to match the actual food in stomach 'color' to that of the critter's dna (ideal food color).

Food goes into the stomach when the critter eats it, and then leaves some time later (based on the amount of exercise the critter gets). As food is digested, it creates a form of energy which I am calling 'pep', so a well-fed (not starved, and fed food of approximately the right color) will eventually feel "peppy", and that will influence a lot of their activity.

A poorly fed critter will feel lethargic

I don't think BIO mis-management can lead to actual critter death, just extreme lethargy and unwillingness to follow orders.

If a critter stops eating, the food in its stomach (and its existing peppiness) can carry it for a long time.

But critters also need to drink, and have an ideal water color (though I don't break that down into six components, I just do a color difference measurement).

I am calling this organ "tissues" as in 'you store water in your tissues' and 'if you drink enough over time, your tissues will be well hydrated. Being dehydrated would then be like a de-buff "Ben casts PARCHED on samsyn!"

If your critter stops drinking, its tissues will dry up faster than hunger builds up, so thirst will trump hunger until it is slated.

Finally, there is the air itself. Again, each critter, in its 'dna' has an ideal gas color it would like to breathe. On this new starmap ("Utopia") the idea is to have happy critters, either by terra forming the planet, or by genetically re-engineering the critters (you craft a virus which causes a gene mutation in infected critters, probably)

The organ here is 'blood' (like oxygen molecules are stored in your blood, and your cells continue to be able to 'breathe' until that is used up.)

if your critter finds itself unable to breath, that is called being Gaspy, and Gaspy trumps hunger and thirst.

---

So the BIO system lets me ask some questions about the critter (howHungry, howThirsty, howGaspy, howPeppy...) which I will eventually add a visualization for (look for an MFD called BIO) and I wired that into my critter AI (not the VQ brain yet, this is just basic game AI)

But again, to create interesting behaviour with a small set of rules... I just have a conditional that asks how hungry the critter is, and if it is hungry, it looks around for the closest, most nutritious, food, whether that be a plant or animal or mineral. (the critter DNA shows what it likes to eat)

Having sensed something it needs (food, water, air), it doesn't just GO there and EAT it.. no no, that would be too simple!

The critter has a random action generator that basically toggles between standing, walking, and turning. But when it comes time to turn, if you are hungry, and it knows the location of food, it will turn towards that food.

But not EXACTLY towards it, always with some random heading error. Why? I dunno. Felt more organic, and it eventually finds the target.

And even then, once it reaches the target, it clears that urge (clears the destination XYZ flag it was obeying) and goes back to its random actions. Whenever the random action is to 'stand around', it then explicitly checks "is there food within reach? water? air?" and passes that into into the BIO system which then consumes food/water/air at a rate that is also set in the critter's DNA. Until the food/water/air is no longer there. But once the random action is to walk away, then the eating stops.

presumably it will get fancier, but that seems to work pretty well for critters to feed themselves.

----

Basically I like having the mouth and the feet following their own agendas.

----

I also fleshed out the state machine which picks which animation to 'loop' on the critter, if it is walking on the ground, flying an AERO vehicle, swimming, flying, floating. I defined about 20 'stock animations' that the engine will use automatically in various circumstances. And then I made some very quick and dirty animations/poses on my stock biped critter. ultimately, I think this starmap will come with a handful of new critters baked-in.

But now I need an 'eating' animation, and probably some sort of 'gaspy' 'hungry' and 'thirsty' poses, though I think I would rather just let 'pep' get involved in the animation system, so that the same walk cycle looked different on a 'peppy' critter than a lethargic one (slower, halting, limpy, unevent, sleepy face, drooopy head...)

[ 03-05-2021, 03:34 AM: Message edited by: samsyn ]

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

Posts: 11017 | 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 an 'eating' animation slot, and worked out where my state machine can change animations appropriately without too much thought or planning.

Each critter actually has very few states:

* standing around
* moving forward
* turning to a new heading

in the moving state, it plays the appropriate movement animation (walking, swimming, flying, floating, driving, piloting, etc.)

in the turning to new heading state, the animation is mostly concerned with the footwork (will be, I should say, this state is not fully implemented yet)

So it's the standing around state where all the interesting custom actions happen. For example eating.

So, when in the standing around state, the critter is normally playing its standing animation (in theory that could be different based on regime -- standing in water, in the air, on the ground) where it just shifts between several idle poses.

But this is also the state that asks specific questions like "am I hungry, and am I standing on top of something edible (plant or corpse)?"

And, if so, it switches to the 'eating' animation until the eating is done (food consumed, or stomach full, or interrupted or distracted)

Likewise, it can switch to drinking, digging, chopping etc. Always with a test for 'could I do it right here where I am right now?' and 'do I have a compelling desire to do so?'

By which I mean to stress that you bite what you CAN bite, and your motion to the bitable thing is a completely different system.

For that, I just invade the 'turn to heading' state. It picks a heading based on what's going on. If it is really hungry, and eats plants, then it picks a plant that would be suitable, and marks it as a destination.

Whenever there is a destination (and other things could mark one, but there is only one destination at a time), the 'pick heading' state picks a heading 'roughly towards that destination' (with a little random error just for fun)

Once you arrive near the destination, that destination is cleared and the next heading selected will be back to random, or driven by other needs.

If the critter is carnivorous, it picks a suitable critter to eat and makes it the destination.

Once it gets there, 'can i fight this' and 'do i want to fight this' questions are asked, and the fight begins. If the target is vanquished, it might drop some food loot which can then be consumed by any critter standing near it.

So my next goal is to seed the planet with a bunch of critters with random meat colors (what they like to eat vs what they are made out of) and let them duke it out for a few hours and see if any 'species' win and dominate the gene pool.

Turn their metabolisms way up so they burn food quickly and get hungry faster, to really stress the simulation :-)

Then add babies with genetics that are a combination of parents.

For which I might have to add an organ to BIO to answer the 'howRomantic' question :-) Maybe a HEART :-)

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

Posts: 11017 | 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 my animal brain machine is coming along. I have most of the food cycle working now. Critters get hungry, they smell food in the distance, they navigate to it, and eat it when they get there, if it is still there, and fill their stomachs, and stop being hungry until they burn off that food.

It's a little quirky, and I need something like 'adrenaline' in my BIO system (maybe that's the same as pep, but with a 'bladder' so the BIO makes pep at some rate, stores up to a certain amount ahead of time, and can 'live off of that' in an emergency for some period of time. I.e. a 'buff' that lasts until the charge of adrenaline/pep is used up. Anyway, and then some psychologically alarming events should trigger a release of adrenaline.

But my main focus here is to have a hungry critter get sluggish, to the point of sitting down and falling asleep. And sleep should restore pep, even in the absence of food, so that at the end of the sleep, there is just enough pep to walk to the next food.

Then some metaphor for death that doesn't make me cry. Sleep long enough and the critter 'auto makes a backup and then recycles itself'

So, when carrion critters come along later and chew on it, they are just recycling it.

Anyway, basic food works. Now I want to control the 'seeds' emitted by a critter for more color mixing game. Right now, the new grasses are of random colors (in a grass spectrum, which I need to widen for terraforming purposes - green grass, red grass, blue grass...), but I want the new ones to relect what the critter has been eating. I was thinking the 'last thing he ate', but since I am doing a color mixing game in the stomach anyway, now I think it should be 'the average color of the current stomach contents'

If nothing else, by walking behind a critter and observing the colors of the new grasses, you could evaluate their bio state.

If the grass color matches the critter skin color (stick figure color), then the stomach is full of the ideal food for this critter, and is leaving behind even more of it, to the benefit of other critters of the same species.

so, if I come back much later, I might want to see one color of animal in great numbers enjoying a lush field of perfect food, with a bunch of sad other critters, starving in the corners, sleep-dead.

Hmm, yeah, maybe they hibernate until something comes along and feeds them (like you), which presumabbly would make them like you.

I thinkn what I want to do next is polish the food experience, and make it feel pretty deliberate and maybe a little competitive between the critters (running to get the new food before someone else does -- though that should probably be another 'gene' (how fast he approaches food) that could be inherited from parents, or tweaked in some genetic lab.)

Anyway, I want to get food right so the critters graze satisfyingly. Then I want to work on approach/avoidance, so each critter has a 'personal space' distance they keep from other critters, but then add a VQ brain (shared by all critters of the same species) that learns to adjust this distance for different categories of things, like "stay 10m away from humans of team X" but "allow team Y to approache within 2m" and then soem action like "MOUNT" can only be successful if you can get within that distance.

The more positive the VQ brain is in its opinion, the faster you move towards/away from the object.

I want to see a critter take a wide swing around me on its way to food (say I am standing between critter and food, I want it to maintain its social distance, based on its trust in me) (it can also just ignore me, but even then, it would be nice if critters didn't try to walk right through each other.)

But I want their motion to be goal driven, and constantly re-evaluated.

When you issue some attack order (tap a button), I want that action to have a 'node' baked into its animation, and then auto-walk the critter until the target lines up with that node, and then initiate the animation, so that the 'strike' happens right at that node point. Then walk the critter back out to its comfort distance automatically, as needed. So lots of critters moving around during the battle, but generally trying not to overlap. So long as you can select your target, their motion should not be much of a concern (just tap the button and they will move as needed to have the attack, and ideally the camera automatically shows a nicely framed view of the attack.)

But I want this approach/avoid thing working. I want to walk into a small crowd of critters (maybe they trust others of the same species, as a rule, though even critters will eventually pick 'a team' so same-species critters on opposing teams could still fight.) Anyway, when I walk into the crowd, I want to see some or all of them wander away until they are comfortable, and factor my adjacency into their selection of desirable food.

And, eventually, to realize that I am food, as well. And if I am a close enough match to their ideal food, they should consider starting a fight with me.

I am, of course, free to melee wildly, because this is a game and no one is really getting hurt.

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

Posts: 11017 | 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 
well, I never do the expected 'next thing,' so why should I start now

I decided I wanted stars in the night sky, and that ended up being a little more complicated than I expected, since I have to make the sky color come and go under several circumstances, but I finally realized the number I wanted was 'sky brightness' which varies both over the course of the day, but also changes with your altitude, so on the ground you only see the stars at night, but at the high 'orbital' altitude, you can see stars during the day as well. I also have them sort of disappear over the horizon, as if you were in orbit, but that's all very fake

Still, I love flying my cessna overcoat in the dark.

I think I might add some 'falling stars' on my star field with the goal of someday having some turn into meteors that hit the planet.

Plus I'm way behind on my sound design :-) I need some wind sounds asap. Maybe even footsteps. For this sort of sound effect, I am really hoping to use the FM synth of the music system, rather than record specific sounds.

Random example (a little after sunset, sky not completely black yet)

 -

You (the starmap) gets the following tweaks:

* minutesPerDay (how many real minutes for one game day)

* current local time of day (freeze time at sunset, for example)

* natural sky color (on a bright day). This is the color you might terraform to get a more pleasant gas for your critters to breathe (if you set this to black, it means you are an asteroid or something with no atmosphere)

* sun color (though I don't use this yet, and might not ever)

* sun intensity/radius (I don't know if I will expose these or not, as they get all mooshed together in the engine logic which works out how bright things to should be, based on time of day, altitude, surface normals, and sun position.

* random seed for your star field, so you can have constellations people learn to recognize over time. Right now I am just using 64 stars, which isn't very expensive, and looks about right. Because of the low resolution of my canvas, I have to have pretty bulky stars, but hey, they're beautiful to me. Again, totally fake, physics-wise, though some of the lighting equations might be semi-realistic.


Also, I want to add at least one more light, mainly to use as a campfire (closest, if there are multiple) to throw shadows or something.

I mean, I really have no excuse for not having detailed shadows of my stick figures. Just not sure that adds game value for me. Now, a scene where you see 'silhouettes' delivering dialog sounds interesting, but maybe jyst render normal stick figures, colord black, on a white background and tell the viewer it's a silhouette.

or not, but now you still

[ 03-14-2021, 04:56 AM: Message edited by: samsyn ]

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

Posts: 11017 | 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 
This weekend I added the start of my 'approach/avoidance' system. Which I apparently settled on the worlds "follow vs flee"

Each critter species has a 'personal distance' radius, where it becomes uncomfortable if another critter is within that distance.

That radius is then modified by things like the critter's attititude towards specific other species or teams (the red critters vs the blue critters)

Then each critter periodically scans his environment for other critters, works out how afraid of them it should be, works out the specific radius required, and if the current distance is less than that, sets the GOAL to FLEE, and calculates a safe spot about 2x the personal radius from the offending critter.

So, with just that, I can now 'herd' critters, by walking near them, and they will then walk 'away from me' so I can sort of control the direction. If several players worked in concert they should be able to 'beat' a herd off of a cliff or something :-)

And, as a screen saver, I can now just watch a herd graze on the grasses, while avoiding getting too close to each other (though I think same-species will start with half the radius of standard personal space. And probably factor in some RPG stuff (level times attack points versus my level times defense points) and if the other critter is more powerful than me, show some respect by increasing the distance (and increasing the speed at which I walk away)

Ideall, when I am alarmed and move away, I can send a message that represents a squirt of sweat or something, that might then actually trigger an attack by a nearby predator (that is attracted to fear)

I think my next development strategy is like this, and it's a little mean, but I think it's mandatory for a game.

* currently, they graze on grasses when they are hungry, and I can impose a famine at any time for testing purposes

* Next I think I will make them 'fall asleep' when they get hungry enough. (and recharge enough from that, that they can wake up and try to get food once or twice before falling back asleep). But they would trigger the sleep animation, so I could watch them both eat and sleep.

* Next, I am afraid I have to have 'enough sleep and you die' taking the critter into 'lootable corpse mode', (the same as would occur at the end of an RPG battle against the critter)

* Next, I have this section that tracks where all the food is (then the critters just search that instead of the whole world). I just need to add to that list all the 'currently unlooted corpses' and then include that such that (depending on the species genes) it might pick a plant to eat (if available) first, and then pick a corpse to eat (if available) second, and then pick a living critter to eat if it smells delicious (food color), and I am hungry enough. Enough hungre and maybe I will lash out at things which are logically beyond my reach. Plus, a hungry critter is a weak critter (no pep), so more likely to lose.

Next, if I do decide to loot a corpse (sorry), then I just pick it from the list of food, and do the normal eating thing (sorry!). So at that point, I can watch them eat, sleep, die, and be eaten (cycle of life) when they die of starvation.

Next, if no food (plant or corpse) is available, then they start considering living critters (again, based on genes -- predator vs prey, ideal food color vs meat color) and at first that just makes them approach said critters (lowering the personal distance radius based on how delicious and how hungry)

Next, if the critter is ever close enough, while those conditions are true, it finally flips a switch and change to GOAL = KILL and starts an official battle with the critter.

Once in battle, it becomes 'the same as any RPG battle' where each critter involved:

* picks a target critter
* picks an available attack
* moves to an appropriate spot to launch that arrack
* waits for the attack to charge up (recharge after use)
* animates the attacl, which takes a little time
* announces the result (hit points change)
* repeats until victory, defeat, or 'goal=FLEE'

If it is victorious, then there is one more corpse in the world, and it becomes something they can consider eating.

And then I think I have the complete circle of life (well, other than reproduction), and a working RPG battle system that tests itself (come back later and see which species/grasses/atmosphere has survived)

EVENTUALLY there will be a game in there somewhere, I promise. But if this automates the flora/fauna backstory, that would be great. (a way for you to level your character between quests, and a source of 'count quests')

Plus, all these critter successes/failures get reported to the starmap, which should turn them into some sort of 'score' for the human players.

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

Posts: 11017 | 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, I haven't fleshed out 'follow' yet, but the idea is a second radius that the critter wants to maintain with a 'friend'

So, I somehow make this one individual critter into 'a friend' and amoongst other things, that reduces his personal distace bubble (with me) so I can walk right up to him.

And maybe I do something automatic when close, but more likely I just show action buttons in the normal area, with critter-specific choices like FEED, PET and MOUNT.

So, if I walk away, my current mount (that I am not riding), sees me get 50 ft away and then starts to follow, but otherwise just grazes nearby.

When I push the MOUNT button, I would like that to do something like animate the stick figure 'whistling' (cue sound effect), then a pleasant 'whinny' from the mount creature in acknowledgement, and it is triggered to approach me and stand in a mountable orientation, and my critter then auto-mounts when it makes sense, and that completes the action (which I guess can then 'fail' like any spell, with the mount skittering away or something)

And then I am 'driving' the mount, and my 'body' is just reacting to sitting on the moving mount. And I get a DISMOUNT button instead. I can probably still FEED and PET while mounted. (possibly requiring simultaneous animations on me and the mount)

And I guess maybe I get any attack buttons that the mount itself can handle (not sure if I need a new row of buttons for this or if it fits in the existing 8 belt slots). But I suspect only 2 or 3 actions per critter on average, with the goal to them being as unique as possible (THIS critter's 3 actions are very different from THAT critter's 3 actions). A goal.

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

Posts: 11017 | 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 a simple Inventory system along the lines I discuessed before, here's a screen shot of the starting UI.

 -

Hopefully I will eventually find some nice colors.

The two missing sections on the right will have the 'crafting' interface (the ingredients and a MAKE button), and the 'commerce' interface (basically a BUY and SELL button if the designer has set up a 'fair market value' for the item. (otherwise you have to find/craft the item)

The tabs along the top select item categories (defined by the starmap, the actual words, though the meansing are someone hard set (tab 5 is for vehicles, for example, but you could call it 'Rides" or something. Plus you get to make up the 'USE' word (for a cessna, I set it to FLY iin this example). Other categories are wired to some concepts like "potions(healing), armor, weapons, etc). Will probably cut it to 6 categories as I want room for one more tab that selects the 'build queue' so you can schedule lots of things to be built and maybe re-order the list of waiting items

Once you select a category, you see all the items in that category and can scroll the list or tap-select a visible item, which makes it the selected item shown in the detail area on the right.

Items are defined via 'tweaks' in the 100-199 range. (tweak 100 used to select a particular itemID, then tweaks 101-199 can change individual properities of the selected item. Name, Desc, etc.

The goal is for these items to be super light weight (4 or 5 properties) and mainly you use them to set up a 'tree' of crafting with interesting item names and descriptions (game value)

I'm thinking of maybe using this same interface to design items. For example, in EDIT mode, you would drag item names into the recipe area (to add ingredients to its recipe)

That got me thinking that it might be cool if players could 'add items' in real time (as gameplay). Like say I needed a new sort of potion, maybe I could 'add an item' to a category (potions) and indicate the results I would like it to have (list f possible potion modulations - strength, wisdom, whatever) and then it would tell me "for this sort of potion, you need the following mandatory ingreidients, plus these modulation ingredients... so it would be 'fair' (a powerful potion would require more ingredients).

Also, maybe recipes could be 'loose' and accept "that's pretty close' for ingredients (asks for red leaf paste, but you give it green leaf paste instead and it still works, but is slightly different from what you expected. maybe.

I implemented 'local star system currency' as 'item 0' (so every star syetm can declare its own currency, and any 'commerce' (BUY/SELL) of items would be priced in that currency (in this example, the system uses 'tarballs' as the currency)

ANYWAY, a simple beginning. But I finally have a button to 'put on' my Cessna Overcoat any time I like.

Posts: 11017 | 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, and to go with that, I added collision testing for 'world particles' (like those grasses that grow where the critters have walked), so now I can harvest those (just by walking on top of them) and the harvested materials can be items you collect in inventory and craft from.

I'm assuming a recipe will end up being a string that looks a lot like a 'tweak string'

"1=12,23=3,15=2"

(requires 12x of item1, 3x of item23, and 2x of item15)

And perhaps that evolves into:

"I1=12, I23=3, I15=2"

if I want to include other ingredients than just items (Inn) like tokens (Tnn) and special ingredients like 'your own blood' (some of your current hit points) or something permanent about you (like your wisdom points) for something really fancy (which means it has to be possible to earn ability points back and not have them hard wired to your level)

I also need collision testing on 'flora' objects since that's where most collectibles will come from. I anticipate having lots of 'minerals' (and am tempted to go full Rocket Club with the 'real' and 'fantasy' elements, so any weapon can be made stronger if crafted with extra 'killium'

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

Posts: 11017 | 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 
for crafting, I am headed towards a sort of Real Time Strategty set up where you can press the MAKE button rapidly to make several items (same or different) and they just queue up in the order you request them.

Then they are built 'one at a time' (though maybe one per category?) so maybe six production queues you manage separately? (which would make it more like the RTS 'has lots of individual factories with special items per each' but without the individual factories, since everthing is actually created by "Ping" (your personal nano factory sentient robot buddy (who needs a FACE and should appear on this panel somewhere, or certainly on the quque screen... plus as a voice of instruction so you know what to do.

--

Ultimately, the moral equivalent of having an RTS factory, is for you to have 'learned the recipes' of the things that factory could make. So you can still have a 'research tree' that produces new recipes over time.

Now, I guess Ping should be able to manifest new objects at the location of your choice. Probably 'near where you are standing' so as to avoid just creating critters in the middle of enemy compounds.

Or maybe you always have to collect your critter army from existing hives, and then go do battle until it wears out.

So maybe when Ping makes a critter, it appears at a hive. Ping is then more of an interface element to this special hive factory, than the factory itself.

I should probably have a 'currently selected hive' semi-persistent selection. Plus however much I need of "some hives can't make that sort of critter'

sorry to be bebbling inside the dev notes. I want to try to keep vaporware in the other stream.

[ 06-12-2021, 03:01 PM: Message edited by: samsyn ]

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

Posts: 11017 | 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 
when implementing behaviors (selectable by genome), I need to remember things our cat does.

Like getting much more attentive when the prey turns and moves away from the predator.

The predator takes steps to follow the prey, only when the prey's back is turned. (like the topiary in The Shining).

so give the critter awareness of the target's gaze direction, and then do that 'hold very still' bit when it thinks it can be seen (animation and velocity 'pause').

And maybe some prey really does react only to motion they see, giving you a ninja sub game.

Aside from babbling, I broke down and added a midi importer (maybe I already babbled about this).

It's pretty primitive. It just decodes the .mid file (it's a Nerd Option) and finds all the note start/end events (and not much else), and then adds those notes to a groove track.

(All the notes to the one track, and as if they were all played by the currently-selected patch, so it sounds pretty bad.)

I plan to eventually have some sort of binding, manual or automatic, so that each midi instrument is given its own patch index, so at the very least you could re-assign instruments to individual voices.

In the course of getting that to work, I had to boost the maximum number of events in a groove track (from 4K to ... 8K? 16K?) midi generates a million notes a minute (well, several thousand)

and the midi sense of timing is much more flexible than my groove tracks, so my playback has rhythm issues as well. Though, in theory, if the MIDI file has a hardcoded bpm (that holds still), I will in fact snap to that grid as it were. But that's a fantasy, music has to be able to move around in time as well as frequency.

The file is loaded 'by intent' and I have the usual problem (my fault somehow, though I have never decoded it) where the app hangs someties for many seconds while loading the file. (like Android is holding off on loading the file until my app 'does' something, or it times out waiting for it. From my perspective I have been put to sleep and am not running. However, I have threads, and I imagine one of those will turn out to be the problem. Either that or they need me to cut my CPU usage... like, as long as I look 'busy' they think I am still trying to shut down gracefully and they're willing to wait for that. Point it, I dunno, and no one else seems to be complaining of the same thing, so I assume it's my fault.

end of babble.

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

Posts: 11017 | 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 an automatic recipe generator, and have a default set of items (that the script can then overwrite, or add to)

And I am reworking my categorical thinking... the 'TABs' along the top might end up meaning:

1 - raw resources that you just 'find' lying around or in direct harvesting of a plant or ore node.

2. - middle level things that are made entirely from level 1 resources you directly collect.

3. - middle level things made out of level1 and level 2 things only

etc

so tab 7 would be 'things with 7 generations of stuff in them.

Actually, that is probably better worded as 'the highest level individual ingredient, is one less than the level of the item itself.

ANYWAY, the hard-wiring is:

The critters walking around plant grass, which grows and is then harvested by you walking upon it. The grasses come in 8 flavors (ROYGBIVW) and critters have preferences.

Once harvested, the default names of these items are "red leaf paste, orange leaf paste, etc." and they can be collected in world as described.

Since the grass color more or less follows the color of the critter itself, which follows (loosely) the player color od the player it 'follows' (if any), and the hive it is from.

So, near a hive, the grass tends to be the same color as the hive, but it will be a jumble of colors since a red critter, who has eaten a little blue food, will plant purple grass for awhile. Plus a little random variance (genetic devation!) in each blade of grass.

There is also the 'flora' system with things which are a bit more stationary, though they can still grow and change over time (and be damaged/destroyed). But their position on the planet is set in stone (by the random flora seed provided by the starmap)

The default item list declares a few dozen types of flora objects you might encounter, with 8 (ROYGBIVW) possible examples of each type (tree, rock, hive,..)

Those types are constrained by 'what the engine can offer by way of 'models' and 'materials', which are pretty limited, and not yet really extensible. The colors are kind of arbitrary, and while they always exist internally, my expectation is that the actual names provided by the starmap would "Maple Tree" instead of "indigo tree"

But the idea is:

1.) you pick a starmap
2.) I wipe out all 'World Tweaks' back to factory default
3.) I reset all defined items back to defaults, and create semi-random recipes for each.
4.) I restore your persistent data for this map (your inventory, by numeric id)
5.) I start the starmap
6.) the starmap sets whatever data it likes, including changing te items and recipes

So if you could open your nventory panel quickly enough, you should see that you own five Red Trees, which then become five Holistic Field Generators (or whatever the script decides to use that item number to mean). But you own 5 of that item number, no matter what it is called or what its attributes might be, so a thoughtful map designer would not change item numbers on an existing map where people already had inventory/currency

And in case I didn't make it clear enough, item zero is always the local star system currency, so if that is "Quatloos" and the inventory says you have '245 of item 0', then your 'star wallet' has 245 quatloos in it, which can only be spent or earned in this system (even if another system also uses the word Quatloos, there is no exchange rate.)

This is so each starmap can run its own economy, highly inflationarily, or not, as it sees fit.

ANYWAY, as to the random recipes. I'm just being lazy, but then turned it into a feature! The idea, I was thinking, is "maybe I have tons of red leaf paste, but no yellow leaf paste that this other recipe calls for. I have looked all over, but cannot find yellow blades of grass, and since that's a level 1 harvestable, it doesn't normally come with a recipe (you don't make it out of something else)... or DON'T YOU?

So, my first thought was that the original design could call out an ambiguous ingredient, like "leaf paste" and then you could substitute (probably with expense, like burn a red leaf paste and agreen leaf paste, and get one yellow leaf paste in return (and it could be color mizing gamelet).

But I kinda of felt I already had too many color mixing games, so instead I made it so each level 1 harvestable can also be crafted with a 'random' recipe requiring TWO (other) harvestables.

So in theory, so long as you can find two flavors of 'tree' you can eventually synthesize all eight flavors. Though it's easier to just find the flavor you need, probably. Still, I thought it was a nice touch (AND it prevented me from having to call out a recipe manually for anything yet)

That being said, this is just the recipe, not the state machine that actually makes one. It's looking like I will have a separate 'factory' for every single item id. So, in theory, you could be cimultaneously makeing 'one' of every item.

But that messes up the thought of a queue, and I was sort of getting into thinking about the queue.

But I don't want a separate queue for every itemId. Well, I just don't know what I want. I sort of want to:

1.) indicate what I actually want "cessna overcoat"
2.) let my 'assistant' automatically start making all the pieces and sub pieces ad sub sub pieces required (all from one MAKE button tap frmo me)
3.) periodic updates "Now I will make a Green SledgeHammer for the "left wing strut" for the "cessna overcoat"
4.) and it thinks ahead to note somewhere:
"I could use some more green leaf paste and blue tree wood. Otherwise, I won't have enough to finish the cessna overcoat"

Maybe a popup report for each itemid (on demand) that gave the full list of all items needed to build one from scratch (and how many you have):

12K/12 green leaf paste OK
47/3 orange leaf paste OK
0/2 wing strut NEED 2
...

to let you see up front what you're getting into.

future problem :-)

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

Posts: 11017 | 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, it's now a working crafting system, with a bunch of default recipes and items.

* open the inventory panel (is also the Ping personal nano factory bot interface)

* select a category 'tab' (higher the number, the more complex the part)

* select the part (the item) from the list of items in that category.

* the detail panel then shows the recipe and a MAKE button. If you have all the ingredients, then tap the MAKE button and a big ONE appears as it starts making one unit of that item.

* if before that finishes, you tap MAKE again, the ! changes to a 2 and now you are going to make TWO o that item. I arbitrarily stop you at 9, I think.

* if you then immediately (while MAKE is still in progress) tap on a different itemId, you can start making some of those at the same time.

* In theory, you could simultneously schedule u to nine of every item in the starmap, all building simultaneously.

* to help you track what is happening, the item list also indicates which items have active builds going on (with a progress meter and a remaining count)

* if ou tap on the ALL tab a second time, it toggles to a 'active builds only' list, so it shows ALL the items currently being made (and nothing else)

Eventually I plan to let you cancel a MAKE, but for now, you're stuck with any you ask to be made.

All builds take 30 seconds at the moment. I need to make that proportional to 'difficulty' and also provide 'boosts' so you can speed things up over time.

I'm sure I will have some resource (energy?) that limits contstruction speed, such that building lts of things at the same time makes each one buid a little more slowly. And then let you pause them (and resume later) to let higher priority builds 'play through' in an emergency.

In command and conquer, the resource was 'electricity; and you could build more ower stations (and build faster) or destroy enemy power stations (and stop their building). I want something like that.

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

Posts: 11017 | 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 oh my, map map went from 'no inventory and no items defined' to 'full inventory system, with 125 defined items to be crafted.

I am trying to set it up so the lowest level items are raw materials you can collect in world.

the next level up are items made from resources and other items. things like "a length of rope" and "a barrel" (handicrafts)

Next come very simple machines (and knoves and such)

Then more complicated machines (radar system, avionics package)

Then at level 5, you start getting into the things you really want to own (vehicles, armor, weapons), with the lower middleware just being the pool of ingredients necessary to support the good stuff.

So I hard define the very bottom (must match what the game engine is able to collect), and the very top (script definitely calls out the 'real' objects .. like cessna overcoat and 'ore magnet' that you really NEED for this starmap), and then in the middle ware section, I add a bunch of semi random items with recipes that glue things together up to the level 4 systems. Then I expect each level 5 item to come with a manually prepared ingredient list from those thoughtfully developed level 4 items (which aare built from random combinations of lower itemIds)

Hope that made sense. Again, the starmap autho can overwrite any of this (the complete item(s) or just individual fields), but I hope this system will make it so I only have to think about the top level cool objects, and can live with random names like "Epic Entangled Cyber Nodes" for the middle ware. It's a callback to WarPath as well.

I fleshed out Vehicle Support as a new Tweak section (section 1000). You can define up to 64 vehicles, and each vehicle is made up of some number of "Aero" objects (up to 64 per vehicle, though the cessna overcoat only uses 5), and each aero is 16 floating point values with an engine-defined format. So to define a vehicle:

1.) set tweak 1000 to the vehicle Id (1-63) you want to design/alrer
2.) set tweak 1001 to the aero Id (0-63) of the aero you would like to define
3.) set the 16 floats starting at 1010 to the 16 values of that aero
4.) repeat to step 2 until all aeros defined

---

I also decided on about 20 different vehicles I would aspire to add stock aeros for. (personal min-sub, battle tank, etc.) and I put in formal item definitions (101-119) for them, so they APPEAR to be in the game, but I only have aero definitions for the cessna (and need to beef that up and add aeros for seating, engines, and weapon attachment points)

Posts: 11017 | 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 
Also, I think "Ping" just made his first appearance (my personal nano factory autonomouse remote control buddy)

Opening the inventory screen, is actually opening a comm channel to Ping (who I imagine is floating nearby)

In that middle section of the Inventory detail panel, I now have a picture of Ping (with 8 attitudes - from arcadia -- a great skin by Camanator)

And the idea he is the one giving you the item descriptions. He scans things to learn recipes for you, he holds your actual inventory in a form of stasis (within him)

And in this little panel, it tries to say something helpful about the current item, like

"Hi, I'm Ping, this is the inventory system"

"Hi, you don't know the reciper for Epic Entangled Cyber Nodes, would you like me to research it for you?" (and a research button replaces the MAKE button)

And, if you were somewhere with a 'store' that dealt in this item, Ping would probably relay the offers and give you BUY/SELL buttons as approprieat, along with a little education as to how crafting works here.

And yell at me if I don't make that dialog script driven (might just need a Ping Tweak... like 1100 to set ping's name, 1101 to set his mood, 1102 to set the text of his current hint, and some number of tweaks to set the button text (and script messages sent when pressed) for any optional buttons (maybe 3 along the bottom of that section).

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

Posts: 11017 | 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 admit I am getting tired of being blind though. But I sholdn't whine, and I am grateful my recovery has been as good as it has been so far. It's just constantly one step back.

Had shots in both eyes today, so I am back on that schedule and am particularly blind until that settles down. it takes me a minute sometimes just to resolve coding problems due to not being able to distinguish . from , or : from, ;, or even ( from {, in addition to the pain of transcribing long words when you can only see a couple letters at a time. Just returning my eyes to the spot I was looking at a moment before has become very difficult, so I have to use pointers to track where I am in the paragraph. whine whine whine.


luckily, babbling doesn't require much sight.

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

Posts: 11017 | 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 
Happy Father's Day!

I've reworked the inventory items again. Gone are the random middleware items, at least for now. I needed some long lists to test the scrolling list, but that's working well enough now that I mainly just need the items my starmap needs to deliver its story.

However, at the end of the day, this will mean that each planet starts with my 'default items' and the map designer can just live with them, or override them individually (change names, descriptions, and properties)

And the tabs along the top of the Inventory Panel are 'Item Levels' one through seven. The lowest level (one) is basic resources as collected by harvest (leaf paste) or destruction (metal dust), and simple combinations (potions?) which get more complicated as Ping learns higher level recipes.

And my goal with synSpace is not to just rack up numbers, but to actually have things behave differently (to justify their exisence). Still, you have to be able to level up yuor equipment and that looks like (in this game) it will be via 'building something better, that might require a lesser version as an ingredient'

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

Posts: 11017 | 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 dutifully picked up a couple new kindles on Prime Day. I think Alexa has motivated them to up the CPU performance over the last few generations. The 10" feels pretty fast. The 8" gets about 70% of that frame rate, which feels... um... 'retro' (WoS is 10 fps for example)

I do find it tedious to go through opting out on all the features, and trying to find the options that download gigabytes in the background over wifi. (and turn them off, I mean). Seems it's different on every device.

The good news is that, despite some initial oddness, 2021 Kindles do not have a problem with synSpace :-)

I finally added a simple collision system for flora (separate from the collision system for particles) so now I can bump into trees and such. I basically track the mass of the colliders and declare a 'winner' based on momentum at time of collision, then each object can have its own response to winning or losing. For example, for a tree, when it loses, it gets 'harvested' and when it wins, it just sort of stands there, though maybe it could do so boldly.

When the critter or vehicle wins, they pretty much continue on their way with minimal disruption (and collct automatically whatever was harvested)

when the critter or vehicle loses, they (being the movigin object) bounce off of the tree.

As to whether or not a tree gets harvested, I compute a float indicating how much you won or lost by. and then you, the object can have several responses for a small loss (loss of fruit>) vs a large loss (destruction of tree(providing wood loot))

ANYWAY, so now my new inventory system is actually collecting 'stuff' from these collisions, so soon I will have to start requiing the actual ingredients instead of letting you make anything at any time.

my bounce is not very satisfying yet. I think I want it to stop my forward motion (that took me into the tree), immediately snap me back to just before the collision (so I don't immediately trigger another collision), and leave me facing more or less as I was, but on a slightly different course if in a vehicle. Maybe I should also be thrown slightly left or right.

I want to leave the engine running, smash into a tree, bounce back, but immediately be accelerating forard again, likely to smash again into the same tree (if it hasn't sccumbed yet) but at just enough different of an angle that eventually I miss it and continue my journey (if I am not critically damaged yet)

As to damage, the question arises "if I can make as many cessna overcoats as I like, what does that mean, when would I need to switch to another one?"

And the simplest concept is "if yuo crash it, it's gone, and you'll need a new one" And I could just define some criteria that distinguished a crash, and it would be like burning through extra lives in an old game. but you could build new lives.

Slightly less simple, but pretty much the same, each flora object has some number of hit points (pretty much proportional to the mass) and in any collision, the lower mass participant takes the majority of the damage, losing hit points until destruction.

For a critter, destruction is meta death (with resurrection since you were just a bio synthetic to begin with). For a vehicle, or any inventory item in a stack, I don't want to track a piece of data (hit points) for each entry in your stack. I don't want to show you a list of all the cessna overcoats you own and their remaining hit poitns and let you choose the one you want to use (though admittedly, that now sounds sort of cool)

I just want to remember "You have six of these, all identical in every way"

BUT

I tell myself there is one 'at the top of the stack', and for THAT one, I do in fact track its hit points. That's the only one at risk of destruction.

So I do have to remember hit point data, but only one copy per item id, no matter how many instances you own.

the collision testing was kind of fun. Sunce the flora system already is 'relative to terrain squares' (every square has exactly N flora objects in it), I end up only having to test the objects withing the 9 terrain cells centered on 'me' (I mean, that's what I do, and for anything with a radius of less than 100 meters or so, that ends up including all possibly flora with only 9*n objects to test (and N is a small integer). I then cache the results of that (inside the critter itself) and don't recompute it unless the critter wantders into a different terrain cell (a trivial test since it's a simple 2D grid)

ANYWAY, so technically I am testing against a million possible tree collisions, but I end up only actually having to test a couple dozen

I assume I will send a message to the script on ech collision, and should probably let the script decide what happens to each of them.

Right now, when you define the floraIds (using Flora Tweaks), you specify the 'reward string' that determines what loot you get (from the tree -- and I say tree, but lots of these are rocks, fish ponds, etc), anyway, I was thinking of something like

reward = "23=10+14=80"

Which would mean you have a 10% chance of getting an item 23, and a 80% chance of getting an item 14. If you wanted to give just item 99 but sometimes 1 2 or 3 of them, it would be

reward = "99=33+99=100+99=66"

So you get one copy 100% of the time, another one only 66% and the last one only 33%.

Though... I have both a flora ID (Oak Tree, Vanilla Tree, Gold Nugget, Salt) and a flora TYPE (tree, rock), and it's possible the reward should be bound to the type... well, it would be less work, and maybe thet could both have the option and I could just run both. so any 'type plant' could have a chance of providing 'wood' but only the "Rare Flower" floraID could provide "Purple Blossom" item (so rare flower could drop both purple blossom and wood)

Probably overkill, but I kind of like that. And then, the reward strings would tell the engine what to do, and the egine would hand out the loot directly, and THEN report the result (inclluding the specigfic loot info) to the script, so it can still be the one looking for a quest requirement to have been met. "Ah, I see you have found the purple blossom!"

Though, for that sort of thing, I might prefer that the item or flora object declare a script message to be sent when you collect one. Well, whichever ends up easier, I guess. I want the syntax of writing a quest script to be super simple.

end of babble

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

Posts: 11017 | 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 
Hey, my dad has a wikipedia page!

https://en.wikipedia.org/wiki/Don_Samuel

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

Posts: 11017 | 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 
Sadly, I haven't been very productive of late (vision continues to thwart me), but I made a new progress video anyway for v1.10

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

Mostly this is a recap of Flight Sim, introduction of some HIVE Flora objects, and the new 'sunrise/sunset' stuff.

[ 07-06-2021, 11:14 PM: Message edited by: samsyn ]

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

Posts: 11017 | 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.. traditionally I compute the ground contact point of a critter and then render the critter (in its current pose) at that position.

But this doesn't take into account the slope of the ground at the critter's location, and if the critter is four-legged (or more), there can be a real diff between elevation of front and back legs

which I was ignoring, so the critter was always sporting a flat horizontal backbone and one set of legs was floating and the other was partially buried in the ground. not that you can tall, but still.

I always assumed I would eventually pitch the model based on the normal vector of the dirt triangle it was standing upon, and then worry about sudden changes as it crossed from one triangle to another.

But instead of that, I now compute the elevation of both the critter 'root' and also of a point about 1 meter in front of the critter (in the direction of its current heading).

Then I use the difference in those altitudes to ge the angle of pitch so that both front and back legs look nice, and the back more or less follows the wlope of the land

(then it would be up to IK to keep the head/eyes level, and adjust wrists if carrying tools).

Eventually, they will be able to carry tools (attache things to skeleton nodes), but I think I will only take a single line segment from the skeleton (for example, from the elbow to the wrist) and then place the tool:

* connected to the wrist (or to some point along the line from elbow to wrist)

* pitched by tilt of that line

* but rolled to match 'pose' orientation (which should generally be 'up')

* the tool itself then specifies its IK (inverse kinematic) needs, such as 'eye line should follow gaze direction' and 'weapon should be able to nudge the animation to get appropriate look when aiming'

But mainly a lot of 'hold the head level, and make sure the eyes look alive, and that you can tell what they are looking at'

Even if they are just little cartoon eyes floating in front of an otherwise invisible head.

desirable attachments

* right and left hand tools
* eyes, ears and noses
* animated jaw/tongue
* feet and hands (one triangle each)

And then, someday, waves hands, a separate balloon like mesh can be stretched over the whole thing and multi-bone-weighted to the skeleton.

This doubles the related math I do per critter, and my first implementation does a lot of excess transcendental computations (sin/cos) which could easily be precomputed and cached.

But I like this technique better than I expected. The transitions feel very smooth, and very 'grounded' on the terrain.

---

I'm thinking I should rework my animation system a bit such that I can apply bits and pieces of poses from different frames. Like a run animation has N poses of one pass through a run cycle, But I can apply the limb animations separately. For example, the animation might alternater left/right, but maybe the reply might want to play right aand left at the same time, so play the left side of the animation 50% out of phase from it's normal position

I've been thinking of that as something I would have to do independently for each limb (arms and legs), but really, it's always in pursuit of walking/running/hopping/jumping/galloping.. different gaits from the same animation poses, I mean.

You just draw the thing, right step then left step then back to start so it loops. then playback maintains two position timers, one for left and one for right. Normally they are in sync so you see the left/right, but when you need a gait that has all feet hitting the ground around the same time, then a period of ballistic silence before all N feet hit the ground again. This allows you to run fast without having to play the alternating animation at 12x normal speed, which only looks OK if you are comically tiny.

ANYWAY, just limiting it to left/right at least makes it hurt my brain less. At worst, that's just double the math and storage. Plus its amenable to just setting a single 'phase offset' value (that varies with your running speed) and otherwise not thinking much about it.

for the tool stuff, I didn't really need to run it in a separate time space. My goal there is to let the animation do its thing, and then glue the tool to the hand wherever it is, but then IK the hand a little bit if the tool is active and knows its target.

So an NPC should be able to keep its eye on me and aim its sword right at my heart as I move around, at least during its walk/stand animations.

ideally, a critter that has been told I am its target, but not yet told to attack me, should be able to approach and get in a position relative to me, with a suitable heading, such that it is ready to use the tool when commanded, and have it get poked or sliced into me in a satisfying stick-figure manner, with properly timed sound effects (coming from the tool itself, plus an oof from the target).

Plus tools should be able to have mass, and 'weigh down' a pose, affecting the animation enough to be interesting or entertaining, but not irritating (design goal).

end of babble.

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

Posts: 11017 | 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 
on second thought... I think I *do* need to be able to apply any portion of a pose to its skeleton,

I mean, for a quadruped gait, I need to be able to pick the individual limb's phases.

the backbone is always running 'phase=0', but each of the limbs has a private phase offset so you can get anything from 'clop clop clop clop' to 'cloppity clop ....... cloppity clop'

hmm, why does that cloppity make me think of the 16 step sequencer loops. Might such a loop be used to both design a gait, but also to provide clop sound effects for it.

* change critters speed
* speed range determines which gait bucket you are in
* if you are still in the same gait bucket, then leave your 'gait loop' alone, and just play it faster or slower.
* if you change gait brackets, then pick the loop for the new gait and start obeying that

now, can I remember any gait names...

walk, cantor, gallop,

OK, google, make me feel like I know what I'm doing, with minimal investment of time or effort...

horses have five natural gaits: walk, trot, canter/lope, gallop, and back.

ooo, back, I was going to try to IK that.

WALK (evenly spaced 4 beat - the raw phase 0 animation)

RF LB LF RB (right_front, left_back..)


TROT ('2 beat' in paired diagonals)

RB LF .... LB RF .... repeat
or (lead?)
LB RF .... RB LF ....

imagine a synth 'loop' for each foot

code:
walk

RF x x
LB x x
LF x x
RB x x

trot

RB x x
LF x x
LB x x
RF x x

canter (right lead) (turning right)

LB x x
RB x x
LF x x
RF x x

Canter (left lead) (turning left)

LB x x
RB x x
LF x x
RF x x

Gallup (left lead)

RB x x
LB x x
RF x x
LF x x

Gallup (right lead)

RB x x
LB x x
RF x x
LF x x

Back (backing up)

RF x x
LB x x
RB x x
LF x x



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

Posts: 11017 | 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 
OK, things that are no longer vaporware:

* the critter you are piloting can bump into flora objects.

* the momentum of the critter/vehicle and the flora, (their masses and velocities) determing the power of the force of the collision (and which one 'wins') Both take damage, but the loser takes 8x the damage of the winner.

* flora objects have a hit point stash which is decremented as damages for collisions. StarMap will be able to configure this for each flora type

* flora objects have a life cycle state machine (null, idle, seedling, fruiting, wilting, lootable) and will move through that lifecycle on their own, whether you watch them do it or not.

* during the fruiting phase, the flora can repeatedly generate 'a fruit' in the form of a loot particle (a "fruit loot")

* after the wilting phase, the flora 'pops' (disappears) and leaves behind a shower of loot particles (defined by starmap) (actual loot is defined by a loot string in the starmap, but for an actual plant is likely to be 'wood' (while the fruit is something like 'an apple') But remember that while the system is the flora system, not every flora object is a plant.

Flora objects come in animal, vegetable, and mineral, but what makes them flora is that they are mostly stationary. (An example of an animal flor might be a flock of butterlies, that reset upon a nearby plant object until you get close, then take off and flutter around for awhile and finally return to their position, so they MOVE but they don't MOVE.

Same for small flocks of birds (I'm thinking 2 triangles each for flapping wings) that hang in nearby trees, but can do large flocking groups with neighboring small flocks (i.e. each flock has a key bird doing some lissajous pattern, and the other birds establish some sort of hierarchy and pick one other bird to follow, ultimately all following the leader (or a tier just below leader, maybe). I guess only the tiny flock leaders follow the main lissajou leader, the the tiny flocks follow their local leader. Something like that. Just flapping triangles in the sky, but sensitive to loud noises and nearby critters. But just triangle eye candy really. I don't anticipate any collisions with them, or resource collection... Though a magically refilling honey comb on a flora object swarmed by 'bees' might be interesting. And if a swarm could inflict damage...

Oh I know, I would just track the center of mass of the swarm, and its radius/density, and if you were ever inside that radius, when it was greater than such and such a density, then you would be receiving 'n bee stings per minute' (or whatever pain metaphore makes sense) until you leave that position.

Hmm, a creature that can hurt you (slowly), but you can't hurt it (you can only run away until it loses interest).

* the standard pew pew weapon (from grid space) now works in critter world as well, though I plan to add an ammunition selector for different kinds of projectile particles (bullets, lava, napalm, water, ice, etc) with different behaviours.

Right now, the default particle behaves a bit like lava, falling to the ground and then following the curves of the ground, applying damage to any flora objects it touches. So you have to 'bank shot' on uneven terrain. Plus you can stand and spin in a circle firing a spiral out from your position, damaging an entire forest. Very destructive

Still vaporware:

Loot particles don't exist yet, plus the way they fly into your inventory when you get close, plus a bunch of nuisance bugs have built up and I need to polish them off.

Plus I have to implement the EQUIP metaphor to bind an inventory item to your 'belt' for use in battle.

And again, I am thinking in terms of 'weapon launchers' and 'ammunition' (which I think I have never enjoyed in a real game, but I would have a default ammo that was unlimited, and specialty ammo you would craft in large batches. I think.

Different kinds of launches would be possible (sword, and bow, for example, but right now I have 'a hose', so the particles shoot forth 'as if from a hose' (explaining why they want to fall to the ground and follow the terrain downhill.

Oh, also still vaporware is that I want plant objects to continue their fruiting state (making one fruit loot at a time) so long as the terrain below them supports it (enough water and food and pleasant atmosphere), so that the results of terraforming make a difference.

But this means if I come to an area that I have previously blighted with my napalm hose, I can soak it with my ice hose and cause rebirth of dead trees into new seedlings (in the same locations)

mineral flora is stuff like "salt lick" and "ore deposit" and "sand" etc. I don't know how much life cycle it has, but fruit could be things like "crystals" or "nuggets" and wood loot might be something more like "metal" (something the crafting system might need a lot of)

It's all arbitrary though. The map designer comes up with the complete list of resources and craftable items and gives them names. Internally, I use a lot of "animal, vegetable, mineral" and "rock, paper, scissors" designations, which are then translated at the last second into the names chosen by the map designer. That's only half vaporware at the moment.

---
And my plan now is for "Pan" to start off (when you meet 'him' on this starmap) in his factory default configuration. So he is 'just your bag bot' and holds all your stuff for you (in some cool crystallized dataspace format), but he doesn't know anything about recipes or how to make things.

But then a quest will pop up now and then that requires you get an 'upgrade' for Pan (over the air transdimensionally) and as you upgrade him, he gets new skills (and, more importantly, provides a little tutorial, so you are gradually introduced to the mind numbing power of your Personal Autonomous Nano-Factor.

And, spoiler alert, eventually you're going to 'free' Pan and he will then be your Personal Emancipated Autonomous Nano-Factory, at which point he only obeys your commands because he likes you.

And perhaps it will be possible to make him your enemy (well, maybe that's another map).

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

Posts: 11017 | 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 
Here's a short (20 ish minutes) progress video showing the current state of 'loot' (yellow triangles)

https://youtu.be/6qxVwhGw1H0

Flora objects show a life meter when they take damage, and when it is out of hit points, they 'explode' into loot particles which then just sit there until you get close.

Then they collect themselves and go into inventory in anticipation of your assistant, Pan, crafting something useful out of them.

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

Posts: 11017 | 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 
ICON GRAPHICS

Well, it turns out there are artists to whom you can GIVE MONEY, and in return for which they, GIVE YOU SOME ART THEY MADE!

What a concept! Anyway, I just purchased a very reasonably priced package of 'icons' (various sizes, largest being 64x64 pixels) which I have now integrated into the inventory system, so when defining an item for your starmap, you can pick from one of these icons (a couple thousand of them, in fact). Mostly fantasy RPG stuff suitable for inventory images of swords, potions, gear, flowers, gems, metals, scrolls, books, etc. Very WoW-like (but guaranteed original and IP free (for me, since I paid for a guilt-free experience)).

ANYWAY, there is a new ItemTweak to select the icon id. It's a number like "3045" (which would be the 45th icon in the 3rd icon set... there are 6 defined icon sets with a few hundred icons in each. And while I purchased 2500 icons, I didn't make them all available. at least not yet.

to review them (and pick an iconId to assign to an inventory item), you:

* Open inventory panel (The "Pan" page)
* While looking at the detail of any item
* long-press its large icon image

This puts an icon selectino panel on top of the inventory screen. The inventory TABs now select one of the available icon sets.

Once you select a set, there is a little section showing how many pages of icons there are, and you have to tap the page number to cycle through them. Obviously I should support some amount of dragging, but I just wanted an easy way to browse and get the id number. Note: this shows you all available icons, not just icons already assigned to inventory items.

Once you see an icon you like, tap it, and it will close the window and take you back to the selected inventory detail page, but now it is sporting the new icon. That's just for fun right now as you have to type the icon id into your script for it to really be useful.

SOMEDAY, this easier process will do that for you automatically. maybe.

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

Posts: 11017 | 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 metronome may now be set by tapping on it at a regular interval. On the second tap, and each thereafter, it refines its guess as to the BPM you want.

Then you might wait a few seconds before tapping it again and it will go back to waiting for the first tap (and retain the existing BPM)

That's probably a misleading explanation. Just tap it (the METRONOME ITSELF) until it shows the BPM you want.

Any tap also synchronizes the sequencer to that beat.

[ 09-22-2021, 06:07 PM: Message edited by: samsyn ]

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

Posts: 11017 | 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 
For development purposes, and general fun mayhem, you may now experiment with 'tweak' values by using text chat

1.) open social text chat
2.) select the 'number' keyboard
(which now includes dot, comma, and equals)
3.) type a fwd slash, followed by a 'tweak string' (just like what you can do from the starmap script, but add a "/" at the front, like

/100=0,79

Which selects tweak #100 and sets it to the value 0, then sets the NEXT tweak (#101) to 79.

if you keep adding commas, it just moves to the next tweak in line. Add another = if you want to move directly to another tweak #, for example

/103=77, 243=7, 412=32.769, 99='Charley'

Actually, it probably doesn't work with String tweaks yet... or at least I haven't tried that.

Actual tweak ids will be documented as part of the 1.10 release.

-------
This only affects your copy of the world, so ultimately I will have to suppress some of this during multiplayer gameplay, as you could pretty easily edit your species definitions to give your copy of "Wild Pony" a huge number of hit points.

[ 10-14-2021, 01:50 AM: Message edited by: samsyn ]

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

Posts: 11017 | 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 very short youtube video showing the 'virtual ocean surface' stuff and a bit of sailboat stuff

https://youtu.be/OwOi2JK6Y28

--- from my youtube notes

This is a development video for v1.10 of the android game "synSpace: Drone Runners" (available in Google Play and for the Kindle Fire HD)

In this short video, we see another low poly experiment, using small visible triangles floating on the otherwise invisible ocean surface (which is actually a flat plane that the triangles oscillate above)

The height at any point in the ocean is set by that points distance from each wave emitter (5 in this example), with the sine wave from each emitter being delayed and decayed by distance to the triangle. Emitters have a wavelength and amplitude, and that's about it.

My goal is mainly that your boat (in a simulated sailboat race) has some motion (not enough to make you seasick, I hope). As a side benefit, the waves are 100% synced to current time, so any mobile device with a synchronized clock should show the exact same waves.

THE MATH

The 'waveHeightAtPosition(X,Y)' code is pretty straighforward, just the sum of contributions from each emitter. This costs me a square root for each distance measurement, but so far my attempts to cut out the square root have left me with an unsatisfying sense of motion.

I have pre-existing code which can 'nudge' a vehicle's local UP towards the UP of your choice. I use it to rotate a vehicle into matching the slope of the terrain. So all I needed to add was a real time surface normal for the spot of the ocean just below the boat's center of mass.

To get that, I just sampled wave heights at four points, a little to the front/back/left/right of the boat center of mass (in world coordinates) and then used them in pairs to make a (fwd - back) vector and a (right - left) vector. Then the cross product of those (with a little normalization here and there to keep things unit vectors) is my 'water normal'

By varying the sampling 'radius' I can pick different amounts of wobble, but since I use that normal to compute the full 'error' (how much I need to rotate to get in line), I only move 'a bit in that direction each frame' so it stays pretty smooth looking.

While I call this a sailboat simulator, the math there is still early days. For example, my 'boom' is glued permanently in line with the boat at the moment (and thus the boat is sailing itself, steering-wise, and it's not really SAILING since I am using a trolling motor for forward velocity.

But since this is based on the synSpace "aero" technology, you automatically get some lift computations, so my fixed sail is providing quite a bit of force at right angles to the boat (which also has no keel yet), so I end up turning to the right if I don't hold the rudder against it.

ANYWAY, as I was getting around to saying, my goal was that two boats floating next to each other would move relative to each other in a satisfying way, and while I don't show that in this video, it mostly does.

This also introduces 'textured aeros' (so you can now call out a material id and uv choice for each one, in which case I render a textured 'quad' instead of the 'skeleton' lines (the critter's are still all skeleton lines, and you can just make out the tiny red pilot on this boat -

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

Posts: 11017 | 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 
https://www.youtube.com/watch?v=IyAC8Hh0atI

I think that's a link to charley the unicorn - the final chapter. If you liked the originals (I did), I think you won't be disappointed.

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

Posts: 11017 | 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 spent some time plumbing a few tweak values, so the script really can change things. These tweak numbers are likely to change but:

110 - planet rotation period in real seconds

To set this manually (for fun)

- visit a planet
- open the text chat panel and type

/110=90 <snd>

No chat should actually get sent (slash has to be first character of line), but the day should now be 90 seconds long.

The NAV joystick has a small sun circle that orbits just inside the control. Straight up is noon, straight down is midnight. Left is sunrise at 6am, and right is sunset at 6pm.

All planets have 24 hours in their days, no matter how fast the day passes.

---

111 - set current hour of the day

Normally, time moves the same for all players, and all players are synchronized to a common clock. But if you set tweak 111 to the time you want, it will instantly snap to that time, for you. (other players will still see their own clock time)

I'm thinking this is mainly for cut-scenes where you might want the scene to take place at a particular time of day.

to set it to noon, for example

111=12

to set it to 3:30 pm

111=15.5

(because 1500 hours is 3pm, and .5 of an hour is 30 minutes)

----

112 set clock mode to one of several values

0 - reset the clock to 'common' synced time
1 - pause the clock whatever it is set to (sun holds still)
2 - resume from pause

----

113 sets the 'climate speed factor'

This sets an overall speed multiple for the climate simulation. Mainly it affects the day length, but that means the sun heats the land directly below it for a different amount of time per second, creating changes in the weather, etc.

But the actual day length is set by both the period and the climate speed. So, to get he climate to run 2x normal (for a given day length)

113=2

and again, these are all floating point values, so to run 375% of normal:

113=3.75

Mainly, I think, this was about having the clouds zoom around faster than you would see in normal reality. But fast clouds are interesting, and in development slow clouds mean slow testing ... anyway, now YOU can mess the values (if you have v1.10) too.

I promise to really document all of these at the appropriate moment. Will give me a chance to up my HTML chops. Maybe I will use something new fangled like a cascading style sheet :-) Or, at least DIV tags.

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

Posts: 11017 | 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 
SAILBOAT PHYSICS

When you are pil0ting a sailboat (wind powered vehicle), the 'sail info' control appears (where the angle of attack meter appears when piloting an aircraft)

This is roughly a 'clock dial' aligned with the nose of your boat always 'straight up' and a ring of compass points that rotate to show your current heading.

inside the clock are four 'hands'

BLUE is for 'true wind'

This is the wind relative to you. It is the sum of your vehicle velocity (relative to the ground) and the wind velocity (also relative to the ground). If you are traveling downwind, as you speed up, you eventually match wind speed, at which point your true wind drops to 0 (and you get no additional thrust from it)

WHITE is where the 'boom' (bottom line of sail) is pointed right now.

The boom will always be blown straight downwind, unless the SHEET LENGTH is set such that it is not possible. Once the sheet is binding the boom's motion, then the angle of attack (true wind versus 'plane of sail') can lead to lift that pulls the boat faster. And as the boat speeds up, the true air speed increases to something set by the speed of the boat and not the speed of the wind, so a virtuous cycle lets you go faster than the wind. When you are generating lift, this control also shows your angle of attack value.

The length of the SHEET is indicated by the pie slice at the bottom of the control, showing the allowed range of motion for the boom (wind can suddenly blow it across the pie slice). You adjust the pie slice (max boom angle) by tapping on this control. Tapping on the right side of center lengthens the sheet.

ORANGE is the sail thrust force,

both from 'lift' and also from 'simple bounce' when headed straight downwind. It is always at right angles to the boom.

RED is the portion of sail thrust which is in the forward direction of the boat.

This is the only bit that makes you actually move. The rest just blows you on your side a bit.

----

To the right of this control is the 'sail control' (replaces the airplane 'flaps' control), it has four settings, and starts 'at the bottom'

3 - hydrofoil extended
2 - sail at 100%
1 - sail at 50%
0 - sail at 0%

So, if you wanted to stop, you would lower you sail to 0% and that would remove all thrust fro mthe sail.

You can then run at either 50 or 100 percent sail (just changes the area of the sail in the math)

If you engage the hydrofoil, then any visible foil should deploy (with sound effect, but that's vaporware at this point).

If the foil is deployed AND you manage to get the boat above 20 knots (currently), then te boat will lift up out of the water (until only the foil is in the water). The boat magically balances on the foil (handled by the on board computer, so you don't have to worry about it). And while i the air, drag drops and yo got even faster. at least, that's the plan)

[ 12-06-2021, 01:34 AM: Message edited by: samsyn ]

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

Posts: 11017 | 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 ran into multiple problems when debugging this, and had to change my mind about which direction my normal was pointing on at least 4 occasions, resulting in a chain of math with despearate negations here and there trying to get the parity right. Finally, I realized that when the boom angle went negative, it flipped the normal 'one more time' and then it made sense, so I was able to get the four clock hands working as I wanted, and then wire the force to the actual motion and finally I could sail in all directions as expected.

I think the only remaining snafu is the sail itself, visually, is inflating oddly. But I know why, so I think I can havefull control of that. Basically I am rendering a portion of a sphere, but when the sail is barely deflected, I need a large radius to get flatter curvature, and under heavy thrust I need a shorter radius to make it appear 'full'

Once that radius is determined, then I need to place the spherical 'center' appropriated 'up wind' of the sail. Only not up-wind, up-thrust, which can be a different angle thanks to lift equations).

At which point the sail looks like a pretty good parachute, so I will definitely use that same code for that.

Maybe a parachute will be used for the first trip to the planet's surface (requiring you to craft something for your ultimate return to orbit)

[ 12-06-2021, 01:47 AM: Message edited by: samsyn ]

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

Posts: 11017 | 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'm liking the new terrain tiling. (TILE shader) as it provides something you can track surface motion against. I would like to have a perlin noise map for that, but this is similar, in a boxy, stripey sort of way.

I still need to make a real tile map instead of just using mars. I also might want to add a dignostic that just renders the last N 'uv triangles' I have used for terrain, and make sure they all look like similar triangles (with random sizes and rotations, centered on different spots of the tile image). The observed evidence is that some UV triangles collapse to zero width, and others stray off of the texture sheet. But it could be I am just seeing canvas.drawVertices() 'blend/dither' patterns, blown up to huge size.

the noise patterns I see now look vaguely like 'fields' and sometimes 'rivers' so I'm not in a hurry to fix any bugs, but I'd like to know for sure where the effect is coming from.

---

I figured out my issues with sail 'inflation'. I had a typo that was using an X value twice instead of one X and one Y (oops, dangers of copy and paste, and a cat distractor) Something like this

code:
float x = obj[ oObj + OBJ_POS+0];
float y = obj[ oObj + OBJ_POS+0]; // should be +1

I'm doing most of my storage these days in arrays of floats, with predefined constants for offsets into the array for various fields. Sort of a 'structure definition' but always really some portion of a float array.

So in the code above oObj would be the base offset of a particular object in the array. then OBJ_POS is an additional offset from the start of the object to the location of its position vector (four floats: XYZW) and then the +0, +1 pick up just the single X or Y value from the position.

If I need to 'serialize' the object, I just save the portion of the array of interest. I can load it back, and to a different array or array offset, since it's all relative to that oObj offset.

It's not completely 'safe' since I could easily (and do) mess up the offsets, and nothing prevents a called function from straying outside the ranges I expected to see (or modifying inappropriate elements).

But it's what I do, and it is what led to 'tweaks' and tweaks are now what my script API is all about.

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

Posts: 11017 | 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 
here's an overlarge screen shot of the new sailboat controls

http://www.synthetic-reality.com/drone/sailControls.png

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

Posts: 11017 | 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 
New video

https://youtu.be/Y8KafENuB6c

This tries to show the story of the new starmap. The introductory quests (basically tutorials on how the planet Utopia works and leading into the actual game to be played on it).

But it's a silent film, so I had to come up with 20 minutes of music for it. In this case I started with a portable keyboard playing its piano voice into the synSpace Vocoder which then looked for notes and recorded a 'groove' which I then played back through my speakers and recorded into my earbud mic.

Which didn't work, and after exploring all possible UPnP issues, I realized it was just a bad microphone, so I switched to a different headset and got past that, but the recording is noisy and quiet and required some processing.

Overall, however, if you had been there when I was playing it, you would agree that the post-vocoder version is better. The vocoder adds all sorts of extra notes that tend to have a more interesting rhythm than what I actually played.

Again, I am not a real musician.

[ 02-08-2022, 06:10 AM: Message edited by: samsyn ]

Posts: 11017 | 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 updated the TWEAK documentation up top. Hopefully new actual coding coming soon (eye issues continue)

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

Posts: 11017 | From: California | Registered: Dec 1998  |  IP: Logged
  This topic comprises 2 pages: 1  2   

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