Git Product home page Git Product logo

dv-mapify's People

Contributors

insprill avatar t0stiman avatar whistlewiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

whistlewiz sylae

dv-mapify's Issues

Game freezes when reloading map

  1. start session with a Mapify map
  2. return to the main menu
  3. start the same session again (without restarting the game)
  4. the game will freeze at "waiting for streaming data to finish loading", 86%

afbeelding

Player.log

Custom Passenger Jobs sign placement

When setting up a station with passenger tracks, there should be a way to define where Passenger Jobs will place its station signs. Currently, no signs will be generated on custom maps.

Streaming scene not loaded at high y-values

I noticed that ySize cannot be 0 or it locks the y position to 0 in the Streamer class, which causes game objects in the Streaming scene to not be loaded unless at very low y values. I experimented with adding ySize to the SceneSplitData class, and setting it to chunkSize like xSize and zSize are in the SceneSplitter class, which seemed to work well. I didn't want to mess with UMM, so I didn't test it with the latest changes, though. Sorry if it has already been fixed!

Job booklets spawn under vanilla stations

the cars for the jobs spawn, but the booklets don't, I've tried moving the stations up and there's no booklets under them either, tried using a box collider and it didn't spawn them either.

I am using the prefab station, and they don't come back in the lost and found either.

Custom buffer stops

Map makers should be able to create custom buffer stops, with custom models, and custom break forces.

Load maps from bundled zip

If a .zip file is in the Maps directory and it contains the mapInfo.json file, Mapify should be able to decompress it in the Maps folder and move the original .zip to the system trash.

This will simplify manual map installation and reduce the support needed from people incorrectly unpacking maps.

NRE when validating without Terrain Tools

NullReferenceException: Object reference not set to an instance of an object
MapifyEditor.Export.Validators.TerrainSceneValidator+<>c.<Validate>b__0_1 (UnityEngine.Component comp) (at <6c995e8150fa4940ac631d120153741d>:0)
System.Linq.Enumerable+WhereArrayIterator`1[TSource].ToArray () (at <351e49e2a5bf4fd6beabb458ce2255f3>:0)
System.Linq.Enumerable.ToArray[TSource] (System.Collections.Generic.IEnumerable`1[T] source) (at <351e49e2a5bf4fd6beabb458ce2255f3>:0)
MapifyEditor.Export.Validators.TerrainSceneValidator+<Validate>d__0.MoveNext () (at <6c995e8150fa4940ac631d120153741d>:0)
Mapify.Editor.Utils.Extensions.ToList[T] (System.Collections.Generic.IEnumerator`1[T] e) (at <6c995e8150fa4940ac631d120153741d>:0)
Mapify.Editor.Validators.Validator+<Validate>d__3.MoveNext () (at <6c995e8150fa4940ac631d120153741d>:0)
UnityEngine.Debug:LogException(Exception)
Mapify.Editor.Validators.<Validate>d__3:MoveNext()
Mapify.Editor.Utils.Extensions:ToList(IEnumerator`1)
Mapify.Editor.MapValidationGui:OpenAndValidate()
Mapify.Editor.MapValidationGui:OpenAndValidate(MenuCommand)

The default map sometimes loads when a custom one should

When i eventually get to load up my custom maps in " Career Mode" the in game map uses the default DV map as-well, and my stations aren't visible. Any ideas on how to fix this one?

Also i cant get jobs to spawn, even when i methodically set up my stations for jobs inbound and outbound.

Cheers.

Custom track/ballast textures

Each track component should have an override material for rails and ballast. This would most likely need to piggyback off #3's RailwayMeshGenerator patch.

Create bridges

Add the ability to create tracks with bridges, like the ones in the base game or with a custom prefab.

Create tunnels

Add the ability to create tracks with tunnels, like the ones in the base game or with a custom prefab.

Nexus Release

Hi, is it possible for you to release it to Nexus?

Don't allow switch curves/points to be modified

Using our custom editor scripts for Bezier Curves/Points, we shouldn't allow the user to move them individually if they're the child of a switch.

