Outerra forum

Anteworld - Outerra Game => Game & gameplay discussion => Topic started by: Occams Razer on February 04, 2020, 09:56:12 pm

Title: Anteworld Game Design Think Tank
Post by: Occams Razer on February 04, 2020, 09:56:12 pm
Outerra Anteworld promises to be big, both spatially and in scope. While the engine handles the former, the latter relies heavily on good game design. Not only will the game need to be programmed to handle all the systems in play, but they will also need to be balanced and paced properly to result in a coherent and satisfying product.

Now, we as the community can't develop Anteworld, but to gauge interest and generate discussion, I'd like to know what it is that the community hopes to see come about in specific. What kind of game do you want to see? What features do you want to see, and what don't you? Is online play something supplementary to the main game, is it coop-enabled, or is it an online-only title, รก la MMO RPGs? Is there an objective that the player is striving for, or is it a choose-your-own path kind of thing?

Some ground rules and disclaimers:

Now, for those who aren't familiar, the narrative premise of Anteworld is that human colonization of distant planets became possible in the distant future, but when colonizers return to Earth from a distant star system, humanity at large seems to have vanished. So there's your starting point.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on February 05, 2020, 04:16:26 am
Hi Occams Razer
It seems that 2020 will be an important year were more focus of modders and developers will be placed on the gaming side of outerra rather than ever more detailed graphical upgrading of the world rendering engine.
I come from flightsim and I like a lot the "choose your way" approach of simulators. Still there should be challenges you encounter and requires some kind of skill to accomplish what you have choosen to do.

I know the orignal idea of an outerra game was this Anteworld concept where you find a world empty of civilization...or maybe with only some remains of ancient civilization . That would be more interesting than a purely virgin planet..giving also a touch of history/story to the whole thing...and it could for instance suggest places where it is convienient to build new cities !

Then there was that idea that you could build your settlements, cities and that it would be all shared online by all players..like all were playing in the same world. I still I wonder if all this is realistically achievable. If it is it would be great. So just for the sake of discussing it , suppose it is.

Then it appears it would be like a planet-wide multiplayer city-skyline kind of game, where every player builds its detailed 3D model cities..that probably need some kind of "life" as well, at least in the form of some simulated economy. In that case the terrain and rivers/seas should have their importance in facilitating setting up a new town like it is for instance is in songs-of-the-eons (https://demiansky.itch.io/songs-of-the-eons) .

Then as players come into conflict wanting to occupy the same spot with their cities..there need be some "battle modus" (either military or economic or political or all of them together) to decide who will get the "rights" to build in a certain place. So it will need some "strategy game" programming as well. Trade should be also part of this to promote player collaboration. So the planet will also need resources modelling, with each place having specific resources or lacking them so that trade makes sense.

As the world is empty initially it will be peacefully watching how different towns pop up around the world. As more players join to build new cities at some point conflicts and/or cooperations may arise and we will be able to see which players or player teams get the upper hand..so nations of player teams may rise, occupying certain places, and combat will start.  That's how I could imagine this "Anteworld" concept.

Finally there should be possible a "voyager/explorer" modus for players that just want to travel around this world without having any intention to build their cities. Eventually these players can signal resources to other players and get bonuses for successful collaboration with other players so that they "can make a living" in a wild and hostile anteworld

All this seems very very ambitious ..and maybe not possible at all...but as we are here just to "dream" lets do it :)
Title: Re: Anteworld Game Design Think Tank
Post by: Occams Razer on February 06, 2020, 01:57:13 am
I'll admit on the online/single-player spectrum, all of my favorite formitive games of late have been single-player (STALKER and Subnautica in particular leap to mind), so I'm biased toward that conclusion. It generally requires fewer resources, the product can continue to be used after servers are taken offline, there's no need to perfect anti-cheat, and modding is much easier to support. I agree that online play is preferable, but for personal reasons I'd limit it to client-client connections with a dozen or so players, rather than client-server connections with ~2000.

To me, one of the bigger challenges for the game is defining the gameplay to best make use of the engine's features: your typical FPS doesn't need 100 square kilometers of play space, let alone a full-scale planet. But your typical RTS or city builder doesn't need centimeter-level detail and individual blades of grass. Even with aircraft, single-unit gameplay probably can't use a worthwhile portion of the space provided, and traveling from one region to another would take horrendous amounts of time without fast-travel or time skips.

