Return to “Dev Logs”

Post

Re: [Josh] Friday, July 13, 2018

#16
First, to your point, Hyperion. You may be right that even if the basic nodes-and-vertices of wormholes connecting every star system go away in a continuous-space design, you still need to have some kind of "shortcut" feature between clusters. Even so, continuous space still offers some advantage over having to generate magical Lines In Space.

0111narwhalz wrote:
Sun Jul 15, 2018 8:42 pm
It's also difficult to credibly "blockade" space, in no small part because you have to block an entire extra degree of freedom. How do you protect the borders of your empire from incursion? Patrol routes would have to cover an entire surface of obscene area, since your empire presumably extends over multiple star systems, and they would have to cover it densely enough to repel invaders from any part of the surface. Otherwise every system in your empire would be a frontier system, and it would have no "heart" of safe systems. Graph-based space resolves problems like this by reducing the area you need to patrol to just the link endpoints, and only those on the topological border of your empire.

I anticipated this objection. ;)

Note that it's actually not necessary to defend an entire volume of space around multiple star systems. You could never build that many ships, but you don't need to -- empty space is empty space. At the level of multiple star systems, defense must be strategic: you want a fleet doctrine that's capable of deterring advances against your most strategic resource locations. Those are the high-population colonies and rich-resource zones located relatively very close to individual stars, not way out in the boondocks between stars.

The basic multi-system defense doctrine, then, depends on three keys: building enough good ships, mobility, and intel.

Building lots of ships is a necessity no matter what. You have to do that regardless of whether space is continuous or systems are connected by wormholes. Mobility is also necessary regardless of how space is structured -- ships need good, fast engines in order to travel quickly to hotspots.

So, since everybody has to build mobile ships for defense anyway, the real question is knowing when you're about to be attacked and the intensity of that danger. That's addressed by intel: knowing the location, number, and (if possible) composition of potentially hostile fleets.

Making long-range sensors strong in LT addresses this need. For example, we could say that ships -- unless they spend prodigiously on cloaking research and low-visibility construction -- give off a lot of radiation, and good sensors (which will cost a lot less than an invasion fleet) are good enough to see that radiation from a long way away.

If they've built enough ships and can move them quickly to threatened resource locations, designing LT so that long-range sensors are effective is what enables factions to capably defend themselves in a continuous universe.

(Note: an interesting alternative to this might be to say that long-range sensors are actually not all that good -- if you want to know whether your neighbor is building a fleet to attack you, then you need to build cloaked scout ships to try to locate and spy on your neighbor's fleet construction facilities. But of course they'll be looking for cloaked spy ships....)



I don't want to sound blithe in my comments. I'm sure there are some problems I haven't thought of regarding fun gameplay in a continuous universe. At the same time, while I'm not dismissing concerns outright, I'd like to hope folks here will also agree that there's nothing magically perfect about a nodes-and-vertices universe, either; it has game design consequences that need to be figured out, too.
Post

Re: [Josh] Friday, July 13, 2018

#17
Well, i can already see a couple of problems with continous space as suggested there:

First:
It completely removes the player from any noteworthy happenings in terms of fleet combat.
As long as the player isnt in the intel loop of any psrticipating side, e will never know that something even happened. Because it happened somewhere in deep space where the defenders intercepted the aggressors. Far away from where the player could possibly see it.

Second:
it makes tactics based on incomplete knowledge inside systems all but impossible.
Because a sensor thats designed to detect stealthy ships over interstellar distances wont suddenly become blind below a dozend AU, and if it does it has a cousin that doesnt.
So anything that doesnt have very very very dedicated stealth capabilities will be detected in-system without much effort.

Third:
Piracy? Pointless to try.
Even if you manage somehow to evade identification on the way in, on the way out the local tracking station knows exactly where you are and sends a strike force after you.
Unless the pirates somehow manage to get better-than-military-grade stealth systems while at the same time as they are scrounging around trying to make a living... yeah, sure.

Fourth:
internal structure of systems also becomes completely meaningless.
Freemove drives that are powerful enough for casual interstellar travel reduce systems to basically points.
As everything in system is a few-second drive pulse away from you.
Obstacles make you divert your approach course by a fraction of a degree half a lightyear out and not further bother with them.

Fifth:
It removes all aspects of "hidden passageways" wormholes have.
I cant use exploration and wits to get to places, only brute force and superior technology.
As any approach i can take is wholly in open space.


All in all it sounds to me like a lot being taken with a freeflight approach.
Post

Re: [Josh] Friday, July 13, 2018

#18
Minor update addressing connectivity. As you would expect, it is very easy to improve local connectivity as much as you want -- all you need to do is modify Kruskal's a bit. In the algorithm, you are considering edges to add to your graph in a prioritized fashion (in our case, shortest first), and adding them if and only if the endpoints are not already connected. Modify this condition to "if the endpoints are not already connected OR the number of connections of either endpoint is below their target connection count." We can thus generate a 'desired connection count' for each system before running to control the extra edges added. This is the right (and easy/fast) way to bump up local connectivity so that intra-region navigation is less tedious. One more option to throw in the universe generator :)

Here's what this looks like in practice.

Baseline spanning tree, nothing extra:

Image

Connection count randomly between 1 and 3 on a per-system basis -- this is probably a reasonable default:

Image

Between 1 and 5 -- 'easy mode,' until you want to defend your territory, that is ;) :

Image

Forced 10 connections per system for when you need to TRADE ALL THE THINGS and also want the AI pathfinding to take 100% of your CPU time :roll:

Image

And finally, spicing it up with exponential distribution (connection count = 1 + randexp() ^ 1.5) -- a neat option for giving certain systems a natural 'hub' property due to high connectivity:

Image

:thumbup:
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: [Josh] Friday, July 13, 2018

#20
Definitely. Raising to 1.5 power was probably overkill, but it demonstrates the point nicely. You can dial back the numbers (especially that exponent) and get something more reasonable. But of course with exp the point is that you will always have a small chance for something 'crazy' to happen :squirrel:
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: [Josh] Friday, July 13, 2018

#21
And each connection represents a wormhole path leading from one "infinitely sized" star system to another. So, if a system has 3 connections it literally only has 3 wormholes within it which can be discovered. Somehow the AI will be able to find some but not all of these connections during universe generation and use these connections to spread across multiple systems. And the purpose for doing this is to find more materials in variation and quantity?

Am I seeing the big picture accurately?
Image
Post

Re: [Josh] Friday, July 13, 2018

#23
JoshParnell wrote:
Mon Jul 16, 2018 12:30 pm
Definitely. Raising to 1.5 power was probably overkill, but it demonstrates the point nicely. You can dial back the numbers (especially that exponent) and get something more reasonable. But of course with exp the point is that you will always have a small chance for something 'crazy' to happen :squirrel:
rare, crazy things like a Jita system with 10 connections should be RARE. Maybe have some regions within a sector more connected that others? where some regions really only have 1 or 2 connections, while others will average 3-4, and then theres the occasional chance for a lot of connections to a single Jita-like system, but only one in every 10 sectors or so. A Jita in a sector that averages 3.14 connections will be a major trade hub, but if there's a Jita in a sector that averages 1.2, then it will pretty much be the de-facto capital of the entire sector, as all roads lead to Jita.
Cornflakes_91 wrote:
Mon Jul 16, 2018 10:39 am
Well, i can already see a couple of problems with continous space as suggested there:
All fair points. I think the only way Hyperspace freeflight would be possible without being game breaking is to make hyperspace fairly dangerous and difficult, and exponentially so at longer distances or times. as for stealth, a long range sensor may not extend into hyperspace, because hyperspace is not simply condensed normal space, it behaves differently. But I like Josh's mini update, so perhaps Hyperspace is just best left for a mod.
Image
Challenging your assumptions is good for your health, good for your business, and good for your future. Stay skeptical but never undervalue the importance of a new and unfamiliar perspective.
Imagination Fertilizer
Beauty may not save the world, but it's the only thing that can
Post

Re: [Josh] Friday, July 13, 2018

#25
BFett wrote:
Mon Jul 16, 2018 12:39 pm
And each connection represents a wormhole path leading from one "infinitely sized" star system to another. So, if a system has 3 connections it literally only has 3 wormholes within it which can be discovered. Somehow the AI will be able to find some but not all of these connections during universe generation and use these connections to spread across multiple systems. And the purpose for doing this is to find more materials in variation and quantity?

Am I seeing the big picture accurately?
This is exactly what I am currently addressing in a toy that is planned for GoatbotX.
However my solution will, likely, be very different from Josh's.

First, I generate the initial few systems, populate them, based on distance from star 0 (Sol), and determine if the wormhole between two systems is natural or artificial based upon distance (in jumps) from Sol.
This gives me the definition in borders for the empire. As any system connected by jumpgates is FAR more likely to have high population, or any population.

Then, I can generate extra "unknown" wormholes in stars distant from sol, these lead nowhere until the player actively investigates them.

If I wanted to include aliens, I'd then have a small chance (increasing based on distance from ALL empires, of having a star you generate as you jump to hosting an alien outpost.
If it does then we figure out how big this empire is, build a number of systems in a direct line back to their central star, then build outwards, adding extra jumps to those we used to jump directly to their center.
If any of the stars that this empire generates also generates an empire, the recursion could be large, but I can use that to alter the stars that are on a direct line between the two, adding extra debris, and potentially even an active war between the two, or more, races.

Entire Alien civilizations waiting to be discovered, but not actually there until the player, or an Empire Agent actually discovers them.
°˖◝(ಠ‸ಠ)◜˖°
WebGL Spaceships and Trails
<Cuisinart8> apparently without the demon driving him around Silver has the intelligence of a botched lobotomy patient ~ Mar 04 2020
console.log(`What's all ${this} ${Date.now()}`);
Post

Re: [Josh] Friday, July 13, 2018

#27
Silverware wrote:
Mon Jul 16, 2018 3:43 pm
This is exactly what I am currently addressing in a toy that is planned for GoatbotX.
However my solution will, likely, be very different from Josh's.