Switches aren't modifiable anyways, and doing so will cause issues as the curves aren't persisted at runtime.

Track laying

As proven in 5a16da3, the ability to lay track at runtime, similar to Railroads Online, is possible. This opens up the possibility of creating maps where the player must lay all the trackage required to get from station to station. In practice, this could look something along the lines of the following.

When players want to place trackage, they get the comms remote, and select "Build Track". They would then be able to scroll through the different types of tracks to place (e.g. track, switches, turntables, buffer stops, etc). Once selected, the player will get a live preview of where the track will be placed using a simple ray trace straight out from the camera. For trackage like turntables and switches, simply clicking again with the remote will place it. For tracks, clicking with the remote will mark the start of the spline, and the player will then get a live preview of the entire track from the starting point, to where they're currently looking. To adjust the points of the spline, there can be customizable keybindings in the mods settings menu. To ensure tracks connect properly, if the live preview is within a meter or two of another piece of track, it'll snap to it.

After a piece of track has been laid, there will be another mode on the comms remote to assign it a purpose for job generation. This will allow players to build their own yards in industries.

Finally, there will be another mode to delete pieces of track.

Low framerate in editor with many tracks

When you have lots of tracks in the Railway scene, the framerate of the Unity Editor 'Scene' window drops so much that the window isn't really useable anymore. For example, on my test map, the framerate drops from 220 to 3 FPS when I load the Railway scene.

afbeelding

@WhistleWiz said on Discord:

About the track drawing, I tried implementing a certain optimisation, but unfortunately it seems the lines themselves are to blame. You'd need to change the library itself. I recommend disabling each yard after being done with it, just so they don't hog performance.
As for the rest, I already added a tool that can merge multiple tracks into a single one, which improves performance a bit. The game uses a single track object for everything between 2 switches basically.

Another problem

Another problem i encountered :
20231216221134_1

This is a new one, any clues how to fix?

Cheers

Improve clean export folder UX

Currently, when we export the map from Unity, the old export of the map gets deleted and a full export of the map is done. If the exporter would instead only overwrite the parts of the map that have changed, the export could be much faster on a large map.

For example, if one only changes the position of a piece of track, there is no need to export the meshes or materials again; those have not changed.

Add .meta files from the scripts to the PackageBuilder project.

