• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

Sobisonator

Imperatrix: Victoria lead dev
78 Badges
Jun 19, 2011
423
1.203
  • Europa Universalis IV: Pre-order
  • Europa Universalis IV: Res Publica
  • Victoria: Revolutions
  • Rome Gold
  • Semper Fi
  • Supreme Ruler 2020
  • Supreme Ruler: Cold War
  • Victoria 2: A House Divided
  • Victoria 2: Heart of Darkness
  • Rome: Vae Victis
  • Sengoku
  • Stellaris: Apocalypse
  • Europa Universalis IV: Cradle of Civilization
  • Cities: Skylines - After Dark
  • Europa Universalis IV: Cossacks
  • Europa Universalis IV: Mare Nostrum
  • Europa Universalis IV: Third Rome
  • Knights of Honor
  • Stellaris - Path to Destruction bundle
  • Crusader Kings II: Monks and Mystics
  • Europa Universalis III
  • Crusader Kings II: Charlemagne
  • Crusader Kings II: Legacy of Rome
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: Rajas of India
  • Crusader Kings II: The Republic
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: Sword of Islam
  • Darkest Hour
  • Heir to the Throne
  • Europa Universalis III Complete
  • Crusader Kings II
  • Hearts of Iron III
  • For the Motherland
  • For The Glory
  • Europa Universalis IV: Wealth of Nations
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Art of War
  • Divine Wind
  • Europa Universalis IV: Dharma
  • Hearts of Iron IV: Expansion Pass
  • Age of Wonders: Planetfall
  • Europa Universalis 4: Emperor
  • Imperator: Rome
  • Age of Wonders III
  • Hearts of Iron IV: Expansion Pass
  • Stellaris: Synthetic Dawn
  • Hearts of Iron IV: Death or Dishonor
  • Prison Architect
This is an appeal to the development team from the modders.

Modding Imperator can be a very rewarding pastime, and there is a lively community of dedicated modders working on mods from UI changes to total overhauls. There is a problem, however, in resolving CTDs: while some basic CTDs can be resolved through the error log, the log is inconsistent at best and downright opaque at the worst of times, to the extent that modders can experience repeatable CTDs with a totally empty error log.

This is problematic for modding; it's a waste of time and can make modding off-putting when indecipherable CTDs occur. They may be repeatable, but sometimes the cause is in a piece of code you would never think of looking at based on the in-game actions needed to replicate a crash. This issue gets worse the more complicated the mod; CTDs are also a major issue when starting out, making starting afresh for new modders obstructively difficult without excessive handholding from more experienced modders. Of course, we're all very happy as a community to help out anyone who is starting out, but we also don't always know what is causing crashes, and for new people it is often easier to just give up than to ask again and again for help when the solution is so obscure.

We really want to continue making mods for the game, but more ambitious mods won't be possible without access to the beta version of the game which outputs full tracebacks, allowing the cause of CTDs to be immediately identified. Some modders were given access to this branch before the game launched, and some of them still have it. At times, I have asked these modders to run my mod for me and within minutes of getting a report back the crash is easily solved. This isn't a sustainable way of working, though - it wastes everyone's time and depends on files being trafficked back and forth when everyone could simply have access to these tools.

Here is an example in the difference of tracebacks below:

Regular version (unusable):
Code:
Application: Imperator
Version: 1.5.3
Date/Time: 2020-09-09 23:26:50

Unhandled Exception C0000005 (EXCEPTION_ACCESS_VIOLATION) at address 0x00007FF657296D9A

Stack Trace:
  1    imperator.exe            PHYSFS_swapULE64 (+ 12240234)
  2    imperator.exe            SDL_StopTextInput (+ 794753)
  3    imperator.exe            PHYSFS_swapULE64 (+ 14614082)
  4    imperator.exe            PHYSFS_swapULE64 (+ 14614297)
  5    imperator.exe            PHYSFS_swapULE64 (+ 14614297)
  6    imperator.exe            PHYSFS_swapULE64 (+ 14614297)
  7    imperator.exe            PHYSFS_swapULE64 (+ 14614297)
  8    imperator.exe            PHYSFS_swapULE64 (+ 14614297)
  9    imperator.exe            PHYSFS_swapULE64 (+ 14614297)
  10   imperator.exe            PHYSFS_swapULE64 (+ 14614297)
  11   imperator.exe            PHYSFS_swapULE64 (+ 14614297)
  12   imperator.exe            PHYSFS_swapULE64 (+ 14613192)
  13   imperator.exe            PHYSFS_swapULE64 (+ 14566862)
  14   imperator.exe            PHYSFS_swapULE64 (+ 14561259)
  15   imperator.exe            SDL_StopTextInput (+ 1939123)
  16   imperator.exe            SDL_StopTextInput (+ 1938770)
  17   imperator.exe            SDL_StopTextInput (+ 2218748)
  18   imperator.exe            SDL_StopTextInput (+ 2219815)
  19   imperator.exe            SDL_StopTextInput (+ 2219881)
  20   imperator.exe            SDL_DYNAPI_entry (+ 1640316)
  21   KERNEL32.DLL             BaseThreadInitThunk (+ 20)
  22   ntdll.dll                RtlUserThreadStart (+ 33)
  23   ntdll.dll                RtlUserThreadStart (+ 33)

