SE v203 modding & scripting changes - THDigi/SE-ModScript-Examples GitHub Wiki
I compared the decompiled Space Engineers' game code for v203.505 against v202.124 and this is what I found that is relevant to modding and scripting (including PB).
For server admins (affects ModAPI too):
-
v203.505
- World settings got
<EnableTrashSettingsPlatformOverride>
, game's description of it: "Enable trash settings to be overriden by console specific settings" <SyncDistance>
is capped to 2000 for crossplay dedicated servers.<ViewDistance>
gets capped to 7000 for console clients (not sure what that means if it's larger and a PC player joins, they probably don't have it capped?).
- World settings got
-
New session settings (sandbox_config.sbc)
UpdateRespawnDictionary
= false
Unknown, but it is set to true in the Space Standoff scenario.BlueprintShare
= true
Allows players to share blueprints with other online players (players can also turn it off for themselves in game settings).BlueprintShareTimeout
= 30
Timeout between sharing blueprints.PrefetchShapeRayLengthLimit
= 15000
Max distance weapons can interact with voxels.EnemyTargetIndicatorDistance
= 20
Max distance to show enemy character indicator when aiming at them.
SBC modding/modelling (affects modAPI too)
-
v203.505
- Ammo BasicProperties got
<EndOfLifeEffect>
and<EndOfLifeSound>
. - Ammo MissileProperties got
<ExplosionFlags>
(nullable MyExplosionFlags, defaults null).
- Ammo BasicProperties got
-
Breaking changes:
- Missile ammo definition's
<MissileRicochetAngle>
was replaced by<MissileMinRicochetAngle>
and<MissileMaxRicochetAngle>
. - Missile ammo definition's
<MissileRicochetProbability>
was replaced by<MissileMinRicochetProbability>
and<MissileMaxRicochetProbability>
.
- Missile ammo definition's
-
New Entity Components:
RotatingSubpartComponent
,RandomMovementSubpartComponent
,ParticleEntityComponent
,LcdSurfaceComponent
,MultiTextPanelComponent
. -
Weapon definition's
<MissileAmmoData
tag gotRicochetSoundName
attribute. -
Block definitions got
<WheelPlacementCollider>
tag (see wheel blocks). -
Block definition's
<MountPoint
tag gotCouplingTag
andAllowCouplingWithItself
attributes.
See Hidden SBC tags/features @ Mountpoints features -
TextPanel
block definition got<MaterialNamesToHideWhenOffline>
(see Holo LCD). -
TurretControlBlock
block definition got:<PidGainProportional>
= 1.1<PidGainIntegral>
= 0.5<PidGainDerivative>
= 0.005<PidGainFilter>
= 1
-
DefensiveCombatBlock
block definition got:<FleeDistanceMin>
= 1<FleeDistanceMax>
= 50000<EvasiveManeuverAngleMin>
= 0<EvasiveManeuverAngleMax>
= 90<EvasiveManeuverIntervalRangeMin>
= 1<EvasiveManeuverIntervalRangeMax>
= 30
-
Cockpit
andCryoChamber
definitions got<CharacterAnimations>
(see decorative pack 3). -
Beacon
block definition got<EnableLight>
(defaults true). -
TargetLockingComponent
andTargetLockingBlockComponent
got:<LockingModifierCharacter>
= 2<LockingTimeMinCharacter>
= 1<LockingTimeMaxCharacter>
= 10<LockingModifierDistanceCharacter>
= 10
PB API (affects ModAPI too):
- New objects:
IMyComponentContainer
(replaces theMyComponentContainer
inblock.Components
).
block.Components.TryGet<T>()
now supports inputting interfaces (Get<T>()
still does not).- Obsolete methods and properties were removed from
IMyTextPanel
. Vector3/D.Angle()
was fixed to clamp the value before calling Acos().
ModAPI:
-
v203.505
MyExplosionFlags
gotFORCE_CUSTOM_END_OF_LIFE_EFFECT
.MyParticlesManager.TryCreateParticleEffect()
got aint keepXFramesAhead = 0
parameter.MyExplosionInfo
gotGetCueByExplosionType()
andGetExplosionEffect()
.MyExplosionInfoSimplified
gotCustomSound
field.MySoundPair
gotGetCueName()
.
-
New objects:
IMyEntityComponentContainer
IMyResourceSinkComponent
IMyLcdSurfaceComponent
IMyMultiTextPanelComponentOwner
IMyRenderWithLights
MyCustomRenderEntitySubpart<T>
-
VRage.Game.Components.Interfaces
is now whitelisted. -
MyUpdateOrchestrator
was removed. -
PathUtils
gotEnsureSafePath()
WARNING: it only works for appdata folder or game data folder, it will NOT allow from published mod folders. -
MyObjectBuilderSerializer
methods got changed to checkPathUtils.EnsureSafePath()
. -
MyLog
now only allowsInit()
in specific folders (seePathUtils.EnsureSafePath()
). -
DictionaryExtensions
gotGetValueOrNew()
. -
MyEntityUpdateEnum
gotEACH_FRAME_AFTER
;EntityFlags
gotNeedsUpdateAfter
;MyParallelUpdateFlags
gotEACH_FRAME_AFTER
. -
MyEntity
:- Changed
Components
prop toIMyEntityComponentContainer
type. - Added
ctor(bool testingPurpouses)
andInitComponentsForTesting()
. - Added
OnDebugDraw
event. - Added
protected virtual void BeforeGameLogicInit()
. - Changed
InstantiateSubpart()
to use the first non-null entity given. - Added
OnModelRefresh
event (was since 202 but somehow missed it).
- Changed
-
IMyCockpit
gotAttachPilot(IMyCharacter, int animation)
overload. -
IMyOffensiveCombatHitAndRun
gotGetFirstWeaponForwardVector
delegate. -
IMyShipConnector
gotDetachFinished
event. -
IMyTargetingCapableBlock
gotSetLockedTarget(IMyCharacter)
. -
MyBlockVariantGroup
gotHasNewContent()
andMarkAsViewedContent()
. -
MyCubeBlockDefinitionGroup
andMyGuiBlockCategoryDefinition
gotCreateNewContentNotificator()
. -
MyVisualScriptLogicProvider
gotChangeDoorState()
. -
MyRenderComponentPlanet
(which is internal) got override forRemoveRenderObjects()
(which is accessible fromMyRenderComponent/Base
). -
MyRenderComponentScreenAreas
gotHideScreenArea(int)
. -
IMyUpdateOrchestrator
gotGetStats()
,StatsFilter
,StatsViewDirFilter
,ClearStats()
. -
MyAutopilotWaypoint
gotIsCorrectRotationNeeded
,static AreEqualByResultCoordinates()
. -
MyCockpit.AttachPilot()
gotint seed
parameter (which is the seating animation). -
MyCubeGrid
:- Added
MassSyncProperty
prop andOnGridMarkedDirty
event. - Removed
DebugDrawRange()
andDebugDrawPositions()
.
- Added
-
MyGamePruningStructure
gotGetAproximateDynamicClustersForSizeDebug()
. -
MyPlanet
gotGetHeightFromSurface()
. -
MySafeZone
gotIsActionAllowed(MySafeZoneAction, long, BoundingBoxD?, BoundingSphereD?, Vector3D?)
(and something similar forMySessionComponentSafeZones
too), -
MyShipController
gotAreBreaksOn
,PreviousController
,SetLockedTarget(IMyCharacter)
. -
MyVoxelBase
gotIsAnyOfPointInside()
. -
IMyTargetLockingComponent
gotMyEntity TargetEntity
andMyCubeGrid Target
was marked obsolete. -
MyGridTargeting
gotTrackedCharactersChanged
event;SetLockedGrids()
was renamed toSetLockedGridsOrCharacters()
. -
MyIngameScriptComponent
replacedNextUpdate
withUpdateFrequency
. -
MyLightingLogic
gotIsPreview
. -
MyDefinitionManager
gotTryGetContainerDefinition()
andTryGetComponentDefinition()
. -
MyDefinitionId
gotstatic DropToStringCache()
. -
MyDefinitionBase
gotCheckDefinitionDLCs()
. -
BoundingBox
gotIsBetween()
. -
MyDynamicAABBTreeD
gotGetAproximateClustersForAabbDebug()
.