Currently, building a package locally creates new .meta files for BezierCurves.dll and MapifyEditor.dll, which breaks compatibility with any other build of Mapify. Including those files (and the .meta of the folder they're contained in) would fix unity's detection of the scripts.

image image

Ability to toggle ballast and sleepers per-track

The Track component should have two boolean values, one for "Generate Ballast" and one for "Generate Sleepers".

This would require patching the RailwayMeshGenerator and doing some trickery to skip rendering.

Show editor warning if Unity version is incorrect

If Mapify is imported into a project that's using an incorrect version of Unity, it should show a very clear warning to the user, along with a link to the documentation on installing the correct version.

Caboose/Handcar Garages

At the minimum, there should be two prefabs, one for the caboose garage, and one for the handcar garage.

With an ideal implementation, these garages would be able to support any vehicle and have custom buildings and keys for purchase.

Procedural schematic maps

When loading a map at runtime, it should dynamically modify the schematic booklet with the existing stations, similar to how maps are drawn.

Procedural catenaries

The MapInfo component should have a field for a catenary pole prefab, two values for the upper/lower anchor point of the wires, and the spacing of the poles. Each track would then have a toggle for whether catenaries are generated on them, and if they are, the poles and wires will be generated either at build time in the editor or at runtime. The spacing of the poles would need to be aware of connected tracks to ensure consistent spacing.

ArgumentNullException: Value cannot be null.

After updating to v0.4.0 I get this on the main menu:

afbeelding

In Player.Log:

Uploading Crash Report
ArgumentNullException: Value cannot be null.
Parameter name: source
  at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0000d] in <351e49e2a5bf4fd6beabb458ce2255f3>:0 
  at Mapify.Patches.ContinueLoadNewControllerSingle_RefreshInterface_Patch.CreateSelector (DV.UI.PresetEditors.ContinueLoadNewControllerSingle __instance) [0x0009b] in <113751d0832d422b9454a0c86f697fd8>:0 
  at Mapify.Patches.ContinueLoadNewControllerSingle_RefreshInterface_Patch.Postfix (DV.UI.PresetEditors.ContinueLoadNewControllerSingle __instance) [0x0000f] in <113751d0832d422b9454a0c86f697fd8>:0 
  at (wrapper dynamic-method) DV.UI.PresetEditors.ContinueLoadNewControllerSingle.DV.UI.PresetEditors.ContinueLoadNewControllerSingle.RefreshData_Patch1(DV.UI.PresetEditors.ContinueLoadNewControllerSingle)
  at DV.UI.PresetEditors.ContinueLoadNewControllerSingle.SetProvider (DV.UI.AUserProfileProvider userProfileProvider, DV.UI.AScenarioProvider scenariosProvider, System.String gameMode, System.Boolean isVR) [0x00057] in <4ef6b2bd80af45fb939f195516a91d17>:0 
  at DV.UI.PresetEditors.ContinueLoadNewController.SetProvider (DV.UI.AUserProfileProvider userProfileProvider, DV.UI.AScenarioProvider scenariosProvider, System.Boolean isVR) [0x00036] in <4ef6b2bd80af45fb939f195516a91d17>:0 
  at DV.UI.InitialScreenController.SetProvider (DV.UI.AUserProfileProvider userProfileProvider, DV.UI.AScenarioProvider scenariosProvider, System.Boolean isVR) [0x00036] in <4ef6b2bd80af45fb939f195516a91d17>:0 
  at DV.UI.RightPaneController.SetProviders (DV.UI.ASettingsProvider settingsProvider, DV.UI.AUserProfileProvider userProfileProvider, DV.UI.AScenarioProvider scenarioProvider, DV.UI.ABugReportDataProvider bugProvider) [0x000a5] in <4ef6b2bd80af45fb939f195516a91d17>:0 
  at DV.UI.MainMenuController.SetProvider (DV.UI.AMainMenuProvider provider) [0x0003f] in <4ef6b2bd80af45fb939f195516a91d17>:0 
  at (wrapper dynamic-method) DV.UI.MainMenu.DV.UI.MainMenu.Start_Patch1(DV.UI.MainMenu)
 
(Filename: <351e49e2a5bf4fd6beabb458ce2255f3> Line: 0)

UIMenuController proceeding with switching the menu to index 0 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 39)

WorldStreamingInit doesn't implement AllowAutoCreate method, assuming 'false' 
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 39)

I can upload the full log if you need it.

This is with only Mapify installed, no other mods.

in game player spawning issue.

I have a slight issue where after exporting my map and loading it into DV, i seem to constantly fall through the graphics.
I have on the extreme odd occasion been spawned where i wanted, 8/10 times i don't however.
The instructions specify x= 0 , y= 0 z= 0. This i have altered slightly as i have water at the height of 10. So My y= 11.
Which Has made No Difference (most of the time) when i do spawn i appear at one of the corners at the height of y= 11 then fast travel to where i want via the in game map.

I have no idea how to remedy this issue, so please advise if possible.

cheers

This MOD is pretty damn neat, i hope i can get jobs to work for it, also [ Another issue i have " cant locate job id/ job station or warehouse machines" in validation report ]

Animated Scenery/Objects

On my map i have a few objects that are animated, yet in game they don't work.

Should i put them in the streaming assets or game content?

Cheers. :)

Allow BezierPoints to be locked

Locking a point will prevent it from snapping to other points while moving tracks. This will make it much easier to precisely align tracks without fighting the snapping system

Custom turntables

Map makers should have the ability to create fully custom turntables. This would mean custom pits, bridges, and sheds.

This would also need to allow custom turntable sizes. For that to be supported, #3 would need to be implemented first.

Loading gauge visualization