Beta version (immediately indicates cause of the problem):
Code:
Application: Sulla
Version: 1.5.2-beta
Date/Time: 2020-08-18 20:33:59

Unhandled Exception C0000005 (EXCEPTION_ACCESS_VIOLATION) at address 0x00007FF7D67AA1F9

Stack Trace:
  1    imperator_D_opt.exe      NJominiMap::CMapObjectManager::CCell::AddTempObject (jomini_mapobject_manager.cpp: 747)
  2    imperator_D_opt.exe      NJominiMap::CMapObjectManager::SpawnTempObject (jomini_mapobject_manager.cpp: 3008)
  3    imperator_D_opt.exe      NJominiMap::CMapObjectManager::AddTempObject (jomini_mapobject_manager.cpp: 2825)
  4    imperator_D_opt.exe      PdxMapEditor::CMapObjectPainterTool::UpdateMeshes (map_object_painter.cpp: 373)
  5    imperator_D_opt.exe      PdxMapEditor::CMapObjectPainterTool::FinishGenerateTask (map_object_painter.cpp: 272)
  6    imperator_D_opt.exe      PdxMapEditor::CMapObjectPainterTool::Setup (map_object_painter.cpp: 525)
  7    imperator_D_opt.exe      PdxMapEditor::CBaseTool::Init (mapeditor_brush.cpp: 314)
  8    imperator_D_opt.exe      PdxMapEditor::CMapObjectPainterMode::Setup (map_object_painter.cpp: 967)
  9    imperator_D_opt.exe      CPdxMapEditor::Init (mapeditor.cpp: 473)
  10   imperator_D_opt.exe      CPdxMapEditorIdler::SetAsCurrentIdler (mapeditor_idler.cpp: 288)
  11   imperator_D_opt.exe      CApplication::UpdateOneFrame (application.cpp: 594)
  12   imperator_D_opt.exe      CApplication::Update (application.cpp: 736)
  13   imperator_D_opt.exe      CPdxLegacyApplicationRunner::Update (pdx_legacy_application_runner.cpp: 23)
  14   imperator_D_opt.exe      `anonymous namespace'::UpdateRunners (pdx_application.cpp: 41)
  15   imperator_D_opt.exe      CPdxApplication::Run (pdx_application.cpp: 94)
  16   imperator_D_opt.exe      SDL_main (main.cpp: 482)
  17   imperator_D_opt.exe      main_getcmdline (sdl_windows_main.c: 175)
  18   imperator_D_opt.exe      WinMain (sdl_windows_main.c: 205)
  19   imperator_D_opt.exe      invoke_main (exe_common.inl: 99)
  20   imperator_D_opt.exe      __scrt_common_main_seh (exe_common.inl: 253)
  21   imperator_D_opt.exe      __scrt_common_main (exe_common.inl: 296)
  22   imperator_D_opt.exe      WinMainCRTStartup (exe_winmain.cpp: 17)
  23   KERNEL32.DLL             BaseThreadInitThunk (+ 20)
  24   ntdll.dll                RtlUserThreadStart (+ 33)
  25   ntdll.dll                RtlUserThreadStart (+ 33)

In the beta crashlog above, it is obvious that the cause was due to an exception in the mapobject manager. In this example, we quickly triaged map_object_data files and fixed the crash in minutes.
 
  • 26
  • 17Like
  • 3
Reactions:
I strongly agree with this, modding community should definitely get access to beta version, so we will be able to recognize the cause of errors asap
 
  • 4
  • 1Like
Reactions:
Agreed. The modding scene for I:R could use some love and support, and this could save people a lot of time currently wasted on trying to fix errors. Plus, it could in turn help the game by getting a more active modding scene.
 
  • 4
  • 3Like
Reactions:
Yes please! This could save a lot of frustration and let us dedicate more time to making and breaking other parts of the game.
 
  • 1
  • 1Like
Reactions:
With the Imperator 2.0 patch coming up in the near future, I really want to emphasise to the developers and community engagement team the importance of this to the modding community. I hope you can reach out to us about making this a possibility, as it was a fantastic thing you did for a number of modders before the official release of the game and something we hope can continue as a fantastic support measure for us.
 
  • 4
  • 2Like
Reactions:
Happy Modders = Happy Gamers = Happy Sales!
 
  • 2
  • 1Like
Reactions:
I hope version 2.0 can take this into account, especially as the game gets updated and becomes more complex, it becomes even more crucial modders van figure out what is causing errors. Especially related to the setup/main/default.txt file (which is an absolute mess in every way).

By all means, the game has less of an error logger and more of a spelling checker when it comes to error reporting.
 
Last edited:
  • 1Like
Reactions:
With the announcement of the new patch, so comes the time for us modders to prepare for compatibility patching! This is a time when access to a detailed stack trace will save countless hours of trial and error to bring mods, ranging from the simple to the complex, to 2.0

I must clarify that it is not access to the beta itself that we need - although this is currently the only way I am aware that a useful stack trace can be generated by Imperator - but if the stack trace could be made a feature of running the game with either the debug_mode or develop startup options, the lacuna in Imperator's modding support would be met just as well.
 
  • 5
  • 3Like
Reactions:
With the announcement of the new patch, so comes the time for us modders to prepare for compatibility patching! This is a time when access to a detailed stack trace will save countless hours of trial and error to bring mods, ranging from the simple to the complex, to 2.0

I must clarify that it is not access to the beta itself that we need - although this is currently the only way I am aware that a useful stack trace can be generated by Imperator - but if the stack trace could be made a feature of running the game with either the debug_mode or develop startup options, the lacuna in Imperator's modding support would be met just as well.
Would there be a reason why they dont dont want to release some sort of beta version for modders? How would they make sure that it is only distributed to modders and not just people who want to get their hands on it early?

I fully support this btw but I think we should think/talk about how this would practically work
 
  • 2
  • 1Like
Reactions:
Would there be a reason why they dont dont want to release some sort of beta version for modders? How would they make sure that it is only distributed to modders and not just people who want to get their hands on it early?

I fully support this btw but I think we should think/talk about how this would practically work
You make a good point Robska, so this is why I am keen to emphasise that it's not the beta we need, but just some way of printing the stack trace to our error logs. Currently the only way to do that is by running the beta version, which means we have to pester certain people who do have the beta to run the game for us (a waste of everyone's time) - but it doesn't have to be the only way..

As I suggested, could this be toggled by simply running the game in -develop or -debug_mode?
 
  • 1
Reactions:
Unfortunately I don't think having to sign an NDA is a proportionate tradeoff for your everyday small-time modder to get access to a crash log that's already there :D The solution should be one that makes modding more accessible to everyone, not one that creates more overhead for Paradox and modders alike.
 
  • 1Like
Reactions:
You make a good point Robska, so this is why I am keen to emphasise that it's not the beta we need, but just some way of printing the stack trace to our error logs. Currently the only way to do that is by running the beta version, which means we have to pester certain people who do have the beta to run the game for us (a waste of everyone's time) - but it doesn't have to be the only way..

As I suggested, could this be toggled by simply running the game in -develop or -debug_mode?
Ah I see, that would be the ultimate solution indeed. Best for all parties involved and shouldnt be too hard to implement. I know they got a whole bunch of others things that demand their attention right now but PDX dont forget about us modders ;)
 
  • 1
  • 1Like
Reactions:
I hope that as the 2.xx patch becomes more stable, Paradox can help the modding community with this. Especially without validation tools, time is wasted and new modders (of which there are now happily many more since 2.0 dropped!!!) will continue to struggle
 
  • 3Like
Reactions:
bump, this should be done
it would be a big quality of life improvement and make people more invested into imperator, the mods would really help the playerbase
I agree.
 
We've seen many new and returning modders on the co-op hit brick walls recently, with frustrating crashes as they try to set up their mods and no information as to how they are fixed.

We are doing what we can to help the community, and the wiki needs some work - that's on us. But I continue to hope we can get some engagement on this stack trace issue.
 
  • 2Like
  • 1
Reactions: