Jump to content

Solver

Members
  • Posts

    2,506
  • Joined

  • Last visited

  • Days Won

    48

Solver last won the day on November 29 2022

Solver had the most liked content!

Reputation

194 Excellent

Converted

  • Location
    Sweden

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Not an issue new to V27 but the game has a problem with smoke. I accidentally captured two Sebillians on one mission after throwing a smoke into the UFO to protect my exposed breachers. The problem is a known one I'm pretty sure - smoke deals stun damage and being in the middle of a smoke cloud can add up to a lot while moving out of it. I'm bringing it up because I think I have a decent suggestion. It would be unsatisfying to remove smoke stun but I think the solution is to apply smoke stun at the end of the unit's turn, if the unit is standing in smoke. Then get rid of smoke if moving into / through a smoke tile. That would be a simple rule that players can understand, as it would be similar to bleeding wounds, and it would let smoke retain its secondary stun function without being some kind of super-effective stun gas.
  2. The attached save produces a CTD for me after an hour of in-game time. Per the exception log, I believe this is because X-55 interceptor research completes then. 2023-05-20 01:11:51,126 [FATAL] (F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Screens\XenonautsMain.cs:938) [INITIAL CRASH] System.Collections.Generic.KeyNotFoundException: A fatal error occurred during Update[] - Exception occurred during handling of 371 Xenopedia Entry - X-55 Phantom Interceptor [Unlocked:True] for controller xenopedia_entry_component_interceptor[Clone] of type ComposableXenopediaEntryController - The given key was not present in the dictionary. Context: - Transition:global::Stateless.StateMachine<global::Xenonauts.Strategy.Systems.StrategyUIStates, global::Xenonauts.Strategy.Systems.StrategyUITriggers> - Transition [Source: GeoscapeMain, Destination: XenopediaEntryUnlocked, Trigger: ShowModal] - Fire Arguments:global::Stateless.StateMachine<global::Xenonauts.Strategy.Systems.StrategyUIStates, global::Xenonauts.Strategy.Systems.StrategyUITriggers> - Fire [ShowModal, args: Strategy.UI.Elements.XenopediaEntryUnlockedElement+Parameters,XenopediaEntryUnlocked,Xenonauts.Strategy.Systems.StrategyUISystem+ShowModalParameters] - Process:global::Artitas.Events.DeltaTimeEvent - DeltaTime Event[dT: 0.0175533] - Exception occurred during handling of 371 Xenopedia Entry - X-55 Phantom Interceptor [Unlocked:True] for controller xenopedia_entry_component_interceptor[Clone] of type ComposableXenopediaEntryController - The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2[System.String,System.Object].get_Item (System.String key) [0x000a8] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:151 at Artitas.Components.DictionaryComponent`3[TKey,TValue,TComponent].get_Item (.TKey key) [0x00008] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Artitas\Artitas.Core\Code\Components\CollectionComponents.cs:495 at Common.UI.Tooltips.RepeatableTextFormatterScribanContextKeyTarget.Apply (IComposable target) [0x0000d] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\UI\Tooltips\StateControl\RepeatableTextFormatterTargetSelectors.cs:54 at Common.UI.Tooltips.RepeatableTextFormatterBehaviour.Apply (IComposable composable) [0x00024] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\UI\Tooltips\StateControl\RepeatableTextFormatterBehaviour.cs:46 at Common.UI.UIController.ComposableContextController.Apply (IComposable target) [0x00034] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\UI\UIController\ComposableContextController.cs:74 at Common.UI.UIController.ComposableContextController.OnSetTarget () [0x0000e] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\UI\UIController\ComposableContextController.cs:40 at Xenonauts.Common.Xenopedia.ComposableXenopediaEntryController.OnSetTarget () [0x00002] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Screens\Common\Xenopedia\ComposableXenopediaEntryController.cs:15 at Common.UI.DataStructures.UIController`1[T].SetTarget (.T target) [0x0002c] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\UI\UIController\UIController.cs:118 at Common.UI.DataStructures.AUILayoutController`2[Xenonauts.Common.Xenopedia.ComposableXenopediaEntryController,Artitas.Entity].Add (Artitas.Entity target, Boolean animate) [0x000ba] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\UI\UIController\AUILayoutController.cs:164 2023-05-20 01:11:51,127 [FATAL] (F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Screens\XenonautsMain.cs:720) Exception in Unity lifecycle, marked as handled: KeyNotFoundException: [INITIAL CRASH] - A fatal error occurred during Update[] - Exception occurred during handling of 371 Xenopedia Entry - X-55 Phantom Interceptor [Unlocked:True] for controller xenopedia_entry_component_interceptor[Clone] of type ComposableXenopediaEntryController - The given key was not present in the dictionary. Context: - Transition:global::Stateless.StateMachine<global::Xenonauts.Strategy.Systems.StrategyUIStates, global::Xenonauts.Strategy.Systems.StrategyUITriggers> - Transition [Source: GeoscapeMain, Destination: XenopediaEntryUnlocked, Trigger: ShowModal] - Fire Arguments:global::Stateless.StateMachine<global::Xenonauts.Strategy.Systems.StrategyUIStates, global::Xenonauts.Strategy.Systems.StrategyUITriggers> - Fire [ShowModal, args: Strategy.UI.Elements.XenopediaEntryUnlockedElement+Parameters,XenopediaEntryUnlocked,Xenonauts.Strategy.Systems.StrategyUISystem+ShowModalParameters] - Process:global::Artitas.Events.DeltaTimeEvent - DeltaTime Event[dT: 0.0175533] - Exception occurred during handling of 371 Xenopedia Entry - X-55 Phantom Interceptor [Unlocked:True] for controller xenopedia_entry_component_interceptor[Clone] of type ComposableXenopediaEntryController - The given key was not present in the dictionary. System.Collections.Generic.Dictionary`2[System.String,System.Object].get_Item (System.String key) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:151) Artitas.Components.DictionaryComponent`3[TKey,TValue,TComponent].get_Item (.TKey key) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Artitas/Artitas.Core/Code/Components/CollectionComponents.cs:495) Common.UI.Tooltips.RepeatableTextFormatterScribanContextKeyTarget.Apply (IComposable target) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/UI/Tooltips/StateControl/RepeatableTextFormatterTargetSelectors.cs:54) Common.UI.Tooltips.RepeatableTextFormatterBehaviour.Apply (IComposable composable) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/UI/Tooltips/StateControl/RepeatableTextFormatterBehaviour.cs:46) Common.UI.UIController.ComposableContextController.Apply (IComposable target) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/UI/UIController/ComposableContextController.cs:74) Common.UI.UIController.ComposableContextController.OnSetTarget () (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/UI/UIController/ComposableContextController.cs:40) Xenonauts.Common.Xenopedia.ComposableXenopediaEntryController.OnSetTarget () (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Screens/Common/Xenopedia/ComposableXenopediaEntryController.cs:15) Common.UI.DataStructures.UIController`1[T].SetTarget (.T target) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/UI/UIController/UIController.cs:118) Common.UI.DataStructures.AUILayoutController`2[Xenonauts.Common.Xenopedia.ComposableXenopediaEntryController,Artitas.Entity].Add (Artitas.Entity target, Boolean animate) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/UI/UIController/AUILayoutController.cs:164) UnityEngine.Debug:LogException(Exception) user_x55crash-5.json
  3. I think it'd be an improvement mostly because of how it affects player perception. I did very well in the Intel Hub, grabbed over 20 data sticks so I think I started with 42% cleaner network progress. So if Cells showed up at 50, I'd still see them after only a week. But even a short delay conveys a sense of, hey look, here's the next level of the Cleaner story, it's probably more difficult. When the Cells pop up right after you do the Intel Hub, the feeling it invokes is more like, okay, you did that mission, now go here. And that's the wrong feeling because you're not meant to tackle the Cells with Sergeants and ballistics. Besides, it'd make more narrative sense at 50% - the Xenonaut organisation should need at least a bit of time with the captured data to figure out how the Cleaner cells work and where they are exactly.
  4. I went with Veteran but with enabled health indicators because they help me give better feedback. I'm not saying the mission is too hard in itself - it's a challenge but it's a fine mission that rewards speed. The problem seems to be that it appears too early. When a mission appears, I assume that it's somewhat appropriate for what I have at the time. But the Cells appear so early they could be your third tactical mission and then you're on starting equipment with little-experienced soldiers, and then it's too hard. Depending on what others think, a reduction in enemy count or reinforce rate may be warranted, but my suggestion would be to make the Cells show up when your Cleaner network progress hits 50%, just to delay that initial appearance a bit.
  5. The autopsy shows up after the first mission where you encounter this anyway, doesn't it? I don't know if the ability itself is fine but there's definitely a problem with how it's being conveyed. Perhaps a text change would suffice, using different text for this ability than when aliens do psi attacks on their turn. Instead of "Soldier has been mesmerized", a more explicit "After missing the shot, Soldier gets mesmerized by the Psyon's gaze", which at least strongly hints as to what just happened.
  6. After a few missions, I'm finding burst fire from rifles to be very underpowered. I would expect it to be an effective tool if a rifleman closes in to within some 3 tiles of an enemy, but as it is, firing a burst is nearly suicidal. It remains inaccurate at such close ranges so you will not score a kill, and it also doesn't do enough suppression to suppress. You'll use up your TUs while scoring just one hit, if any, and your soldier is screwed. Burst should have a defined role - I think it would work well as an "oh crap" reliable short-range suppressor but anything really. The Cleaner Cell missions feel like a massive trap. I don't know if it was randomness but I got the cells revealed early - the Intelligence Hub spawned before I shot down the first UFO, so I went there, got tons of intel, revealed the cells. The intelligence hub is not too hard, enemies have no armour mostly and you have time until reinforcements arrive. Then the Cells are revealed right after, which gives you the impression you may go after them, but they're much, much harder than the Intel Hub or early UFO crashes. All Cleaners have 15 armour, you have five or six turns until they turn into a horde and your objective is to kill a psyon who will mesmerize anyone that misses a shot. It's doable with the right squad of course but the mission appears so early that you expect it to be easier.
  7. Aha. Okay, then perhaps not a bug but the numbers being way wrong - mind control seems rare but every missed shot against a psyon there is a mesmerize.
  8. I am not sure what's going on here exactly but it feels like aliens using psionic attacks as reaction fire of some sort. Here's a starting save from an abduction mission. If my soldier misses a shot then that soldier usually gets mesmerized or even mind controlled straight away. Should be easy to reproduce by playing a turn, perhaps two. auto_groundcombat_turn_1_start-53.json
  9. I am getting a repeatable CTD when I try to fire the smoke launcher of my MARS. Here's where I'm trying to shoot, but it's not just that tile. Exception: [INITIAL CRASH] System.InvalidCastException: A fatal error occurred during Update[] - Cannot cast from source type to destination type. Context: - Process:global::Common.RPG.AbilityEvent - AbilityID: Aimed Shot, Source: GlobalEntity 894 Item - Name:Smoke Launcher, Target: GlobalEntity 8124 - Cannot cast from source type to destination type. at Xenonauts.GroundCombat.Abilities.Shoot.ArcProjectile.ClosestUnobstructedAddress (Address startAddress, Address targetAddress, Xenonauts.GroundCombat.BaseConflict conflict) [0x00029] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Screens\GroundCombat\Factories\Abilities\Shoot\ArcProjectile.cs:318 at Xenonauts.GroundCombat.Abilities.Shoot.ArcProjectile+<Calculate>c__AnonStorey0.<>m__2 (Address a) [0x00021] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Screens\GroundCombat\Factories\Abilities\Shoot\ArcProjectile.cs:158 at (wrapper delegate-invoke) System.Func`2<Common.Boards.Address, Common.Boards.Address>:invoke_Address__this___Address (Common.Boards.Address) at System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[Common.Boards.Address,Common.Boards.Address].MoveNext () [0x00000] in <filename unknown>:0 at System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[Common.Boards.Address,Artitas.Utils.Optional`1[Common.Boards.Address]].MoveNext () [0x00000] in <filename unknown>:0 at System.Linq.Enumerable+<CreateWhereIterator>c__Iterator1D`1[Artitas.Utils.Optional`1[Common.Boards.Address]].MoveNext () [0x00000] in <filename unknown>:0 at System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[Artitas.Utils.Optional`1[Common.Boards.Address],Common.Boards.Address].MoveNext () [0x00000] in <filename unknown>:0 at System.Collections.Generic.List`1[Common.Boards.Address].AddEnumerable (IEnumerable`1 enumerable) [0x0001a] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/List.cs:128 at System.Collections.Generic.List`1[Common.Boards.Address]..ctor (IEnumerable`1 collection) [0x00025] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/List.cs:65 at System.Linq.Enumerable.ToList[Address] (IEnumerable`1 source) [0x00000] in <filename unknown>:0 at Xenonauts.GroundCombat.Abilities.Shoot.ArcProjectile.Calculate () [0x0047f] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Screens\GroundCombat\Factories\Abilities\Shoot\ArcProjectile.cs:160 at Xenonauts.GroundCombat.Abilities.FirearmAbility.CalculateAndQueueShots (Common.RPG.AbilityState state) [0x002d5] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Screens\GroundCombat\Factories\Abilities\FirearmAbility.cs:567 at Common.RPG.EffectDSL`1+<OnStart>c__AnonStorey0[Common.RPG.AbilityState].<>m__0 (Common.RPG.AbilityState state, Common.RPG.LifecycleEffect`1 effect, Status status) [0x00007] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\Gameplay\RPG\Ability\EffectDSL.cs:29 at Common.RPG.DelegateLifecycleEffect`1[Common.RPG.AbilityState].Apply (Common.RPG.AbilityState state, Status status) [0x0000a] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\Gameplay\RPG\Ability\Effects\LifecycleEffect.cs:66 at Common.RPG.AbilityState.Execute (IEvent event) [0x00066] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\Gameplay\RPG\Ability\AbilityState.cs:193 at Common.RPG.AbilitySystem.HandleAbility (Common.RPG.AbilityEvent event) [0x001b0] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\Gameplay\RPG\AbilitySystem.cs:297 at Common.RPG.AbilitySystem.Handle (IEvent trigger) [0x000bf] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\Gameplay\RPG\AbilitySystem.cs:223 at Artitas.DebugProcessStrategy.ProcessEvent (IEvent queuedEvent) [0x001e7] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Artitas\Artitas.Core\Code\World.cs:1043 at Artitas.DefaultProcessStrategy.Process () [0x0003b] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Artitas\Artitas.Core\Code\World.cs:875 at Artitas.DebugProcessStrategy.Process () [0x0000e] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Artitas\Artitas.Core\Code\World.cs:975 at Artitas.World.Process () [0x00015] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Artitas\Artitas.Core\Code\World.cs:688 at Common.Screens.DataStructures.WorldManagedScreen`2[Xenonauts.GameScreens,Common.Screens.DataStructures.IScreenParameters].Update (Single deltaTime) [0x00042] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\Lifecycles\ScreenLifecycle\DataStructures\WorldManagedScreen.cs:52 at Common.Screens.ScreenManager`1[Xenonauts.GameScreens].Update (Single deltaTime) [0x000f9] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Libraries\Common\Code\Lifecycles\ScreenLifecycle\ScreenManager.cs:175 at Xenonauts.XenonautsMain.Update () [0x00139] in F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Screens\XenonautsMain.cs:795 2023-05-18 00:31:49,558 [FATAL] (F:\Jenkins\workspace\X2 (Build)\release-0.78.x\Assets\Code\Screens\XenonautsMain.cs:720) Exception in Unity lifecycle, marked as handled: InvalidCastException: [INITIAL CRASH] - A fatal error occurred during Update[] - Cannot cast from source type to destination type. Context: - Process:global::Common.RPG.AbilityEvent - AbilityID: Aimed Shot, Source: GlobalEntity 894 Item - Name:Smoke Launcher, Target: GlobalEntity 8124 - Cannot cast from source type to destination type. Xenonauts.GroundCombat.Abilities.Shoot.ArcProjectile.ClosestUnobstructedAddress (Address startAddress, Address targetAddress, Xenonauts.GroundCombat.BaseConflict conflict) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Screens/GroundCombat/Factories/Abilities/Shoot/ArcProjectile.cs:318) Xenonauts.GroundCombat.Abilities.Shoot.ArcProjectile+<Calculate>c__AnonStorey0.<>m__2 (Address a) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Screens/GroundCombat/Factories/Abilities/Shoot/ArcProjectile.cs:158) System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[Common.Boards.Address,Common.Boards.Address].MoveNext () System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[Common.Boards.Address,Artitas.Utils.Optional`1[Common.Boards.Address]].MoveNext () System.Linq.Enumerable+<CreateWhereIterator>c__Iterator1D`1[Artitas.Utils.Optional`1[Common.Boards.Address]].MoveNext () System.Linq.Enumerable+<CreateSelectIterator>c__Iterator10`2[Artitas.Utils.Optional`1[Common.Boards.Address],Common.Boards.Address].MoveNext () System.Collections.Generic.List`1[Common.Boards.Address].AddEnumerable (IEnumerable`1 enumerable) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/List.cs:128) System.Collections.Generic.List`1[Common.Boards.Address]..ctor (IEnumerable`1 collection) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/List.cs:65) System.Linq.Enumerable.ToList[Address] (IEnumerable`1 source) Xenonauts.GroundCombat.Abilities.Shoot.ArcProjectile.Calculate () (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Screens/GroundCombat/Factories/Abilities/Shoot/ArcProjectile.cs:160) Xenonauts.GroundCombat.Abilities.FirearmAbility.CalculateAndQueueShots (Common.RPG.AbilityState state) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Screens/GroundCombat/Factories/Abilities/FirearmAbility.cs:567) Common.RPG.EffectDSL`1+<OnStart>c__AnonStorey0[Common.RPG.AbilityState].<>m__0 (Common.RPG.AbilityState state, Common.RPG.LifecycleEffect`1 effect, Status status) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/Gameplay/RPG/Ability/EffectDSL.cs:29) Common.RPG.DelegateLifecycleEffect`1[Common.RPG.AbilityState].Apply (Common.RPG.AbilityState state, Status status) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/Gameplay/RPG/Ability/Effects/LifecycleEffect.cs:66) Common.RPG.AbilityState.Execute (IEvent event) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/Gameplay/RPG/Ability/AbilityState.cs:193) Common.RPG.AbilitySystem.HandleAbility (Common.RPG.AbilityEvent event) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/Gameplay/RPG/AbilitySystem.cs:297) Common.RPG.AbilitySystem.Handle (IEvent trigger) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/Gameplay/RPG/AbilitySystem.cs:223) Artitas.DebugProcessStrategy.ProcessEvent (IEvent queuedEvent) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Artitas/Artitas.Core/Code/World.cs:1043) Artitas.DefaultProcessStrategy.Process () (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Artitas/Artitas.Core/Code/World.cs:875) Artitas.DebugProcessStrategy.Process () (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Artitas/Artitas.Core/Code/World.cs:975) Artitas.World.Process () (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Artitas/Artitas.Core/Code/World.cs:688) Common.Screens.DataStructures.WorldManagedScreen`2[Xenonauts.GameScreens,Common.Screens.DataStructures.IScreenParameters].Update (Single deltaTime) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/Lifecycles/ScreenLifecycle/DataStructures/WorldManagedScreen.cs:52) Common.Screens.ScreenManager`1[Xenonauts.GameScreens].Update (Single deltaTime) (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Libraries/Common/Code/Lifecycles/ScreenLifecycle/ScreenManager.cs:175) Xenonauts.XenonautsMain.Update () (at F:/Jenkins/workspace/X2 (Build)/release-0.78.x/Assets/Code/Screens/XenonautsMain.cs:795) UnityEngine.Debug:LogException(Exception) user_smoke-1.json
  10. Save upload should be working again @Emily_F
  11. The Vest slot sounds fun with the tradeoffs it brings into the game, as currently soldiers of sufficient strength can fill their backpack and carry way too much. Though I do enjoy the belt/backpack distinction where belt items are quicker to access. What about carrying out wounded soldiers (or captured aliens / items) though? A somewhat uncommon but very cool situation is if you carry a fallen comrade back to the dropship, I've used that in the Cleaner Intelligence Hub to successfully rescue a downed soldier. I hope that system doesn't go away.
  12. Yes, and that's exactly why X:CE ended up with (semi-)random maps eventually. For long-term replay value, you simply need too many maps for manual creation to be viable. Randomized maps are the only way to achieve that. Even limited randomisation, such as replacing buildings or rotating pre-defined square submaps adds massive value. This kind of game is at its best when you cannot predict what's going to happen and rotating a grocery store 180 degrees is a significant change because suddenly the lines of sight and fire are all different. So I firmly believe that X2, like any xcom-style game, needs 30-40 quality map templates that are then randomised at runtime, giving you thousands of possible maps. With purely static maps, you'd need a team with several map designers working on maps for 6+ months to provide a decent level of variety. And for several biomes, procedural maps have no in-game disadvantage I can think of. Forests, jungles, deserts and polar areas don't follow much logic, they can have any layout and the huts / cabins / vehicles, if any, can be more or less anywhere. Whatever mistakes could happen are certainly less counter-immersive than me recognising the specific jungle map right away so I remember where the impenetrable trees are.
  13. Legal issues would be dealing with Unity licenses and commercial plugins I assume? I loved your X1 maps @Skitso and I'd certainly be happy to help with technical issues for 3rd-party mapping after the Early Access builds, if there's something I can do to help that. I realise now I hadn't even mentioned map variety in my V24 feedback - this is because I had assumed (and still assume) that the lack of map variety is a known problem that will be addressed. I'm sure there will be more static maps but my assumption was also that procedural maps would be used to some extent.
  14. I played V24 to V24.6. Wasn't able to get to the time limit but after day 200 I was definitely playing on the same map, like the lumber yard, for the third time in the campaign. The maps are great. But I'm pretty sure I've seen all of them, at least on some biomes, there are a few maps I am very familiar with by now and I haven't even been able to get to the endgame yet.
  15. This is a personal design choice of course but I really disagree with this one. Map variety (the lack thereof) was one of the biggest issues in X1 as originally released. It's a major issue in X2 now, even though more maps will surely come. But even now in X2 (and I haven't played that much), I know what the entire map is like on turn 1. Oh, terror mission and I walk out in front of a gas station? Okay, that's the one with a restaurant on the next block and the roof of the grocery store that offers great firing lines. Woods map with one car in front and a workshop to the right of the dropship? That's the lumber yard map, trains up in the corner provide good cover and another workshop building on the opposite end is tricky to clear. X1 was the same initially, I knew the farm and industrial maps like the back of my hand. The problem with hand-crafted maps is that they take a lot of time to create and you need many to get the replay value up. Xcom-style games are very replayable but that replayability requires map variety. And it's not easily addressed by adding another two maps per biome, you need an extra dozen maps per biome to make any difference. To me, the possibility of "every building is an office" sounds great! Why couldn't I have one fight in a dense office tower district? I would consider the solution that X:CE adopted. In X:CE, there are the base game maps, the wonderful community-created static maps, but also random (actually procedural) maps. The key being, random maps are only picked when there are no other maps to choose from, there's also a repeat-tracking system (it's actually a bit probabilistic IIRC but that's details). With that, map repetition is not a thing in X:CE, you're very unlikely to encounter any repeats within a single campaign. Procedural forest/desert/arctic maps work wonderfully. Yes, the procedural maps can suffer from illogical placement in urban areas and it's visible with examples like a gas station with no entrance as you mention. But I find that to be a far, far lesser violation of my immersion than heading to the third terror mission in the same city block, where I blow up the same gas station again before turning to aliens in the same diner as last time. By the way, Firaxis learned this as well. Their first Xcom had static maps, which may have had a minimal degree of randomization with how cover was placed. That was consistently pointed out as one of the game's main weaknesses. Their Xcom 2 went for procedural generation, and that was very well received despite the occasional weird placement of stuff.
×
×
  • Create New...