Jump to content

[Min KSP 1.12.2] Blueshift: Kerbal FTL


Angelo Kerman

Recommended Posts

14 hours ago, Angel-125 said:

Ever see the movie Interstellar? ;)

Pretty cool! :) A possibly fun idea, but I suppose not really needed per se given the already existing jump gates - perhaps it could be possible to create one of these 'singularity-type' gates using a ship - or two ships. One ship at the origin point, another ship at the destination, and perhaps both get eaten (and a crazy amount of graviolium consumed on each, maybe) to produce a permanent singulari-gate...? Could be cool! Just a wild idea.

Link to comment
Share on other sites

7 hours ago, StarCrusher96 said:

I'm so excited to see this! 
Could you explain me how it works?

The wormhole is a new space anomaly part that will be added to the next release. It is a simple sphere with a trigger on its surface. Blueshift's jumpgate part module handles the heavy lifting and works just like the ringed gate, except that the wormhole has no effects to play, and does not require resources to use. For GU, I defined two SPACE_ANOMALY nodes, one for each end of the wormhole. I set them into fixed orbits, set their max instances to 1, their max jump range to -1 (unlimited), and gave them unlimited lifetime. I also gave them a unique network address that only the two wormhole endpoints use. Blueshift is smart enough to know that when you only have 2 gates in the network, it won't show you the destination selector since it already knows what the destination gate is. Then it's just a matter of flying into the wormhole and letting Blueshift move your ship. :)

Here are the configs:

Spoiler

SPACE_ANOMALY:NEEDS[GU]
{
    // Identifier for the space anomaly.
    name = wormholeJool

    // Name of the part to spawn
    partName = wbiWormhole

    // Like asteroids, space anomalies have a size class that ranges from Size A (12 meters) to Size I (100+ meters).
    // The default is A.
    sizeClass = I

    // How does an instance spawn. Default is randomOrbit.
    // randomOrbit: Spawns in a random solar or planetary orbit.
    // randomSolarOrbit: Spawns in a random solar orbit.
    // randomPlanetOrbit: Spawns in a random planetary orbit.
    // everyLastPlanet: Spawns in random orbit of every last planet in each star system. Ignores maxInstances.
    // fixedOrbit: Spawns in a fixed orbit. One anomaly per orbit. Ignores maxInstances and orbitType.
    spawnMode = fixedOrbit

    // The type of orbit to create. Default is elliptical.
    // elliptical: Garden variety elliptical orbit.
    // flyBy: Fly-by orbit.
    // random: Randomly pick either circular or flyBy.
    orbitType = elliptical

    // For flyBy orbits, the max number of days until the anomaly reaches the closest point in its orbit. Default is 30.
//    maxDaysToClosestApproach = 30

    // For orbitType = random, on a roll of 1 to 100, what is the chance that the orbit will be flyBy. Default is 50.
//    flyByOrbitChance = 50

    // For fixedOrbit, the celestial body to spawn around.
    fixedBody = Jool
    
    // For fixedOrbit, the Semi-Major axis of the orbit.
    fixedSMA = 2000000

    // For fixedOrbit, the eccentrcity of the orbit.
    fixedEccentricity = 0

    // For fixedOrbit, the inclination of the orbit. Default is -1, which enables random inclination.
    fixedInclination = 0

    // For undiscovered objects, the minimum number of seconds that the anomaly can exist. Default is 86400 (1 day).
    // Set to -1 to use maximum possible value. When set to -1, maxLifetime is ignored.
    minLifetime = -1

    // For undiscovered objects, the maximum number of seconds that the anomaly can exist. Default is 1728000 ( 20 days).
    maxLifetime = -1

    // Spawn chance in a roll between 1 and 1000
    spawnTargetNumber = 1

    // Maximum number of objects of this type that may exist at any given time. Default is 10.
    // Set to -1 for unlimited number.
    maxInstances = 1

    // Type of anomaly
    // generic: A generic anomaly (the default).
    // jumpGate: A special type of anomaly that is a jumpgate. Jumpgates can be enabled/disabled from the Game Difficulty menu.
    anomalyType = jumpGate

    // Determines whether or not the jumpgate is already known and should be added to the network. Default is false.
    // Applies to anomalyType = jumpGate.
    isKnown = true

    // Assign the jumpgate to this network. Overrides networkID set in WBIJumpGate. Make this a unique value.
    // Applies to anomalyType = jumpGate.
    networkID = Jool-SgrA

    // Overrides the default rendezvous distance set in WBIJumpGate.
    rendezvousDistance = 1100
}