Deferring generation like that and actively creating entirely new swaths of space is a great way to go. I wish we could do that for LT. I frequently think about the 'pocket universe' expansion pack (or whatever) where I can implement that style of deferred generation :D So many cool possibilities, and such an elegant way to handle having an infinite structure with finite computation.

Let me know when GoatbotX is ready to play ;)

N810 wrote:
Mon Jul 16, 2018 3:57 pm
Is there a small chance of a wormhole jumping a long way and joining distant systems ?
(like the deep space 9 wormhole)

If that's directed at me, yes, for sure. I imagine transient wormholes as extra lines on top of this static grid. So the maps I am showing are the 'permanent' connections. For generating transient wormhole connections we can do any number of fun things (preferably long-distance and unpredictable).

Flatfingers wrote:
Sat Jul 14, 2018 1:54 pm
Niiiiiice. Thanks, Josh!

I can't resist noting (as Ringu intimates) that the only reason we're even looking at algorithms for generating plausible-and-fun connections between certain star systems is because the game universe isn't continuous. If there were just "space" all over, you could simply fly from anywhere to anywhere.

Note that a continuous universe still has structure because stars still exist at some distance from each other. As long as you impose some limitation on long-distance travel speed, such as by capping the maximum distance that FTL engines can jump a ship, and perhaps imposing a small fuel cost proportional to distance traveled, trade routes and other networks will still emerge naturally. This happens without any need to predetermine allowable routes (vertices between nodes)... and with the benefit that interesting things can exist outside the "physical" areas of star system nodes. (Note that this also makes the universe a little more amenable to rendering some multi-star-system effects as area fields. Of course you can still do fields in a node-and-vertices arrangement, but my impression is that this is a little simpler in a world that's already continuous.)

You might still want to do a tile-based approach to dynamically generating new clusters of star systems. (Preferably a hex grid!) The point is, a continuous universe eliminates the need to figure out which stars are connected to which during universe generation: they're all connected.

I'm going to go ahead and assume "continuous universe" is off the table at this point. :D Just considering an alternative -- maybe there's some utility to temporarily setting aside the nodes-and-vertices assumption.

Mostly, I'm just glad to see some thinking time going into universe generation and how emergent dynamics will span multiple star systems. That's a big milestone to hit!

For sure Flat, I will keep it in the back of my head. I realize this is both totally non-physically-based and 100% a matter of opinion, but you all know how much I love my structured space :) I am pretty heavily partial to that structure, whether it be in-system or between-systems.

I don't know if you saw the last bit about boundaries and tiling, but yes, it will still be tile-based at the cluster level if you opt for an infinite universe. Although it is rectangular not hex atm. The thing that worries me about hex is...6 neighbors! Ahh! It feels like too many :? In fact, I have been wondering lately about a triangular grid, to cut it down to only 3 neighboring clusters...now that's what I call peace and quiet :monkey: (But hey, a tri grid and hex grid are topologically dual in 2D, so I think it will still satisfy your hex aesthetics? :D)
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: [Josh] Friday, July 13, 2018

#28
JoshParnell wrote:
Mon Jul 16, 2018 4:13 pm
Silverware wrote:
Mon Jul 16, 2018 3:43 pm
This is exactly what I am currently addressing in a toy that is planned for GoatbotX.
However my solution will, likely, be very different from Josh's.

Deferring generation like that and actively creating entirely new swaths of space is a great way to go. I wish we could do that for LT. I frequently think about the 'pocket universe' expansion pack (or whatever) where I can implement that style of deferred generation :D So many cool possibilities, and such an elegant way to handle having an infinite structure with finite computation.

Let me know when GoatbotX is ready to play ;)
Yeah I will, it's one of the three projects for Goatbot currently in the works, however it's the lowest priority one, as it's the most complex.

I *DID* get the entire IRC connection, basic user management, and message handling down to less than 800 lines though.
All previous Goatbot's IRC Module alone was like 1500 lines.
°˖◝(ಠ‸ಠ)◜˖°
WebGL Spaceships and Trails
<Cuisinart8> apparently without the demon driving him around Silver has the intelligence of a botched lobotomy patient ~ Mar 04 2020
console.log(`What's all ${this} ${Date.now()}`);
Post

Re: [Josh] Friday, July 13, 2018

#30
JoshParnell wrote:
Mon Jul 16, 2018 4:29 pm
Good man, rip that code until there's no code left :squirrel:
His entire init file is a single line now. :3
It's the only code loaded just a single time. All other code is reloadable on the fly.

Code: Select all

require('./load/core.reload.js')({ _require:function(m){ return require(m); } });
°˖◝(ಠ‸ಠ)◜˖°
WebGL Spaceships and Trails
<Cuisinart8> apparently without the demon driving him around Silver has the intelligence of a botched lobotomy patient ~ Mar 04 2020
console.log(`What's all ${this} ${Date.now()}`);

Online Now

Users browsing this forum: No registered users and 9 guests

cron