There should be a button, most likely in the Mapify menu, to toggle the visualization of the loading gauge. The loading gauge can be set in the MapInfo object, and would default to the loading gauge of Derail Valley.

Transfer tables

In the same way turntables are created, map makers should be able to create transfer tables. This could be implemented using the existing turntable logic in both Mapify and Derail Valley, with a simple enum type that defines how TurntableRailTrack#RotateToTargetRotation should be overridden.

Image
Image

Overwriting existing release zip doesn't work

Export Map (Release) -> choose an existing zip as target -> this error

IOException: Could not create file "D:\username\Projects\game mods\Derail Valley\map_name\map_name_0.1.0.zip". File already exists.
System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.IO.FileOptions options) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean useAsync) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
(wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,bool)
System.IO.Compression.ZipFile.Open (System.String archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Text.Encoding entryNameEncoding) (at <21010871e8cb4079b5e9593dc3e69066>:0)
System.IO.Compression.ZipFile.DoCreateFromDirectory (System.String sourceDirectoryName, System.String destinationArchiveFileName, System.Nullable`1[T] compressionLevel, System.Boolean includeBaseDirectory, System.Text.Encoding entryNameEncoding) (at <21010871e8cb4079b5e9593dc3e69066>:0)
System.IO.Compression.ZipFile.CreateFromDirectory (System.String sourceDirectoryName, System.String destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, System.Boolean includeBaseDirectory) (at <21010871e8cb4079b5e9593dc3e69066>:0)
Mapify.Editor.MapExporter.ExportRelease (System.String mapName) (at <e14aa3027a56430e9dce86f6b2269b7d>:0)
Mapify.Editor.MapExporter.OpenExportPrompt (System.Boolean releaseMode) (at <e14aa3027a56430e9dce86f6b2269b7d>:0)
Mapify.Editor.ExportMapGui.OnGUI () (at <e14aa3027a56430e9dce86f6b2269b7d>:0)
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at <7105be432fb64891b07085914e6cd5c1>:0)
UnityEditor.HostView.Invoke (System.String methodName) (at <7105be432fb64891b07085914e6cd5c1>:0)
UnityEditor.HostView.InvokeOnGUI (UnityEngine.Rect onGUIPosition, UnityEngine.Rect viewRect) (at <7105be432fb64891b07085914e6cd5c1>:0)
UnityEditor.DockArea.DrawView (UnityEngine.Rect viewRect, UnityEngine.Rect dockAreaRect) (at <7105be432fb64891b07085914e6cd5c1>:0)
UnityEditor.DockArea.OldOnGUI () (at <7105be432fb64891b07085914e6cd5c1>:0)
UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, System.Boolean canAffectFocus) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.IMGUIContainer.SendEventToIMGUI (UnityEngine.UIElements.EventBase evt, System.Boolean canAffectFocus) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.IMGUIContainer.HandleEvent (UnityEngine.UIElements.EventBase evt) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.CallbackEventHandler.HandleEventAtTargetPhase (UnityEngine.UIElements.EventBase evt) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.MouseCaptureDispatchingStrategy.DispatchEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.EventDispatcher.ApplyDispatchingStrategies (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, System.Boolean imguiEventIsInitiallyUsed) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.EventDispatcher.ProcessEventQueue () (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.EventDispatcher.OpenGate () (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.EventDispatcherGate.Dispose () (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.EventDispatcher.Dispatch (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, UnityEngine.UIElements.DispatchMode dispatchMode) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.BaseVisualElementPanel.SendEvent (UnityEngine.UIElements.EventBase e, UnityEngine.UIElements.DispatchMode dispatchMode) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.UIElementsUtility.DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.UIElements.UIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at <cd855c76ab374957a4384f21004cd44a>:0)
UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at <c6fb44a03db64bd4a43ea88cab15457f>:0)

Add LocomotiveSpawner to documentation

Hi Insprill, thanks for making this awesome mod!
What would make the mod awesomer is if the documentation would describe how to create locomotive spawn points (with the LocomotiveSpawner script i think?)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.