My idea is that the player will, after establishing their initial home base around their randomly-positioned colonizer ship, discover a network of teleportation gates. These would allow the player to move to wildly different corners of the Earth without needing to travel there in realtime. As these gates can only facilitate transport of people and small vehicles, it's not always a perfect shortcut, but should allow the player to move to remote locales without taking away agency, or making the player too mobile early on.
Title: Re: Anteworld Game Design Think Tank
Post by: Jagerbomber on February 06, 2020, 02:06:50 am
Land vehicles is what I'm most keen on and I've never been one for using fast travel (unless maybe I can't stand the idea of doing a straight return trip in a game).  Hell... a bit a go I took some roadtrips in the dang tatra through a couple/few countries in the game (actually traveled to airports as well because they couldn't be reached by road from where I started each trip).  Still would like to see more of those buildings, though.  Sadly, evening sunlight still tanks my framerate and I suspect buildings will be bad.  :(  But I want them a lot.

Gonna really need GPS routes though.  I was using Google Maps on my mobile device as best as I could, lol.
Title: Re: Anteworld Game Design Think Tank
Post by: bomber on February 06, 2020, 04:20:21 pm
An interesting question Ocam,

I understand your focus on Anteworld (as a question) ......what's it gonna be...

But I never thought it was going to be anything, least of all a game... it's more bait to modders, to entice them onto the hook.

I'm an Online player of combat flight sims, WWII bomber crew experience being my thing.... I also have a slight hankering for tank and submarine crewing... the theme here is that I like having multiple people talking to each other on intercom in a single vehicle... A Friday night, a bottle of red wine and a good chat and experience as we all crew a B17 to Schweinfurt can't be beaten to my mind.. (it's not for everyone I know).

But Outerra mods have the ability to be something to everyone... the trick to my mind would be to link them up such that although separate mods catering to their own fanbase of players within a genre, there's a cause and effect link.

Lets just say that I'm not a great fan of the 'Total simulation' but instead a more focused approach that satisfies the player of that particular mod and doesn't leave them thinking 'well it's ok, but there's too much... this that and the other getting in the way'

Outerra does have a great future... I hope they revolutionise the online gaming industry by engaging 110% with moders..

that's my 1 pence anyway
Title: Re: Anteworld Game Design Think Tank
Post by: inactive on February 12, 2020, 07:49:30 pm
I honestly hope if Outerra's going to have multiplayer, that there's both singleplayer and multiplayer options. For multiplayer, it can be like Blockland, where a player can host their own server and password it or make it public. If possible, the mods that the player are using can be downloaded to some cache file also like Blockland, as opposed to making all of the people who join said server download all of the mods being used.

As for players themselves, I think the playermodel customization should be like a mix between Garry's Mod and Saints Row.
There can be 2 options:
1. The player can customize a character and change their clothes/look/hair/skin color/eyes/etc similar to in Roblox/Saints Row/GTA Online.
2. The player can import a model, similar to in VR Chat or Garry's Mod.
(https://1.bp.blogspot.com/-SkkVm2-w-O4/Vz7WNEs0KSI/AAAAAAABDvQ/Bavh5a4F6n4H6yYOYLzL-Uv2Rr3l5NvzACLcB/s640/Saints_Row_%2528X360%2529_02.jpg)


Another thing is placements of objects in the game. Yet again, like Blockland (and also Garrys Mod), object placements (and hopefully some day vehicles) can be saved to a file, and cleared, and loaded again at a later time by the player. (like if i wanted to make alternate versions of some city) A thumbnail can be displayed on the save file, and if possible, show the mods it uses and the bounds of the save on a map (pretty much a box around where all the objects on it are)
(https://i.imgur.com/H2vX9cE.png)

Next up, it'd also be nice to see weapons in the game. Guns, melee, etc. As well as tools, but i think these are obviously going to come anyway, so.

Last but not least, while likely not possible yet, it'd be cool to see AI in the game, and have animals in the forests, people and cars on streets, trains on rails going by at random, boats sailing up a river/ocean, etc.




Title: Re: Anteworld Game Design Think Tank
Post by: wibblywobblytime on February 24, 2020, 06:31:55 pm
It'd definitely be cool for city building. Like, I genuinely lose sleep thinking about how much I need this.

You wouldn't have the whole world accesible at the one time, but you could fly to a place in the world and 'choose' that region (like a big big square) and build your city there.

Something so many city builders lack, that only Simcity 4 really did to its max potential - region size. Not neccesarily map size, but the ability to really stack up towns and cities from different parts of a continent and have them all exist together, just as a visual thing. To know that more exists than just the tile you're working on.

With an Outerra based city builder, you could have your main city in some continent, fly up high in the air to see it from up there, then fly down to another valley many kilometres away to start building a satellite town. Then, the sheer joy of creating a winding highway to connect them, creating a train network to join up all your little towns and hamlets and satelite cities you've made.

So it's less about map size, (CitiesXL and Cities Skylines both had pretty big maps) and more about the *world* being there, being on earth, being on this continent, being in this region. Makes such a difference. No other game does it to it's biggest potential.

Outerra already has the ability to handle thousands of roads and buildings, so it's definitely capable of handling a city to an extent, and the road-building system is quite good.
Just watch this video Cameni posted and tell me it wouldn't be possible to take it a step further with much bigger selection of models, a few more road types, and connecting those buildings to a population :)
https://www.youtube.com/watch?v=TPmi_rdrt0g&feature=emb_logo (https://www.youtube.com/watch?v=TPmi_rdrt0g&feature=emb_logo)



 So it's definitely the most interesting long-term possible 'game' for me. I know so many people would appreciate and lust over. The idea that you could work on your region for many many years, slowly working your way over the continent to other places.

To deal with the challenge of rendering multiple cities, when you want to fly up to see them all, I thought of a solution. I'd say every half hour or so, the game takes low res aerial 'pictures' of each population center from 1k up, 5k up, 10k, 100k etc. And just stores them. So that when you fly up above the corresponding region and want to see all the city growth together, it can load in those aligned pictures underneath the atmosphere, without rendering a single little building.

This is SO possible. I know traffic logic and RDI is a pain in the ass to figure out in a realistic way, but that's barely the most important thing to me. I really just want to do what Outerra can already do, but with various road types, various house and building types, a few ways to draw parks (the way CitiesXL handles parks is great). Not to mention Outerra already offers zooming down to street level, walking around the beautiful natural world with bird sounds and wind. Imagine doing that but you're surrounded by neighborhood houses with laneways and parks, a suburban train line nearby.

The most immersive, grand-scale city builder of all time.
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on June 19, 2022, 11:53:01 pm
I like the ideas here. I think the technology exists or can be created to deliver more than one type of game in the world at the same time. Though in the game may be the wrong term. Layered on top of the world may be better.

I'm a would be game designer but world building is a pain. Having something like the Outerra engine as the world would work wonders.
I suspect game play should be served by external light servers holding a reference point in Anteworld and a catch mesh and all the build items relative to the reference point. Add a genre selection option so it finds all the builds matching your genre and play style and if multiplayer is allowed you see the other players. [A catch mesh is the unmodified ground mesh moved down 2 cm so if something does not load you don't fall though the world. My pet peeve in star citizen. ]

Items on your build are interactable, if set to be, but not movable or destroyable.

I like survival games. To do them we need a file to get the biome details, ground/ rock type, and decorations (buildings and road). Then a search function turns up pick able resources with tools expanding those resources. Spawning the resources on the terrain may stress the computer. Its an extra step that may not be needed. I have wanted to do a game where the player starts with nothing and survives but has an exotic range of environments to do it. Outerra has that world. It has 90% of the data.

However the end game for a survival game is generally a morph into a base building, ship building or social sim game. That results in clutter. No draw clutter is an option. Setting your builds to be visible only to friends and guild would work.

Those that like big varied combat could allow see all builds/ clutter. That makes the world more interesting for a fighter, bomber, tankers, etc. In this context clutter is cover. Or builds may be seen by genre. Note: battle damage may be a tag on a build that effects combatants but not the build. I.e. cover, concealment. reduced armor. reduces movement speed. This means people can battle though your decorative or survival build with out mattering to you if your off line.   
Having an autoclean up on craters, trench works, wrecked vehicles for non combat players would reduce conflict. That could be a log in setting that would make non combat players happy while "allowing" full use and abuse of their builds and battle space when they are off line. While your on lone I can see ways on battle shielding builds as neutral civilian/ UN locations. Your build becomes impassable and un targetable.   

Outerra sails to the edge of game engine limits with some terrain. Northern hemisphere trees do double duties as southern hemisphere trees eucalypts, acacias, etc. Adding trees, bushes, rocks, resources needs some magic, better compression or early load tests to see which biome folder is loaded. That's planned. One pass changes from zipped files. However that needs to be probably client/ game side not changes to the engine. 

I'm probably a little over ambitious. I'm not expecting anything fast. I know I'm commenting on an old topic.       
 

 
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on June 20, 2022, 02:38:49 am
I like the ideas here. I think the technology exists or can be created to deliver more than one type of game in the world at the same time. Though in the game may be the wrong term. Layered on top of the world may be better.

I'm a would be game designer but world building is a pain. Having something like the Outerra engine as the world would work wonders.
I suspect game play should be served by external light servers holding a reference point in Anteworld and a catch mesh and all the build items relative to the reference point. Add a genre selection option so it finds all the builds matching your genre and play style and if multiplayer is allowed you see the other players. [A catch mesh is the unmodified ground mesh moved down 2 cm so if something does not load you don't fall though the world. My pet peeve in star citizen. ]

Items on your build are interactable, if set to be, but not movable or destroyable.

I like survival games. To do them we need a file to get the biome details, ground/ rock type, and decorations (buildings and road). Then a search function turns up pick able resources with tools expanding those resources. Spawning the resources on the terrain may stress the computer. Its an extra step that may not be needed. I have wanted to do a game where the player starts with nothing and survives but has an exotic range of environments to do it. Outerra has that world. It has 90% of the data.

However the end game for a survival game is generally a morph into a base building, ship building or social sim game. That results in clutter. No draw clutter is an option. Setting your builds to be visible only to friends and guild would work.

Those that like big varied combat could allow see all builds/ clutter. That makes the world more interesting for a fighter, bomber, tankers, etc. In this context clutter is cover. Or builds may be seen by genre. Note: battle damage may be a tag on a build that effects combatants but not the build. I.e. cover, concealment. reduced armor. reduces movement speed. This means people can battle though your decorative or survival build with out mattering to you if your off line.   
Having an autoclean up on craters, trench works, wrecked vehicles for non combat players would reduce conflict. That could be a log in setting that would make non combat players happy while "allowing" full use and abuse of their builds and battle space when they are off line. While your on lone I can see ways on battle shielding builds as neutral civilian/ UN locations. Your build becomes impassable and un targetable.   

Outerra sails to the edge of game engine limits with some terrain. Northern hemisphere trees do double duties as southern hemisphere trees eucalypts, acacias, etc. Adding trees, bushes, rocks, resources needs some magic, better compression or early load tests to see which biome folder is loaded. That's planned. One pass changes from zipped files. However that needs to be probably client/ game side not changes to the engine. 

I'm probably a little over ambitious. I'm not expecting anything fast. I know I'm commenting on an old topic.     

amazing considerations...so glad to have you here...someone like you who has actually understanding of how games are constructed....I'm just a simple modder and have no idea how a game can be constructed....but this is something that I'm very interested in.  As a start I created a ultrasimple small game "snowball game" that you can find here in the forum ( https://forum.outerra.com/index.php?topic=5020.msg49763#msg49763) you can try it out and/or have a look at the code...maybe I /we can improve on it. I'm very much interested in constructing something more professionally ..still keeping it ultrasimple.
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on June 24, 2022, 01:47:45 am
I am not strictly a game dev. I have dyslexia so while I know what the codes doing; if you hand me a page of code my head explodes with in 5 minutes. It actually hurts to read!
I also see game designers making work for them in many case by by making changes to the game world then the changes could be to an empty in the game world. The over designed elevators in star citizen are a case.
Ideally a game in Anteworld should be a set of empties that you interact with so major changes to the engine are not happening around you.

There is no reason why a game can't be a chain of mods. That's how Minecraft developed.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on June 24, 2022, 04:16:38 am
I am not strictly a game dev. I have dyslexia so while I know what the codes doing; if you hand me a page of code my head explodes with in 5 minutes. It actually hurts to read!
I also see game designers making work for them in many case by by making changes to the game world then the changes could be to an empty in the game world. The over designed elevators in star citizen are a case.
Ideally a game in Anteworld should be a set of empties that you interact with so major changes to the engine are not happening around you.

There is no reason why a game can't be a chain of mods. That's how Minecraft developed.

I see. OK.  Mysterious concepts for me: " an empty"  what's that ?  "chain of mods" how to understand this ? here we're doing mods of vehicles, planes, boats but they are each separate from each other.  "chain"  = Trying to establish links between mods (what kind of links)  ?
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on June 25, 2022, 10:42:40 am
Ha Now I see the typos in my own post.  :facepalm:
An empty is an bounding box with out an object or texture. It can be interacted with in the game. It can be a bounding box that detects a player and triggers an event. Its in blender, unity and unreal but different games give them different names.
A chain of mods is something in minecraft modding where mods depend on each other. It allows more flexibility and more specialization. Smaller modding teams use it. It also makes debugging easier. I.e. In minecraft there is a farming mod Pan harvest craft that other people have built on. with a kitchen mod; cooking for block heads, bamboo mods that add recipes and crops. Etc.
In minecraft the ore bodies; pistons; bamboo; and sea life were all once mods. Mojag hired the best modders.
In Arma 3 there is a mod that adds hunting the rabbits, skinning them and cooking the meat, another survival mod where you can cook other things that are just decorations in the base game. In the base game the rabbits are just a distraction. One mod adds a random killer rabbit from Monty Python that can take out whole platoons.   
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on June 25, 2022, 12:29:08 pm
Ha Now I see the typos in my own post.  :facepalm:
An empty is an bounding box with out an object or texture. It can be interacted with in the game. It can be a bounding box that detects a player and triggers an event. Its in blender, unity and unreal but different games give them different names.
A chain of mods is something in minecraft modding where mods depend on each other. It allows more flexibility and more specialization. Smaller modding teams use it. It also makes debugging easier. I.e. In minecraft there is a farming mod Pan harvest craft that other people have built on. with a kitchen mod; cooking for block heads, bamboo mods that add recipes and crops. Etc.
In minecraft the ore bodies; pistons; bamboo; and sea life were all once mods. Mojag hired the best modders.
In Arma 3 there is a mod that adds hunting the rabbits, skinning them and cooking the meat, another survival mod where you can cook other things that are just decorations in the base game. In the base game the rabbits are just a distraction. One mod adds a random killer rabbit from Monty Python that can take out whole platoons.



Very interesting ! Thanks !

Here is an "empty" mod, that activates a trigger flag. Please try it out and let me know if this for you is a valid example of an "empty"

download from here:

https://drive.google.com/file/d/1NZgUpALWgsdjqRC_MKVP_GEo33VVZQ6G/view?usp=sharing

installation: click on self-installing empty.otx file

use: in outerra open scenery editor (F7 key) , under assets search for "empty", drag and place it in the scenery , in ufo mode move close to the "empty" cube
you should hear "tada !" sound and text on the screen. Activation occurs when at a distance < 2 m, for reactivation you need to move back by 1 m first


https://youtu.be/YrOer783ipc
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on June 27, 2022, 07:59:32 am
Yep fly77 you've got it but the box in games have too states and an additional property. One state toggles on visibility with it normally toggled off; on for builders; off for players. Secondly its generally detecting the player or vehicle but not collide. You can walk though it when it invisible. You still get the Tada. If you populate them procedurally then in visible mode they should not make a draw call if possible un less close or frame rates are really low or there in your forward arc of view. That way the game not tying to draw hundreds of things.

Then you can locally reference, spawn decorations, loot, animals, fish, etc. but with anything spawned have clean up line of code so it you leave the area time or distance it wipes the spawned stuff but not the empty. Other wise you will get a world full of junk and epic lag.

I finally got around to buying the full version. 
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on June 28, 2022, 07:53:40 am
Very interesting. Now I start to see what "empties" are used for.  Yeh I can make them collisionless.  Also I  can make them invisible for players, while remaining visible when placing them in the editor.  For now I won't attempt procedural placement of empties as I am not sure how to meaningfully select locations for them by some procedure. Unfortunately in outerra so far the API has no easy way to detect local terrain type. That would be useful since forest animals should only be spawned in forests (there are unfortunately exceptions  :))  ) , people mostly in cities, cows only on grassy terrain, etc.. What is easily possible now is to detect water. So maybe I could create fish in lakes ...except that I have no good animated fish mod ready now. Birds would be easier as we have at least one working "Free eagle" mod  by andfly...he also made a lot of other very beautiful bird mods but I think they never worked in single bird mode..also it seems the flocks are broken.
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on June 28, 2022, 10:49:14 am
Good. Detecting most terrain is long term. However when we drop bombs/ meteorites the holes  shape and size is dependent on the material. Differentiating road from dirt. I'll need to see that line of code. A non destructive version is a material detector but not fast.

Detecting water is very important for procedurally placed bridges etc. I've been diving into the water a lot around our causeway/ fords taking measurements.
If we can detect bridges on openstreetmap first then that would help.
If not a late bridge building pass might be an option though ideally it should be able to toggle off.
Doing it in world procedurally is slower. It may be fun to watch.
If we can detect the placement of a road at or just below water level with 1.5 m or more water either side (or road) then the location of a bridge segment could be chosen. Then others can be placed adjacent to the bridge if the water conditions each side is met. The bridge height could be inferred by the height of the first road tile with all adjacent tiles being dirt/ not water or bridge. Where the game places a causeway a meter or two above the water we could tag that and build a bridge too. It would turn some real world causeways into bridges though.

In all cases the road and raised causeway would need to be lowered to the average of the adjacent water river/ sea bed tile. I gather we have two basic bridges in the mods supply.

Two variations are possible:
Wharf, this is not a bridge because one road/ bridge tile has water tiles on all three sides with road/ bridge on the forth side. A wharf may have decorations on it to distinguish it from a bridge. One variant might be a boat ramp. The other a break wall.

Dam wall/ weir, Where water tiles are at different heights and the underwater ground/ river bed is also at two different heights. The dam wall would extend into the ground. Some decorative water flow at sluice gates. A variant would be water falls, paddy fields and farm dams. Water falls & Rapids may be possible if there is no road but the water slope is high enough. Is there a way to get the surface normal for a point? Levelling for a building placement and vehicle angle must be doing that.     

Two other variations would be possible with water and normal detection: more gently sloping beaches and sharp cliffs with overhangs. Some trees also will not grow on steep slope. 

There would be memory limits and graphics speed limits. We will need solutions there and that's being worked on I gather.

Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on June 28, 2022, 04:35:19 pm
Lots of useful info...I'll certain try to implement something..for now I tried to actually use the "empty" to spawn some insects (flies) (courtesy andfly ) . Collisionless empties are rendered invisible by pressing a ctrl+z ...flies mod is spawned when approaching an empty < 15m. flies are removed from scene at distance >16 m.

The result is really cool ! (sorry for the bad video quality ) I can already feel how with this tool we can really start to create a lot of fun stuff and slowly slowly some small games ...thanks so much for sharing your deep insight into game design here !


The next thing I'll experiment with is to explore what I can do with some other animal mods of andfly and with my cows. Its a long time I was looking for a way to spawn them globally...let's see if it works out.


https://youtu.be/wpKy4iwA9SY

(https://i.postimg.cc/7YDC7Wg5/screen-1656442102.jpg) (https://postimg.cc/Dmjy35ph)
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on June 29, 2022, 02:35:15 am
LOl deep insight. Don't let the real game designers hear they! They will lynch us both for being smart Aleks. It looks very good. Always check the frame rates. We need to keep them low and avoid heads exploding from over work in Slovakia. 
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on July 02, 2022, 05:10:49 pm
I was wondering how a procedural placement of "empties" would work.  In an immense space like outerra (the whole earth)
I suppose they would only be placed in some reasonable surrounding of the player, and this means for outerra that also "empties" should be spawned when needed and deleted when not needed.  In my understanding only in games with small maps ("game level" maps ?) they would be "permanent" allover the map. Right ?
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on July 04, 2022, 04:41:54 pm
Absolutely. but you could store and pass them to others if you had a reference latitude and longitude and a table listing an xy & z coordinate from that reference point, an orientation and a few other columns for traits.
One empty essentially triggers a group of others and allows you to build whole towns, puzzle mazes, etc, that can be placed and turned on and off and re set.

Thus we could have multiple client side but shareable games in the same big map. Removing them is essential otherwise we create a data problem for Cameni.
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on July 05, 2022, 09:15:26 pm
I just found your snow ball game and harvester.  :) These show existing engine capabilities. They are more advanced than one of Cameni statements implied.
We can do a survival game relatively easily. It would require Lots of modeling and a UI would be needed but I have bender, etc.
It would require: A UI ideally with 4 layers:
User info and world view. Day Z minimalism. health, hydration, food, comfort, held item, closest  item in interaction volume or 'what your looking at'.
Inventory and crafting. 4 by 10 grid for loot plus 5 crafting slots = three inputs, 1 out put, 1 byproduct. 3 buttons for other menu. [I already have a survival tech tree worked out.]
Character equipment and Stats/ skills screen.
Hints, setting, exit, and tutorial screen. All 4 screens would have a close button and buttons for the other three.
Would resources. Like the coins in snow ball you have bushes, logs, flowers, crop patches, rock & scrap piles. And cows, We have cows! Search these for resources.
With Tool equipped you can knock down small trees spawning a log. "Harvest" building for scrap. Bigger better tools = bigger tree, bigger log, bigger lootable piles. Resources yield a spent flag, a location tag/list to stop you looting the same place over and over.
Build structures including quarry, mine, etc. 
Build garage that spawns/ rebuilds vehicles for big harvest, bigger construction. 
Build entertainment, quarters, story and end game buildings. Re build civilization.

I already have a story arc and end game planned out that would fit in the world. Very few world changes needed.
It is called Abdicated. Humans have been uploaded to virtual worlds for ~1000+ years. Something has gone wrong. You have been sent to the real world to fix the hardware and start with nothing but a robe in a run down medical facility. Your information about the real world is somewhat out of date!
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on July 22, 2022, 03:37:41 pm
So finally I figured out how to procedurally spawn (and delete) worldwide  "empties" (cubes) which in turn procedurally spawn (and delete) each one his own scenery stuff (here a dino and 3 deers, just as a test) .
I still need to corrrect some bug to make the deleting part work reliably (so not to leave stuff behind)

https://www.youtube.com/watch?v=tUDKmEe7j2s
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on July 23, 2022, 10:32:05 am
Great work. Fun choice of animals. I may mention this at my creationist meeting on Tuesday.
Good clean up is the key. In some games spawn rate is tied to server load and player population. Though player population is not high in Outerra. I'll have to have a chat to you on voice we can cover stuff faster that way.
I have other things eating my time. After years trying to get my brothers to play Space Engineers with me they do and its a disaster. I never realized how cautious I was. They weren't. lol. I'll have to drag them into Outerra. What could possibly go wrong?
Title: Re: Anteworld Game Design Think Tank
Post by: aWac9 on July 23, 2022, 10:44:57 am

fly77. stop bringing bugs to outerra, you will make it impossible to fly the skies of outerra. :)

https://youtu.be/OeI4hIweLIo
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on July 23, 2022, 10:49:40 am
yes I need to fix the clean-up. "Cover things faster" ? Well actually as you see it takes a lot of time to get even simple things working in outerra without issues. Partly its because there is no "user manual" or ready made code examples for these things in outerra, and for sure its because I am not a professional programmer. Even the engine itself probably lacks some functionality ...and crashes are happening very easily....so I consider myself fortunate if I get anything working at all.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on July 23, 2022, 10:58:12 am

fly77. stop bringing bugs to outerra, you will make it impossible to fly the skies of outerra. :)


Just zip back in time 150 million years and problem will be solved. No planes , no problems !  =D
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on July 24, 2022, 09:12:13 am
getting slightly more serious with hierarchical procedural spawning: a nice idea  as a first test could be Farms with different animals, vehicles, crop, plants, buildings...randomly picked and arranged from a list of these items
and spawning them worldwide on flat terrain. ...creating variations from farm to farm...and possibly matching to local fauna/flora/building/equipment styles...lots of challenges to be dealt with to get it done...certainly a good excersize of "many things procedural" !  ^-^

https://youtu.be/fdzdNBAnzoU
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on July 25, 2022, 02:33:36 am
By Jove I think he's got it. Good stuff. You need random rotations and they need to be indexed off latitude and longitude with the first two digits removed so people in multiplayer see the same animals, positions and facings.
I am not sure if a tractor counts as an animal?
How is the band width and load speed?
I'm thinking about understory plants. We can't swamp the world with vegetation. So we need to localize it and clean it up as someone moves on. Also if we can spawn it and de spawn it we can make it 'lootable' or harvestable.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on July 25, 2022, 03:03:52 am
By Jove I think he's got it. Good stuff. You need random rotations and they need to be indexed off latitude and longitude with the first two digits removed so people in multiplayer see the same animals, positions and facings.
I am not sure if a tractor counts as an animal?
How is the band width and load speed?
I'm thinking about understory plants. We can't swamp the world with vegetation. So we need to localize it and clean it up as someone moves on. Also if we can spawn it and de spawn it we can make it 'lootable' or harvestable.

yes need random rotations and also offsets.... and yes they're already indexed by lat lon. Unfortunately there won't be multiplayer for the next few years so there's no need to think about how to share those things among players. ..lootable/harvestable is certainly interesting....but for now I just need to get something basic done which works and which I can share as a mod ...still having problems with cleanup...load speed is good
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on July 26, 2022, 03:30:49 am
The first rule of multiplayer is plan for it early and in every change. Otherwise you have to rewrite all the code from scratch to make it work. So that's why I always consider it.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on July 26, 2022, 03:56:02 am
The first rule of multiplayer is plan for it early and in every change. Otherwise you have to rewrite all the code from scratch to make it work. So that's why I always consider it.
OK...I'll take it into account.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 02, 2022, 02:58:30 pm
"green transition" becoming reality in outerra (experimenting with procedural corn)   :D

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

tecnical note : corn-spawning empties (spawning each 15 corn plants randomly) are created around the camera: each time the camera passes again near the same spot the corn-spawners are created again and corn is spawned randomly again so resulting in different positions each time
...good ? bad ? doesn't matter ? idk
In case I'd need to store the positions the first time they're generated, saving them in a file and then figure out how to recover them for each of the corn spawning empties when needed

Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on August 04, 2022, 04:13:11 am
No you don't need to save to a file to get them in the same places. Each spawn pattern needs to seem random but without being random. That is how minecraft does huge map saves with tiny files sizes. Nothing is really random.
Take the absolute value of (latitude + longitude + altitude)/3 ignoring the degrees and using only the minutes and seconds. Put the empties on a grid so they are uniform. Because the lat, lon, and alt of the empty is known but differs you can split that number into values that are the pseudorandom location for each corn stalk.
https://en.wikipedia.org/wiki/Pseudorandomness
Thus two players see the corn in the same place and the corn does not move/change as the player moves and comes back. To add more randomness create a short list if corn clusters, other vegetation and use the same pseudorandom call to pick one from the list. This will repeat every few hundred miles, a degree at the equator is ~111 km
this is why I've been asking about random numbers from location.
This is how many big open worlds do multiplayer.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 04, 2022, 04:18:01 am
No you don't need to save to a file to get them in the same places. Each spawn pattern needs to seem random but without being random. That is how minecraft does huge map saves with tiny files sizes. Nothing is really random.
Take the absolute value of (latitude + longitude + altitude)/3 ignoring the degrees and using only the minutes and seconds. Put the empties on a grid so they are uniform. Because the lat, lon, and alt of the empty is known but differs you can split that number into values that are the pseudorandom location for each corn stalk.
https://en.wikipedia.org/wiki/Pseudorandomness
Thus two players see the corn in the same place and the corn does not move/change as the payer moves and comes back. To add more randomness create a short list if corn clusters, other vegetation and use the same pseudorandom call to pick one from the list. This will repeat every few hundred miles, a degree at the equator is ~111 km
this is why I've been asking about random numbers from location.
This is how many big open worlds do multiplayer.

Thanks ..yes I need to use pseudorandom numbers...will do it !
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on August 04, 2022, 04:29:43 am
Notches original pseudorandom code is why he's a billionaire and I'm not. It's in a hundred games.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 04, 2022, 03:30:31 pm
yep it works !

going back and forth to the same area multiple times leaves everything the same !

Wonderful "invention" these pseudorandom numbers ! :))


Find the differences !

(https://i.postimg.cc/FFkV434v/Find-The-DIfferences.jpg) (https://postimg.cc/BtsK58b7)
Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on August 05, 2022, 07:01:18 pm
Its a powerful tool. I'd be dangerous if I could read and write code as fast as you. I would still love to see the code. Where can you post it?
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 05, 2022, 11:01:45 pm
Its a powerful tool. I'd be dangerous if I could read and write code as fast as you. I would still love to see the code. Where can you post it?

I'd like to fix some gross error before posting it. Il'll post it here.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 06, 2022, 12:33:00 am
OK first bug fix: spawn the empties allways oriented in same way , besides with same positions

(https://i.postimg.cc/tCRKzWmh/North.jpg) (https://postimg.cc/PNcVXpHx)
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 06, 2022, 12:48:30 am
so how does it work ?
a top level empty (empty3) spawns lower level empties (empty2) all north oriented on a 3x3 lat-lon mesh around the camera , but not on all meshpoints. On which meshpoints to spawn empty2 is controlled by pseudorandom number computed by function mulberry32. Each meshpoint is assigned a different pseudorandom number and empty2 is spawned if the number exceeds a threshold.
empty2 are only spawned within a certain range about the camera..and a list of the spawned objects is stored in an array this.spawnedObject=[]. 
An id is assigned to each empty2 object spawned computed from lat lon (100000*Math.round(100000*this.meshLat[i+3][k+3])+Math.round(100000*this.meshLon[i+3][k+3]))
To do the cleanup of empty2 which get out of camera range a scan is done on a 6x6 grid of meshpoints around the camera and any empty2 that exists in the list of created objects beyond the camera range is called - via my plugin and passing the apropriate id - that it should
do the cleanup of its stuff (plants, deers, etc.) and then delete itself. Its assumed that empty2 does what it needs to do  and so the list of spawned empty2 objects is updated.
Note the cleanup still does not work correctly ..it still leaves many empty2 behind..I don't know why.

Code: [Select]

function mulberry32(a) {  // generate pseudorandom number from  seed a
   // return function() {
      var t = a += 0x6D2B79F5;
      t = Math.imul(t ^ t >>> 15, t | 1);
      t ^= t + Math.imul(t ^ t >>> 7, t | 61);
      return ((t ^ t >>> 14) >>> 0) / 4294967296;
   // }
}

...other functions used in the code (not reported here)

function init_chassis(param)
{
 
   
  $igc = this.$query_interface("ot::js::igc.get"); 
 
  $world = this.$query_interface("ot::js::world.get");
 
  screen_size = $world.screen_size();

  $plugin = this.$query_interface('xt::js::fly77_plugin.get');

 

}



function init_vehicle()
{
 
   
  this.geomob = this.get_geomob(0);
 
  this.cnv=this.$query_interface("ot::js::canvas.create",true);
 
  $world = this.$query_interface("ot::js::world.get");

  fnt=this.cnv.load_font("ui/courier_new_18_bold.fnt");   
 
 
 
  this.ecef = this.geomob.get_pos();
 
  this.norm = gravity_normal(this.ecef);
 
  this.rot = this.geomob.get_rot();
 
  this.north = localnorth(this.ecef);
 
   this.west = localwest(this.ecef);
   
   
    // retrieve camera heading ..needed to get north oriented rotation for spawning empty2 north oriented
   
    this.camera_rot = this.rot;   
   
    var unitquat = {x:0,y:1,z:0,w:0};  // y is model forward durection 

    this.cam_direc =   Quatmult(this.camera_rot,Quatmult(unitquat,QuatConjug(this.camera_rot)));
   
   
    this.cam_heading = Math.acos( this.cam_direc.x*this.north.x +   this.cam_direc.y*this.north.y +  this.cam_direc.z*this.north.z)*180.0/PI;
 
   if ( this.cam_direc.x * this.west.x +  this.cam_direc.y * this.west.y +   this.cam_direc.z * this.west.z >  0.00001){
 
      this.cam_heading =   360.0 - this.cam_heading;
   }
   

   // get north rotation quaternion for spawning empty2 north oriented
   
   var Q = toQuatRot( this.cam_heading/180*PI, {x:0,y:0,z:1});  // rotation about model z axis   by angle   -heading   
   
         
   this.rotNorth =  Quatmult(this.rot,Q);   
 
 

 
  this.ecef_cam = $igc.pos(); 
  this.camLat = ecef2lat(this.ecef_cam);
  this.camLon = ecef2lon(this.ecef_cam); 
  this.camLat5 = Math.round(this.camLat*E5)/E5;
  this.camLon5 = Math.round(this.camLon*E5)/E5;
 
  // setup  spawnpoints mesh
  this.meshLat = [];
  this.meshLon = [];
  this.meshEcef = [];
  this.meshEcefDist = [];
    for (var i=-3; i<3; i++){
this.meshLat[i+3] = [];
this.meshLon[i+3] = [];
    this.meshEcef[i+3] = [];
this.meshEcefDist[i+3] = [];
for (var k = -3; k<3; k++){
this.meshLat[i+3][k+3] = 0;
this.meshLon[i+3][k+3] = 0;
this.meshEcef[i+3][k+3] = 0;
this.meshEcefDist[i+3][k+3] = 0;
}
  }
    for (var i=-3; i<3; i++){
  for (var k = -3; k<3; k++){
  this.meshLat[i+3][k+3]= this.camLat5 + i/E5;  
  this.meshLon[i+3][k+3]= this.camLon5 + k/E5;
          this.meshEcef[i+3][k+3]= latlon2ecef(this.meshLat[i+3][k+3],this.meshLon[i+3][k+3]);
  this.elev = $world.elevation_above_terrain_layers(this.meshEcef[i+3][k+3],1000).x;
  this.meshEcef[i+3][k+3]  = { x:  this.meshEcef[i+3][k+3].x -this.elev*this.norm.x, y:  this.meshEcef[i+3][k+3].y -this.elev*this.norm.y,  z:  this.meshEcef[i+3][k+3].z -this.elev*this.norm.z};
  this.meshEcefDist[i+3][k+3]= Math.sqrt(  (this.meshEcef[i+3][k+3].x-this.ecef_cam.x)*(this.meshEcef[i+3][k+3].x-this.ecef_cam.x) + 
   (this.meshEcef[i+3][k+3].y-this.ecef_cam.y)*(this.meshEcef[i+3][k+3].y-this.ecef_cam.y) +
   (this.meshEcef[i+3][k+3].z-this.ecef_cam.z)*(this.meshEcef[i+3][k+3].z-this.ecef_cam.z)   );

  }  
  }
 
 
  // setup secon (wider) spawnpoints mesh (for cleanup procedure)
 

  this.meshLat2 = [];
  this.meshLon2 = [];
  this.meshEcef2 = [];
  this.meshEcefDist2 = [];
    for (var i=-6; i<6; i++){
this.meshLat2[i+6] = [];
this.meshLon2[i+6] = [];
    this.meshEcef2[i+6] = [];
this.meshEcefDist2[i+6] = [];
for (var k = -6; k<6; k++){
this.meshLat2[i+6][k+6] = 0;
this.meshLon2[i+6][k+6] = 0;
this.meshEcef2[i+6][k+6] = 0;
this.meshEcefDist2[i+6][k+6] = 0;
}
  }
    for (var i=-6; i<6; i++){
  for (var k = -6; k<6; k++){
  this.meshLat2[i+6][k+6]= this.camLat5 + i/E5;  
  this.meshLon2[i+6][k+6]= this.camLon5 + k/E5;
          this.meshEcef2[i+6][k+6]= latlon2ecef(this.meshLat2[i+6][k+6],this.meshLon2[i+6][k+6]);  
  this.elev = $world.elevation_above_terrain_layers(this.meshEcef2[i+6][k+6],10000).x;
  this.meshEcef2[i+6][k+6]  = { x:  this.meshEcef2[i+6][k+6].x -this.elev*this.norm.x, y:  this.meshEcef2[i+6][k+6].y -this.elev*this.norm.y,  z:  this.meshEcef2[i+6][k+6].z -this.elev*this.norm.z};
  this.meshEcefDist2[i+6][k+6]= Math.sqrt(  (this.meshEcef2[i+6][k+6].x-this.ecef_cam.x)*(this.meshEcef2[i+6][k+6].x-this.ecef_cam.x) + 
   (this.meshEcef2[i+6][k+6].y-this.ecef_cam.y)*(this.meshEcef2[i+6][k+6].y-this.ecef_cam.y) +
   (this.meshEcef2[i+6][k+6].z-this.ecef_cam.z)*(this.meshEcef2[i+6][k+6].z-this.ecef_cam.z)   );

  }  
  }
 
 

 

// spawned object variables

  this.spawnedMax=0;
  this.spawnedObject = [];
  this.spawnedObjectId = [];
  this.spawnedObjectCreated = [];
 
 

 

 
}



function update_frame(dt)
{
 
 
 

for (var m=0; m< this.spawnedMax; m++){
scaledtext( this.cnv, this.spawnedObjectId[m],1, {x: 1900 , y:300+m*20},   {x:255, y:0, z:0, w:255});
}



       // update mesh of "fixed" spawnpoints around camera and figure out if objects need to be spawned for those which are within a range around the camera

  this.ecef_cam = $igc.pos(); 
  this.camLat = ecef2lat(this.ecef_cam);
  this.camLon = ecef2lon(this.ecef_cam); 
  this.camLat5 = Math.round(this.camLat*E5)/E5;
  this.camLon5 = Math.round(this.camLon*E5)/E5;
 



  for (var i=-3; i<3; i++){
  for (var k = -3; k<3; k++){
 
  this.meshLat[i+3][k+3]= Math.round(this.camLat5*E5 + i)/E5 ;  
  this.meshLon[i+3][k+3]= Math.round(this.camLon5*E5 + k)/E5;
  this.meshEcef[i+3][k+3]= latlon2ecef(this.meshLat[i+3][k+3],this.meshLon[i+3][k+3]);  
  this.elev = $world.elevation_above_terrain_layers(this.meshEcef[i+3][k+3],1000).x;
  this.meshEcef[i+3][k+3]  = { x:  this.meshEcef[i+3][k+3].x -this.elev*this.norm.x, y:  this.meshEcef[i+3][k+3].y -this.elev*this.norm.y,  z:  this.meshEcef[i+3][k+3].z -this.elev*this.norm.z};



  this.meshEcefDist[i+3][k+3]= Math.sqrt(  (this.meshEcef[i+3][k+3].x-this.ecef_cam.x)*(this.meshEcef[i+3][k+3].x-this.ecef_cam.x) + 
   (this.meshEcef[i+3][k+3].y-this.ecef_cam.y)*(this.meshEcef[i+3][k+3].y-this.ecef_cam.y) +
                                           (this.meshEcef[i+3][k+3].z-this.ecef_cam.z)*(this.meshEcef[i+3][k+3].z-this.ecef_cam.z)   );    


this.id =   (100000*Math.round(100000*this.meshLat[i+3][k+3])+Math.round(100000*this.meshLon[i+3][k+3])) ; // % 4294967295  ;


              // to avoid creating an object twice ..if its id has already been associated with a created object mark it as already created
  this.ObjectFoundAtMeshPoint=false;
  this.foundIndex=0;
  for (var j=0; j<this.spawnedMax;j++){
if(this.id==this.spawnedObjectId[j] ) {this.ObjectFoundAtMeshPoint = true; this.foundIndex=j; break;};
  }
 



  if (this.meshEcefDist[i+3][k+3] < factor*radius/E5 && !this.ObjectFoundAtMeshPoint && mulberry32((i+3)+10*(k+3)) <0.15 ) {   // if meshpoint is within range and  was not previously created at that meshpoint ..create it

this.spawn_pos =  { x:this.meshEcef[i+3][k+3].x + (1)*this.norm.x , y:this.meshEcef[i+3][k+3].y + (1)*this.norm.y, z:this.meshEcef[i+3][k+3].z + (0)*this.norm.z }  ;

this.spawnedObject[this.spawnedMax]= $world.create_instance(name,  this.spawn_pos  ,  this.rotNorth , false);
this.spawnedObjectId[this.spawnedMax]= (100000*Math.round(100000*this.meshLat[i+3][k+3])+Math.round(100000*this.meshLon[i+3][k+3])) ; //  % 4294967295  ;
                           
this.spawnedObject[this.spawnedMax].set_editor_id((100000*Math.round(100000*this.meshLat[i+3][k+3])+Math.round(100000*this.meshLon[i+3][k+3])) );  
 
this.spawnedMax++;



}

  }
 
  }






      // scan the meshoints around the camera and do a "remove-yourself" call on any objects  who are out of range




  for (var i=-6; i<6; i++){
  for (var k = -6; k<6; k++){

          this.meshLat2[i+6][k+6]= Math.round(this.camLat5*E5 + i)/E5 ;  
  this.meshLon2[i+6][k+6]= Math.round(this.camLon5*E5 + k)/E5;
  this.meshEcef2[i+6][k+6]= latlon2ecef(this.meshLat2[i+6][k+6],this.meshLon2[i+6][k+6]);  
  this.elev = $world.elevation_above_terrain_layers(this.meshEcef2[i+6][k+6],1000).x;
  this.meshEcef2[i+6][k+6]  = { x:  this.meshEcef2[i+6][k+6].x -this.elev*this.norm.x, y:  this.meshEcef2[i+6][k+6].y -this.elev*this.norm.y,  z:  this.meshEcef2[i+6][k+6].z -this.elev*this.norm.z};


  this.meshEcefDist2[i+6][k+6]= Math.sqrt(  (this.meshEcef2[i+6][k+6].x-this.ecef_cam.x)*(this.meshEcef2[i+6][k+6].x-this.ecef_cam.x) + 
   (this.meshEcef2[i+6][k+6].y-this.ecef_cam.y)*(this.meshEcef2[i+6][k+6].y-this.ecef_cam.y) +
                                           (this.meshEcef2[i+6][k+6].z-this.ecef_cam.z)*(this.meshEcef2[i+6][k+6].z-this.ecef_cam.z)   );

this.id =   (100000*Math.round(100000*this.meshLat2[i+6][k+6])+Math.round(100000*this.meshLon2[i+6][k+6])) ; // % 4294967295  ;


              // signal for removal only those object if its found on the list of spawned objects
  this.ObjectFoundAtMeshPoint=false;
  this.foundIndex=0;
  for (var j=0; j<this.spawnedMax;j++){
if(this.id==this.spawnedObjectId[j] ) {this.ObjectFoundAtMeshPoint = true; this.foundIndex=j; break;};
  }
     


               
if (this.meshEcefDist2[i+6][k+6] >= factor*radius/E5 && this.ObjectFoundAtMeshPoint ){

$plugin.my_set_id( 0, (100000*Math.round(100000*this.meshLat2[i+6][k+6])+Math.round(100000*this.meshLon2[i+6][k+6]))  ) ; //do a "remove yourself" call


if (this.spawnedMax>=1){
for (var q=this.foundIndex; q<this.spawnedMax-1; q++){
this.spawnedObject[q]= this.spawnedObject[q+1];
this.spawnedObjectId[q]=  this.spawnedObjectId[q+1];
}
}
this.spawnedObjectId[this.spawnedMax]=null;
this.spawnedMax--;



}

}
  }


 

}

Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 06, 2022, 06:03:18 am
I found a much better way to do the cleanup :
instead of doing the camera distance check only in empty3 I do it also in empty2 and if empty2 recognizes that its distance from the camera is greater than some range it does what it needs to do and finally deletes itself.
In this way there is no need for any calls from empty3 to empty2 (which seem do not behave well with the asyncronous creation/deletion events). So now Empty2 is fully autonomous. I don't know why I didn't think of it earlier.
Indeed it works like a charm !
Camera distance check in empty3 still serves to update the list of created objects which needs to be known by empty3 in order to not recreate objects which are still in the scene.

So now its time to introduce a lot more variety, randomness and some constraints on where to place stuff:
first one : random  plant size and object rotations

(https://i.postimg.cc/76hkZ781/screen-1659785034.jpg) (https://postimg.cc/2qsJH153)

Title: Re: Anteworld Game Design Think Tank
Post by: wesleyibruce on August 06, 2022, 09:03:45 am
I make one suggestion and he makes a whole new world of possibilities.  :o
Your left over empties may be a variant of the north west problem in minecraft. Because it checks in a particular order it can miss something. Running two passes works and doing another check cycle with a starting point +1x & +1y (assuming z is vertical.) May pick them up.
Height may matter too if the empty is in a dip its refence point may be out of the checked plane, volume. 

It would be really nice if we could use this to fix the tree number & type limits. So I can get my southern hemisphere trees.  =D
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 06, 2022, 09:20:36 am
I make one suggestion and he makes a whole new world of possibilities.  :o
..
It would be really nice if we could use this to fix the tree number & type limits. So I can get my southern hemisphere trees.  =D

HaHa ..well its addicting !
yes, if you have some 3D tree models we can procedurally spawn them....but I can't suppress default outerra trees....also they need to have several LODs, optimized for low impact at great vewing distances ....as procedural trees will not be spawned in small numbers locally (see my corn in egypt...the corn LODs are optimized and there is a limit on how many can be in view within some hundred meters)
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 07, 2022, 12:48:30 pm
Next step I like to explore is to make the objects spawned by empties "pickable" . So if an object has been picked I will make it invisible.. But I also will need to store the list of visible objects for each empty permanently somewhere....I suppose a file...is that what you call "Traits" ?
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 09, 2022, 05:48:31 am
Andfly ! Please help !  Those flowers are "too strong"  :))

(https://i.postimg.cc/qv8kYDF6/screen-1660038358.jpg) (https://postimg.cc/3kx501Y3)
Title: Re: Anteworld Game Design Think Tank
Post by: andfly on August 09, 2022, 07:11:05 am
Ahhh ...    :o
I planted them, fertilized, watered and cared for them with love ...
They should be able to defend themselves from "those" who roam with thundering off-road vehicles, with music "at full volume", in a magnificent, still unspoiled world  !!!

But progress must continue and flowers too, by natural process, wither and die.
I have already sent you the blender files for the processing of the LODs and the softening of the objects.

I take this opportunity to compliment the magnificent work you are doing.
I imagine that, soon, we will be able to have an environment full of new animated plants and animals.

I can't wait !!!    ;)
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 09, 2022, 07:21:20 am
oooh ! Wonderful ! Yes your flowers are so nice and while some of them might be rolled over by guys like me, they will obtain a much wider habitat ..and prosper by themselfs.
I'll see if I can describe how to do the LOD optimization in blender. Thanks for now and I will keep you all updated about this procedural "environment addon".
For now I don't dare adding animations..as it seems to lead to crashes..but that would certainly add so much of immersion.
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 09, 2022, 08:28:16 am
Now we're talking !  =D =D

(https://i.postimg.cc/LsPHd98T/screen-1660047996.jpg) (https://postimg.cc/Z9Tkph3B)
Title: Re: Anteworld Game Design Think Tank
Post by: fly77 on August 09, 2022, 09:02:41 am
...and YES ! gardening becomes possible !  :)

(https://i.postimg.cc/L5DPzBdn/screen-1660050087.jpg) (https://postimg.cc/hQJhnmtB)
Title: Re: Anteworld Game Design Think Tank
Post by: andfly on August 09, 2022, 09:50:27 am
I am really impressed with the speed with which you produce "things" !!

 :D  :D  :D