// The other half of the wormhole
SPACE_ANOMALY:NEEDS[GU]
{
    name = wormholeSgrA
    partName = wbiWormhole
    sizeClass = I
    spawnMode = fixedOrbit
    orbitType = elliptical
    fixedBody = SgrA
    fixedSMA = 7800000042
    fixedInclination = 0
    fixedEccentricity = 0
    minLifetime = -1
    maxLifetime = -1
    spawnTargetNumber = 1
    maxInstances = 1
    anomalyType = jumpGate
    isKnown = true
    networkID = Jool-SgrA
    rendezvousDistance = 1100
}

I use a starmap texture for the wormhole, and while I did experiment with grabbing the skybox, I couldn't find it.

Link to comment
Share on other sites

44 minutes ago, Shbibe said:

Will this be made to work with persistent thrust? Going long distance with the drives would be incredibly time consuming.

Blueshift doesn't work with persistent thrust or in timewarp. Instead, when in interstellar space, the warp engines gain a large speed boost, greatly improving travel rates. In testing it takes just a few minutes to leave Kerbol and reach Nova Kirbani (the nearest star in GU). Plus, with jumpgates, you only need to warp in interstellar space once to a new system in order to discover its jumpgate. After that you just need to reach the system's jumpgate and select a destination. Finally, for those who are too impatient for warp travel, the last set of FTL parts will let you simply select a desired target and initiate a jump.

Link to comment
Share on other sites

28 minutes ago, Angel-125 said:

Blueshift doesn't work with persistent thrust or in timewarp. Instead, when in interstellar space, the warp engines gain a large speed boost, greatly improving travel rates. In testing it takes just a few minutes to leave Kerbol and reach Nova Kirbani (the nearest star in GU). Plus, with jumpgates, you only need to warp in interstellar space once to a new system in order to discover its jumpgate. After that you just need to reach the system's jumpgate and select a destination. Finally, for those who are too impatient for warp travel, the last set of FTL parts will let you simply select a desired target and initiate a jump.

Oh ok, that helps a lot!

Link to comment
Share on other sites

On 2/18/2021 at 11:41 PM, Angel-125 said:

At the very least you need the S-3 Warp Engine. That is the complete solution. Otherwise you need a warp core and either a warp ring or 10 of the warp coils. To improve speed you can add additional warp coils and gravitic generators to power them.

Okay, thanks. I'm trying to make a warpable SSTO, so I'm trying to figure out how to store enough Graviolium to travel to further planets without adding too much bulk. :)

Link to comment
Share on other sites

18 hours ago, Angel-125 said:
21 hours ago, Bej Kerman said:

Not sure if I feel comfortable with how the animation was interpolated.

Well, if you have a better effects setup that you'd like to create, I'd be happy to use it. :)

Set the interpolation to not ease in and out as the bubble stretches and collapses.

Link to comment
Share on other sites

10 hours ago, PalowPower said:

Is there a Interplaynetary speed limit? My interplanetary speed record was 5.6c

Edit: Will you add a Jump Animation for the Jump Gates?

(Oh and 100000x Interstellar Speed Multiplier = Kraken attack!)

No speed limit, other than what your engines can do with the ship's warp capacity and mass. In planetary space your top speed is limited so you don't blow past planets and moons. In Interstellar space your top speed is greatly accelerated so that it doesn't take too long to go between star systems. In interplanetary space, you have no speed restrictions or bonuses, so 5.6c sounds right. If you add additional warp coils/rings and gravitic generators, you can go faster, but it takes more to do so.  The other option is to change the cost of going certain speeds.

Each engine has a warpCurve that tells it the cost of going specific velocities that you can easily ModuleManager patch to your liking. Here is the standard curve:

Spoiler

		// In addition to any specified PROPELLANT resources, warp engines require warpCapacity. Only parts with
		// a WBIWarpCoil part module can generate warpCapacity.
		// The warp curve controls how much warpCapacity is neeeded to go light speed or faster.
		// The first number represents the available warpCapacity, while the second number gives multiples of C.
		// You can apply any kind of warp curve you want, but the baseline uses the Fibonacci sequence * 10.
		// It may seem steep, but in KSP's small scale, 1C is plenty fast.
		// This curve is modified by the engine's displacementImpulse and current vessel mass.
		// effectiveWarpCapacity = warpCapacity * (displacementImpulse / vessel mass)
		// maxWarpSpeed = <warpCurve evaluation> * <interstellar/planetary speed multiplier>
        // warpSpeed = maxWarpSpeed * <thrust limiter> * <throttle setting>
		warpCurve
		{
			key = 1 0
			key = 10 1
			key = 30 2
			key = 50 3
			key = 80 4
			key = 130 5
			key = 210 6
			key = 340 7
			key = 550 8
			key = 890 9
			key = 1440 10
		}

 

To patch the curve:

Spoiler

@PART[wbiMk2WarpCore,wbiS2WarpCore,wbiS3WarpCore,wbiS3WarpEngine]:AFTER[Blueshift]
{
	@MODULE[WBIWarpEngine]
	{
		// Get rid of current warp curve
		!warpCurve{}

		// Create new curve to your liking
		warpCurve
		{
			key = 0 0
			key = 10 1
			key = <warpCapacity required> <MultipleOfC>
		}
	}
}

 

No plans for a jump animation at this time.

5 hours ago, Bej Kerman said:

Set the interpolation to not ease in and out as the bubble stretches and collapses.

Cool! Waterfall lets you edit the effects, I look forward to seeing what you create. :)

1 hour ago, Opteryx said:

Woah. I downloaded this when it was in 0.4 and it is crazy how much has changed since.

Yup, I've been busy! :)

Link to comment
Share on other sites

On 2/21/2021 at 5:36 PM, Angel-125 said:

Glad you like it! :) I have another space anomaly brewing for next update. Blueshift will automatically add it if you have @StarCrusher96' Galaxies Unbound installed, but it supports other mods as well if someone wants to make configs. Here is a preview:

That's Jool off to the right.

(snip)

A selectable and targetable part. Good luck trying to move it though.

(snip)

A selectable and targetable- uh, other part.

(snip)

Um, where are we?

(snip)

Would Blackrack's Singularity shader be a good fit here?

Edited by RyanRising
Added link
Link to comment
Share on other sites

42 minutes ago, Bej Kerman said:

Does the throttle work like Supercruise in Elite Dangerous, or do you snap to the set speed?

I'm not familiar with Elite Dangerous, but when you hit interstellar space your ship automatically gets a warp speed multiplier. So it's more like one second you're going 5.6c, the next you are going 5600c.

22 minutes ago, RyanRising said:

Would Blackrack's Singularity shader be a good fit here?

Sadly no, the singularity shader applies to planets, not parts.

Link to comment
Share on other sites

3 hours ago, ktosiu said:

Is the direction of warp determined by the orientation of the root part? My vessel moves in reverse during warp while all visual effects are correctly aligned, regardless how I connect the warp engine. Is there a way to work around this?Jc73UkA.jpg

This is great feedback, thank you. It will take a fix on my end, but I have an idea on what is going on.

Link to comment
Share on other sites

7 hours ago, ktosiu said:

Is the direction of warp determined by the orientation of the root part?

My assumption is the orientation of the active warp engine. Attach another engine facing backwards and fire that and see what happens.

3 hours ago, Angel-125 said:

This is great feedback, thank you. It will take a fix on my end, but I have an idea on what is going on.

That's not a bug. There's nothing to fix. You never see a star ship facing anywhere other than forward while its warp drive or jump drive is on.

There are a few obvious reasons why this is so:

  • The nav deflector dish (Star Trek) which also only points forward.
  • The view from the bridge seems very important to a degree. There is no rear view on a starship like in a car, and reverse drive is only limited to gear 1 speed.
  • Warp navigation is never shown accomodating for the ship facing in other directions.
Link to comment
Share on other sites

22 minutes ago, JadeOfMaar said:

My assumption is the orientation of the active warp engine. Attach another engine facing backwards and fire that and see what happens.

That's not a bug. There's nothing to fix. You never see a star ship facing anywhere other than forward while its warp drive or jump drive is on.

@ktosiu already tried attaching the engine backwards and it didn't change anything. Plus as you can see the warp effects from the engine show that the engine facing forward with the control point orientation while the warp direction is backwards with the root part. So yes this is a bug since the ship is not facing forward during warp, it is facing backwards because the root part is facing backwards which is not the intended behavior according to Angel's reply. 

Edited by CDSlice
Link to comment
Share on other sites

Blueshift 1.3.0 is now available:

New Parts

- Astria Porta Arbitrium: This is the control segment of an Astria Porta, a jumpgate that can be built.
- Astria Porta Auxilium: This is a ring segment for an Astria Porta. You'll need 9 of these along with the control segment to complete a gate. The stock Clamp-O-Tron Sr is ideally suited for this part and the Astria Porta Arbitrium.
- Astria Porta Accommodare: This is a small adapter part for putting ring segments in cargo bays.

Changes

- Added an alignment helper to the stock Clamp-O-Tron Sr. docking port to help with docking Astria Porta parts together.
- Added new Jump Tech research node. The Astria Porta parts are located in the new node.
- Added new Wormhole Space Anomaly. You can see it in use if you have Galaxies Unbound installed, but it can support other mods as well if config files are written for them.
- fixedOrbit now accounts for planetary radius and, if it has one, atmospheric depth.
- Removed pairedGateAddress and gateAddress from SPACE_ANOMALY. These fields proved unnecessary. To make a paired jumpgate, simply make sure that both gates use the same network ID and ensure that the network ID is unique.
- Moved the GR series of graviolium tanks to the Advanced Science Tech node, where you also get the stock Drill-O-Matic' Mining Excavator.
- Fixed issue where vessels are teleported to their destination gate during a jumpgate's startup sequence.
- Fixed issue where anomalies weren't being removed after their expiration date.
- Fixed missing lift on mk2 parts.
- Fixed issue where the warp engine wasn't respecting the vessel's control point direction.
- Fixed issue where several part modules were attempting to send controller value updates to Waterfall controllers that didn't exist.

R6CBmFb.png

i3MDqG6.png

 

At this point, Blueshift has both warp engine tech and jump gate tech. The last FTL mode are the jump engines. I have an idea of how to make these, but it's not solidified yet, and given that the warp tech parts expanded greatly, I'm not entirely sure that the jump engines are needed. And since I gave myself until end of February to finish Blueshift, it's time for me to take a break for a bit and work on some other projects. :)

Link to comment
Share on other sites

41 minutes ago, ktosiu said:

Jump engines are probably instantaneous, with limited range and/or tied to jump gates.

Jump engines are indeed instantaneous- once you complete the jump calculations. Simply select a target, whether a celestial body or another vessel, wait for the calculations to finish, and press the jump button. When you jump, you end up in an orbit around or near your target. If you don't have a target then you'll jump forward up to your maximum jump distance.

There are a variety of things that factor into jump calculations like mass of the jump ship, travel distance, how far down the gravity well the jump ship currently is, how far down the gravity well the destination orbit is, the maximum jump range of the engine, and others. You can jump before the calculations are done, but you risk a misjump and could end up anywhere- including falling towards a celestial body without any orbital velocity. There is also a small chance that any jump will misjump despite a high chance of success.

In addition to the jump engine itself, you need sufficient gravitic generators to generate the gravity waves needed to make the jump (the amount varies with engine efficiency and vessel mass). Jump computers can also help by improving the calculation rate (timewarping will also help) and increasing the maximum jump distance.

So, all in all, jump engines are quite different than warp tech and jump gates. They don't require physical travel to the destination, but they have their own set of problems. They're also likely to be more expensive given their convenience.

And hey, if you deliberately decide that you don't want to enter orbit, you can do the Adama Maneuver...

Link to comment
Share on other sites

After updating to the latest version, I'm noticing a steady rise of the number of A and B-class unknown objects in orbit of all planetary bodies (even Minmus). Currently at 129 and counting. Anyone else seeing this?

My log says its the Tets and Jumpgates spawning en masse. So, an alien invasion? ;)

[LOG 07:14:30.099] [WBISpaceAnomaly] - vesselNode: 
{
	pid = 80d16cf63a51490eaba68660ad4bcd75
	name = UNK-IEP-480
	type = SpaceObject
	persistentId = 3543396830
	sit = ORBITING
	landed = False
	skipGroundPositioning = False
	vesselSpawning = True
	landedAt = 
	splashed = False
	alt = 413116960.28770608
	lat = 0.00017861327102679491
	lon = -22.63297229347187
	hgt = -1
	nrm = 0,1,0
	rot = 0.0303219482,-0.630748272,-0.714377999,0.301498264
	met = 216832764.49311778
	lct = 216832764.49311778
	root = 0
	PQSMin = 0
	PQSMax = 0
	altDispState = DEFAULT
	ORBIT
	{
		SMA = 413413728
		ECC = 0.00031389080686494708
		INC = 0.00031247449805960059
		LPE = 0.99978029727935791
		LAN = 1.0003602504730225
		MNA = 1.0003031492233276
		EPH = 1.0003986358642578
		REF = 30
	}
	PART
	{
		name = wbiAlienJumpGate
		uid = 0
		mid = 0
		persistentId = 4082632836
		parent = 0
		position = 0,0,0
		rotation = 0,0,0,1
		mirror = 1,1,1
		srfN = None, -1
		connected = True
		attached = True
		state = 0
		temp = -1
		mass = 250
		expt = 1
		RESOURCE
		{
			name = ElectricCharge
			amount = 50
			maxAmount = 50
			flowState = True
			isTweakable = True
			hideFlow = False
			isVisible = True
			flowMode = Both
		}
	}
	ACTIONGROUPS
	{
	}
	DISCOVERY
	{
		state = 1
		lastObservedTime = 216832764.49311778
		lifetime = 1.7976931348623157E+308
		refTime = 1.7976931348623157E+308
		size = 1
	}
}

[LOG 07:14:30.104] [WBISpaceAnomaly] - vesselNode: 
{
	pid = 48c1716e197842c69910cf3b77bbe8f3
	name = UNK-RQX-161
	type = SpaceObject
	persistentId = 2267031599
	sit = ORBITING
	landed = False
	skipGroundPositioning = False
	vesselSpawning = True
	landedAt = 
	splashed = False
	alt = 494022.44716924743
	lat = -0.00043266740022041423
	lon = -171.04327410936264
	hgt = -1
	nrm = 0,1,0
	rot = -0.501748383,-0.483019412,0.644273937,0.315993547
	met = 216832764.49311778
	lct = 216832764.49311778
	root = 0
	PQSMin = 0
	PQSMax = 0
	altDispState = DEFAULT
	ORBIT
	{
		SMA = 795032.4375
		ECC = 0.0022895303554832935
		INC = 0.00052558589959517121
		LPE = 1.0005099773406982
		LAN = 1.0003840923309326
		MNA = 1.0005109310150146
		EPH = 0.99932634830474854
		REF = 10
	}
	PART
	{
		name = wbiTet
		uid = 0
		mid = 0
		persistentId = 1535625452
		parent = 0
		position = 0,0,0
		rotation = 0,0,0,1
		mirror = 1,1,1
		srfN = None, -1
		connected = True
		attached = True
		state = 0
		temp = -1
		mass = 324.100006
		expt = 1
	}
	ACTIONGROUPS
	{
	}
	DISCOVERY
	{
		state = 1
		lastObservedTime = 216832764.49311778
		lifetime = 86400
		refTime = 1728000
		size = 0
	}
}

[LOG 07:14:30.400] [WBISpaceAnomaly] - vesselNode: 
{
	pid = af8d9273e62c409cb2712301b18b2486
	name = UNK-ESY-550
	type = SpaceObject
	persistentId = 2891627930
	sit = ORBITING
	landed = False
	skipGroundPositioning = False
	vesselSpawning = True
	landedAt = 
	splashed = False
	alt = 380997.8631302719
	lat = -5.5442470004779666E-05
	lon = -118.67372170457413
	hgt = -1
	nrm = 0,1,0
	rot = -0.319021791,-0.830423415,-0.0557543039,0.453335851
	met = 216833064.49311778
	lct = 216833064.49311778
	root = 0
	PQSMin = 0
	PQSMax = 0
	altDispState = DEFAULT
	ORBIT
	{
		SMA = 439901.96875
		ECC = 0.0025777893606573343
		INC = -0.00023156753741204739
		LPE = 1.0001161098480225
		LAN = 1.0009503364562988
		MNA = 1.0007261037826538
		EPH = 0.99952298402786255
		REF = 3
	}
	PART
	{
		name = wbiTet
		uid = 0
		mid = 0
		persistentId = 3965997832
		parent = 0
		position = 0,0,0
		rotation = 0,0,0,1
		mirror = 1,1,1
		srfN = None, -1
		connected = True
		attached = True
		state = 0
		temp = -1
		mass = 324.100006
		expt = 1
	}
	ACTIONGROUPS
	{
	}
	DISCOVERY
	{
		state = 1
		lastObservedTime = 216833064.49311778
		lifetime = 86400
		refTime = 1728000
		size = 0
	}
}

[WRN 07:14:30.635] [F: 51000]: Vessel UNK-ULF-666 crashed through terrain on Vall.
[LOG 07:14:30.635] [Vessel UNK-ULF-666]: Vessel was destroyed.

I'm running OPM and suspect this might be of some importance. Plock is looking particularly interesting :)

3JZbp1f.jpg

Edited by ktosiu
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...