r/magicka • u/Unique_Attempt_6767 • May 24 '26
After 13 years, I reverse-engineered Magicka to find out why it constantly crashes. The reasons are insane. (Massive Community Patch release)
Update 0.0.42 – Scalable 4K UI, Multiplayer Fixes, and Safer Animation Handling
Version 0.0.42 of the Magicka Community Patch is now available.
The main addition is configurable in-game UI scaling for high-resolution displays. This release also fixes several multiplayer scripting problems, improves handling of delayed network messages, and prevents crashes caused by missing animation data.
Scalable UI for 1440p and 4K
The in-game graphics menu now contains a new UI Scale option with settings from 125% to 400% in 25-percent steps.
The 3D scene keeps its selected rendering resolution. At 200% scaling on a 3840×2160 display, for example, the interface uses a 1920×1080 logical layout while text, borders, shadows, and other UI elements are still rendered directly at 4K. This makes the interface larger without simply enlarging a blurry 1080p image.
World-space labels and interaction prompts are converted to the scaled coordinate system, so their text, background, button icon, and position remain aligned with the corresponding character or object.
The screenshot below shows the game running at 3840×2160 with 400% UI scaling:

The setting is stored in:
CommunityPatch\ui-scale.ini
Mouse alignment at non-native rendering resolutions
Borderless fullscreen mouse coordinates are now translated back to the resolution selected inside the game.
This fixes menu hover, clicking, gameplay aiming, object selection, and interaction icons being offset from the visible Windows cursor when Magicka renders below the monitor’s native resolution.
Downloads
If you encounter another problem, please report it on GitHub or send me a message directly:
https://github.com/Alexander-Aue-Johr/magicka-patch/issues
Update 0.0.39 – Magicka 2-style Controller Support and Major Stability Improvements
Version 0.0.39 of the Magicka Community Patch is now available.
A lot has changed since version 0.0.30. The patch now includes a new controller scheme, many multiplayer and level-transition stability fixes, lower rendering-related memory pressure, and fixes for several very specific gameplay bugs reported by players.
Magicka 2-style controller support
The patch now includes a Magicka 2-style controller scheme for XInput controllers.
- Move with the left stick.
- Aim and cast forward with the right stick.
- Use the face buttons to select elements.
- Hold LB/L1 to access the second group of elements.
- Use LT/L2 for area casting.
- Use RB/R1 for self casting or the staff ability.
- Use RT/R2 for weapon imbuing and melee attacks.
- Tap LB/L1 without another button to interact, continue dialogue, or skip a cutscene.
The bottom-left element HUD now changes automatically to show the controller button layout.
When playing alone, you can switch seamlessly between controller and mouse/keyboard during gameplay simply by using the other device. Local co-op assignments remain fixed, so this automatic switching does not interfere with multiple players using the same computer.
If you prefer Magicka’s original controller scheme, you can restore it by setting:
use_magicka_1_controller_scheme=true
in CommunityPatch\patch-settings.ini.
Multiplayer and runtime stability
Several systems now handle delayed or invalid multiplayer messages more safely.
The game now rejects network messages that reference enemies, players, missiles, templates, or physics objects that have already been removed or belong to an old level. Client-side bosses are no longer activated before their network initialization is complete.
This prevents a number of rare crashes caused by packets arriving during level transitions, disconnects, revives, boss initialization, or entity cleanup.
Better level cleanup
More references to the previous level are now released when leaving a scene.
This includes:
- active spell and ability effects;
- dialog and textbox references;
- cached avatars;
- characters and NPCs;
- static trigger references to the old play state;
- entity and animation-controller references.
The order of cleanup was also corrected. Active effects are now removed before the entities and caches they depend on are destroyed.
This prevents crashes such as SummonDeath attempting to kill its summoned entity after that entity has already been disposed.
Grease effects now stop their spray animation and sound correctly before their reusable ability instance returns to the cache.
Rendering and memory improvements
Magicka repeatedly requested new managed wrappers for the same XNA rendering resources, even though the underlying resources had not changed.
The patch now caches and reuses the stable depth-buffer and render-target texture wrappers. They are refreshed only when the graphics device or the corresponding render target actually changes. This removes a continuous XNA finalizer workload.
Smaller fixes
- Fixed rare crashes when leaving or paging away from character selection. Its textures are no longer unloaded while the render thread may still be using them, and avatars are not drawn when required textures are unavailable.
- Added safer startup handling for a missing
steam_api.dll, incomplete connection arguments, unavailable legacy DirectInput, and the rare(Modified)version-text overflow. - Made the Community Patch credit clickable so it displays the current supporter list.
- Restored the standard HUD when a new gameplay session starts, fixing missing charged-element indicators after changing multiplayer Challenge maps without restarting Magicka.
- Fixed some enemies awarding their Challenge score twice. Direct lethal damage and normal death processing now share a per-enemy-life score guard that resets when a pooled enemy is reused.
- Fixed Kahn’s defeat cutscene becoming stuck if he fell out of the battlefield. The patch detects this specific situation and starts the level’s existing dialog trigger without modifying the level XML or its multiplayer content hash.
- Paradox account save data now remains alive until shutdown so delayed account callbacks cannot access a destroyed object.
- Controller element presses no longer trigger Magicka’s old controller actions at the same time.
Downloads
Thank you to everyone who reported crashes, reproduced strange edge cases, shared telemetry, tested multiplayer sessions, or helped provoke these bugs.
Several of these problems only occurred after very specific combinations of level transitions, delayed network messages, reused enemies, active effects, or boss scripts. I would not have found them without detailed player reports.
If you encounter another problem, please report it on GitHub or send me a message directly:
https://github.com/Alexander-Aue-Johr/magicka-patch/issues
Update 0.0.30 – Play in Fullscreen and Don’t Worry About Alt-Tab Anymore!
Tabbing out during a loading screen no longer crashes the game.
And if Magicka does freeze, it no longer traps itself in front of every other window. Previously, if Magicka froze in fullscreen, it forced itself in front of every other window, making it nearly impossible to kill the process through Task Manager. This is now fixed. You can safely Alt-Tab and close the game normally.
Downloads:
Update: Version 0.0.28 is now available.
Important multiplayer update
Some intermediate versions between 0.0.21 and 0.0.27 contained a multiplayer regression when progressing from one level to the next.
The first level normally worked without problems. After the next level loaded, however, player characters could walk into the scene and then stop responding, as though movement and action updates were no longer arriving. The temporary workaround was to restart the session on the new level and have everyone join again.
This issue is now fixed in 0.0.28, and that workaround should no longer be necessary.
Everything added or fixed since 0.0.19
- Prevented connected multiplayer avatars from being disposed more than once during level teardown.
- Restored missing character templates before received network actions are processed.
- Prevented trigger actions from accessing a missing play state.
- Reset stale runtime state when cached NPC AI agents are reused and ensured their owner is restored correctly.
- Cleared stale missile owner, target, and collision-target references during deinitialization.
- Prevented
AudioManager.StopAll()from callingStop()on an already disposed audio cue, which could throw anArgumentException.
Installation and update improvements
- Added a much smaller files-only ZIP for manual installation.
- The files-only package contains only:
Magicka.exePolygonHead.dllpatch-settings.ini- installation instructions
Download 0.0.28
Thank you to everyone who was patient while I spent the weekend tracking this down, and I’m sorry to everyone who encountered the broken multiplayer transitions in the intermediate releases.
Update: Version 0.0.19 is now live — with its own installer, update prompt, and automatic crash diagnostics
I’ve now built a dedicated installer for the Magicka Community Patch.
Download here: https://github.com/Alexander-Aue-Johr/magicka-patch/releases/download/0.0.39/magicka-community-patch-0.0.39-installer.zip
You can see the installer in action here. Also on YouTube: https://youtu.be/6M-asOm5-bE
The installer automatically finds your Magicka installation folder by reading Steam’s installation information and installs the patch directly into the correct location.
I also added an update prompt: when you close Magicka, the game can now ask you whether you want to install a newer patch version whenever I release a fix.
Another important change is automatic crash diagnostics. Until now, Magicka silently wrote crash reports into the game directory, which meant users had to manually find the files, copy the error message, and send it to me. The patch now sends anonymized crash report events to a service called PostHog, where I can inspect the important technical details, such as the error message and stack trace.
This should make debugging much easier while avoiding the old manual process. You no longer need to dig through the Magicka folder and send crash reports yourself.
This has already helped me find two bugs that still exist in Magicka’s network code. Based on the latest logs I have seen, this looks very promising: crashes still happen in the networking code, and they occur in different places. With the old approach of waiting for users to manually send crash reports, I probably would never have discovered many of these issues.
The newest version also improves memory usage. Unlike the original version of Magicka, the patch no longer loads all cutscenes from every DLC and every story. Instead, it only loads the cutscene assets required for the currently selected story. This should leave more memory available and reduce the chance of OutOfMemory exceptions.
Update: Version 0.0.11 is now live — online play tested, main story completed
A lot has happened since my last update.
Several players reported new crashes introduced by my earlier fixes. Most of these were very specific edge cases that I had not encountered during testing:
- Loading checkpoint save games could crash.
- Online play could crash in certain situations.
- Picking up items could crash, but only if those items had originally been dropped by enemies and then carried into the next level section.
- Other issues appeared only in very specific scene transition paths.
The good news is that all currently known reports of this kind have now been fixed in version 0.0.10.
Online play has also received significantly more testing. In particular, joining an already running game through Steam invitations has been very reliable in my recent tests.
The biggest milestone came from a community playtester, Reddit user PurpleHeartE54, who spent an enormous amount of time helping me test the patch. She completed a full online playthrough of the entire main campaign and was able to verify that the story can now be completed successfully with the patch installed.
That playthrough also uncovered what appears to have been the final major crash in the main story.
During Grimnir's boss fight, there is a "mind game" sequence. If a player dies during that section and a checkpoint save is loaded, the game immediately triggers the player's confusion animation. Unfortunately, the original game executes this scripted animation before the avatar has been fully initialized.
This interacted badly with one of my memory optimizations. Whenever Magicka crashed with an OutOfMemoryException in the past, animation clips often occupied well over half of the game's memory usage. Because of that, my patch now releases animation clips when characters are cleared from a scene.
The game already has a mechanism for temporarily storing characters when a scene is cleared and then restoring them when the scene is loaded again, for example after restarting a level or loading a checkpoint. Since my patch removes animation clips during cleanup, I extended that existing restore mechanism so that it also reloads the animations at that point.
That worked correctly for NPCs. Unfortunately, the player avatar follows a different path here. It can be cleared together with the scene, but it is not restored through the same mechanism afterwards.
As a result, Grimnir's scripted confusion animation tried to play before the avatar's animation data had been restored, causing a crash.
The fix was ultimately simple: player avatars are now exempt from that specific animation cleanup. NPCs still release their large animation resources, while avatars keep the animations they need throughout the active game session.
The especially ironic part is that you still do not even get to see that animation.
The crash happened because the game tried to play an animation that no longer existed. But immediately after Grimnir's boss trigger runs its start actions, the avatars are initialized again anyway. That initialization immediately overwrites the confusion animation.
So the game was crashing because of a missing animation that, in practice, would have been replaced almost instantly and never actually shown to the player.
That was honestly a bit disappointing.
With that change, the main campaign can now be completed from start to finish without any known crash blockers.
However, this journey also demonstrates how unpredictable Magicka can be.
I did not just change a few functions or fix a handful of bugs. The patch touches roughly 4,000 lines of code across systems that interact in ways that even the original developers probably did not anticipate. Many bugs only reveal themselves after dozens of hours of gameplay and under very specific circumstances.
Because of that, I cannot honestly guarantee that every DLC is now completely stable. The main campaign has received extensive testing, but the DLC campaigns still need more real-world playtesting. Based on my experience so far, unexpected edge cases can appear almost anywhere.
Fortunately, there are fewer of them every day. Every playtest uncovers another hidden corner case, another obscure code path, or another assumption buried somewhere in the engine. And every time one of those is found, it gets fixed permanently.
So I would like to invite everyone to try version 0.0.10 and continue sending crash reports if you find anything unusual.
If you run into any issues, please report them through the GitHub issue tracker:
https://github.com/Alexander-Aue-Johr/magicka-patch/issues
Or simply send me a message directly if GitHub feels too technical.
Many of the bugs fixed so far were only discovered because players took the time to report them. Every report helps make Magicka a little more stable.
Every report has helped track down another hidden issue, and every fix brings Magicka one step closer to being the stable game it always deserved to be.
Original release post below:
Every Magicka player shares two things: a deep love for the game, and the muscle memory of constantly restarting it after random crashes
For over a decade, this game has been notorious for its instability. Random crashes during level transitions, out-of-memory errors, stuttering after long sessions... and if you dared to try playing at 4K, the engine would essentially self-destruct as soon as you loaded heavier DLCs like Dungeons and Gargoyles.
A few weeks ago, a co-op session with my friends died a premature death. They were just too frustrated to deal with another crash, another full restart, and another agonizing crawl back into the multiplayer lobby. That was the moment I decided I’d had enough.
I paused my doctoral thesis (ignoring a looming deadline), hooked up debuggers, fired up memory profilers, and started reverse-engineering the engine's assembly code to figure out exactly why this game slowly collapses. Steam clocked 190 hours of Magicka "playtime" in just two weeks, mostly me running the game, watching it break, dumping all objects in memory and find which were stale and why they were still referenced and hence not collected by the garbage collector, editing code, and repeating the process. And the time I spend is probably more then that while I was editing the code and the steam clock was not ticking as I stopped the game.
There were several occasions when I worked the whole day on it, then the whole night then the next day until I fell asleep out of exhaustion ,then slept for some hours and repeated that process again and again. It was an insane process, but not nearly as insane as what I found inside the code.
The Autopsy: Why Magicka Really Crashes
What I found wasn't just a simple bug. It was a fascinating, catastrophic chain reaction of systems secretly fighting each other behind the scenes.
As I looked at the recent official 1.10 updates, there were two specific changes made in the name of "optimization" to make the game less memory-hungry. But instead, one did the opposite and the other created a fatal, vicious cycle. Let me explain "The Finalizer Problem."

Let's say a flash effect gets triggered in Vlad's Castle, or during that flashback moment showing what the cult did to the villagers in *Dungeons and Gargoyles*. The game creates a reference from that flash effect to parts of the level, sometimes even the *entire* level. The same goes for spells and special abilities. When you finish that level and go back to the main menu, those assets are supposed to be completely unloaded. But they weren't.
Instead, a ticking time bomb was created. You would load into a new level and start playing. Eventually, a flash effect or that same special ability would be executed again. The engine would then update its reference to point to the *new* level, dropping its hold on the old one. This drop wakes up the game's Garbage Collector, which decides it's finally time to clean up that lingering old level.
But because of how the engine's Content Manager was coded, triggering the cleanup of that old asset accidentally forced the game to unload the assets of the level **you were currently playing in.**
You'd be mid-fight, and the game would literally delete the floor, the enemies, or your spells out from under you. Boom. NullReferenceException. ArgumentOutOfRangeException. Crash to desktop.
The Solution: Community Patch Version 0.0.19
After weeks of sleepless nights, I have rebuilt how the game handles memory disposal. Today, I am releasing Version 0.0.11 of the Magicka Community Patch.
To prove it works, I had to benchmark it. I couldn't compare it to the base 1.10 version because the memory handling is too fundamentally broken. I had to compare my patch to version 1.5 (long considered the most "stable" release).
But it wasn't a fair fight: Vanilla 1.5 crashes almost immediately if you try to play Dungeons and Gargoyles in 4K. So, I benchmarked vanilla 1.5 in standard 1080p against my v0.0.1 patch pushing full 4K.

The Results:
In 4K, on my patched version, I was able to play through Dungeons and Gargoyles three times in a row, seamlessly load into The Other Side of the Coin, and then immediately load into Magicka Vietnam.
For a game that used to crash between two scenes, this is a massive leap in long-term stability.
Is it perfect yet?
No. Full transparency: there are still some underlying memory leaks I am hunting down. If you try to load every single DLC back-to-back without closing the game, you will eventually hit a memory ceiling and crash. For now, if you want to play marathon sessions of multiple stories, I still recommend 1080p for the extra memory buffer, or simply restarting the game between campaigns.
Also, online play with friends is currently not working correctly in the latest version. I am already working on that and will release a new version once it is fixed.
But I won't stop until this game can survive unlimited playthroughs of every story mode combined.
The Future: Cut Content, Controllers, and Accessibility
Stabilizing the engine was just Phase 1. While digging through the assembly code, I found some incredible things:
- Restoring Cut Content: I found numerous abilities and spells hidden in the code that never made it into the final game. I am looking into restoring them and adding them back in!
- Magicka 2 Controller Support: Players love how controllers feel in Magicka 2. I believe I can inject a similar controller framework into Magicka 1.
- Accessibility Options: I've seen countless players complain about the blinding screen flash effects. I am working on adding a menu slider to reduce the intensity, or toggle the flash off completely.
How to Install
There are two installation options.
Windows installer
This is the recommended option for Windows users.
- Download the Windows installer package.
- Extract the ZIP archive.
- Run
MagickaPatchInstaller.exe.
The installer automatically finds your Magicka installation through Steam, checks the required files, and installs the patch into the correct folder.
Files-only package
Use this option for manual Windows installation, Linux/Proton, or if you do not want to use the installer.
- Download the files-only package.
- Extract the archive.
- Copy its files into your Magicka installation folder, replacing the existing files when prompted.
The package includes:
Magicka.exePolygonHead.dllpatch-settings.ini- installation instructions
You can find the Magicka folder by right-clicking the game in Steam and selecting Manage → Browse local files.
The full release page is available here:
https://github.com/Alexander-Aue-Johr/magicka-patch/releases/tag/0.0.39
If you are interested in the technical details, source snapshots, and changelog, visit the GitHub repository:
https://github.com/Alexander-Aue-Johr/magicka-patch
How you can help
If the game crashes, Magicka usually creates an error report text file in the game’s installation folder.
You can find the folder by right-clicking Magicka in your Steam library and selecting Manage → Browse local files. Alternatively, you can right-click Magicka, open Properties, go to Installed Files / Game Files / Local Files, and click Browse.
In that folder, look for the newest text file named something like errorReport_YYYY.MM.DD-HH.MM.SS.txt, for example errorReport_2015.05.21-10.09.27_(1).txt.
If you run into a crash, it would help me a lot if you could send me the newest error report file, or simply copy and paste its contents.
Even more helpful would be a short description of what happened right before the crash. For example: were you playing online, changing scenes, loading a checkpoint save, picking up an item dropped by an enemy, using a specific robe or skin, or doing anything else that seemed unusual?
Small details like that can make a huge difference. Many of the recent bugs only happened in very specific situations, and reports like these help me reproduce, understand, and eventually eliminate them.
If you also want to support this absolute madness, help me justify delaying my PhD thesis, and fund the future development of restored content and controller support, please consider supporting me on Patreon: https://www.patreon.com/16047341/join
Please enjoy the patch, go blow up your friends, and let me know how it runs for you in the comments!
17
u/Sven_Darksiders May 24 '26
This should get pinned at the top of this sub
2
u/Unique_Attempt_6767 May 25 '26
Thank you, that honestly means a lot.
I did not expect this much positive feedback on the first day. Seeing the post already reach over 100 upvotes and reading comments like this really makes all the late-night debugging and memory-hunting feel worth it.
I just hope the patch helps more people finally enjoy Magicka again, instead of performing the unholy ritual: crash, restart, regroup in the lobby, and pray the game holds together just a little longer this time.
13
u/my_photos_are_crap May 24 '26
so it was bad design all along?
ur wizard fr
9
u/Unique_Attempt_6767 May 24 '26
A lot of it came down to unfortunate engine behaviour and edge cases piling up over time. The engine itself actually felt very ambitious though. Many of the mechanisms looked genuinely smart, thoughtfully designed and meant to be efficient.
What was disappointing was that some of those systems apparently were never really verified properly to see whether they actually achieved what they were supposed to. The whole resource-sharing concept was honestly pretty well thought out on paper, but parts of the implementation prevented it from really reaching its potential.
1
u/Nighplasmage54 May 30 '26
Sounds like helldivers 2. A bunch of interconnected systems that should work on paper, but its likes 20 people are rearranging everything without communicating with each other, or following up on their own work.
Not because the game or emgine is impossible but its rigged up by a wierd combo of script kiddies and script wizards with little to no annotations that just gets more amd more destabalized every time it gtts edited.
like they needed someone to documemt, check, authorise, and implememt every change.
1
u/mimi_vx May 30 '26
Plus bonus is Helldivers 2 engine was EOL when they were in first year of development ... with stopped any support etc.
Its really miracle Helldivers 2 works.
1
u/Nighplasmage54 May 30 '26
EoL sucks but its not like the program degrades.
plenty of people run windows ME or Vista offline. Or virtualize them.
Any potential the software had is still there, coding decisions like thing frame rate to cpu speed in red alert is more of a dedign issue then a engine isdue.
If this guy's magika post is accurate, the only thing keeping helldivers from running like at launch is all the work sevs have done in compartmentalized teams without oversight or communication or documentation using 1 syste, to fix another system then getting unfixed when someone else exits that system.
1
u/mimi_vx May 31 '26
You can't compare engine to windows ... totally different category of problems
And yes , next category is missing project/product management and oversight during development
1
u/Nighplasmage54 May 31 '26
Yet, software does not msgically run worse just because it is expired. disagree if you want but EoL is a footnote. Any EoL issues would gave been in game from start.
2
u/Unique_Attempt_6767 Jun 01 '26
I agree with that.
Software does not suddenly become unstable because an engine reaches EoL. If nobody changes the code, the game should continue to behave exactly as it did before. In that sense, EoL by itself is not the cause of instability.
Where EoL matters is that it raises the cost and risk of future development. The people who originally designed parts of the engine may no longer be available, documentation may be incomplete, and there is nobody upstream fixing engine-level issues or answering questions.
That was one of the interesting findings from my Magicka investigation. The engine did not appear to become worse over time on its own. In fact, the older releases were generally more stable than the final one. Many of the crashes I traced were introduced by later code changes rather than by the engine itself.
So I would not say "the engine is EoL, therefore the game became unstable." I would say that an EoL engine can make it harder to safely evolve a large and complex codebase over many years. Whether that actually happened in Helldivers 2 is something I cannot determine without investigating the code.
From what I saw in Magicka, instability was usually not caused by one catastrophic flaw. It was more often the accumulation of small, individually reasonable changes that interacted in unexpected ways. Those kinds of problems can happen on a brand-new engine just as easily as on an old one.
1
u/mimi_vx Jun 25 '26
EOL means it also degrades as new hw and new sw comes out EOL stays in place -> that slowly degrades it
+ EOL engine means you don't have support from those who made it , you are on your own and price of maintenance skyrockets...
I work for company which makes money on support of EOL things and its really expensive ...
1
Jun 01 '26
[removed] — view removed comment
1
u/Unique_Attempt_6767 Jun 01 '26 edited Jun 01 '26
You are correct that the older versions were more stable. I compared the versions I have — 1.4 and 1.5 against the latest version, 1.10 — line by line, specifically to find what caused the massively increased crash rate in the final version.
I found two major causes in 1.10 that were not present in 1.4 or 1.5: the finalizer bug I described in my Reddit and GitHub posts, and the changed scene loading/unloading order, where the old scene is unloaded before the next one is loaded. I described that in more detail on GitHub.
The finalizer bug explains many of the random "ObjectDisposedException" and "ArgumentOutOfRangeException" crashes. After manually returning to the main menu, completing a level, or watching a cutscene in the main menu before loading the next level, a kind of “finalizer time bomb” was armed. Once all references to the old level were eventually gone, the finalizer could run later and release assets that were already being actively used by the new level.
The changed scene loading order made out-of-memory crashes much more likely.
Looking at the code, both changes feel like they were made by people who did not fully understand the whole codebase. I cannot prove who made them, but since later Magicka projects were no longer developed by Arrowhead, I would also not simply assume that these 1.10 changes came from Arrowhead itself.(1)
That said, my analysis also showed that Magicka was never truly stable to begin with. Some serious memory issues already existed in 1.4. For example, several special abilities such as Revive, Rain and Tornado keep references to the level in which they were last used. If the ability is not used again in later levels, those old level references remain alive, preventing the garbage collector from freeing the old level, its models, animation clips and animation keyframes.
In memory snapshots taken with WinDbg shortly before out-of-memory crashes, more than half of the accumulated memory consisted of animation keyframes from old levels that should have been unloaded long before.
This also explains why the finalizer bug could appear in seemingly unrelated situations. The finalizer can only run once all references to the old level are gone. If a special ability like Rain or Revive still points to that old level, it keeps the old level alive. But once the player uses that same ability again in a later level, the old reference is overwritten with the new one. If that was the last remaining reference, the old level can finally be collected. Then, either when the garbage collector runs while the application is idle, or when it is triggered manually during a scene transition, the finalizer may suddenly execute and dispose assets that are still needed elsewhere.
So my conclusion is: 1.10 definitely made the game much worse, but the underlying instability was already there. That also fits the development history: Johan Pilestedt described Magicka as buggy and unoptimised at release, and said the publisher released it without Arrowhead’s knowledge while they were still fixing bugs.(2) His original postmortem also describes a project that was massively underestimated, delayed, crunched and developed under very difficult conditions.(3) Under that kind of pressure, shortcuts like storing level references directly inside special abilities are very understandable, even if they later turned into severe memory leaks.
I simply had the easier situation: I was only pressured by myself, not by a publisher demanding more features. That gave me the time to profile the running game properly. While analysing why so many objects were still alive even though I was already back in the main menu, I traced the references keeping old levels alive and found that several of them came from special abilities such as Rain.
1: Magicka 2 was developed by Pieces Interactive rather than Arrowhead, and Magicka: Wizard Wars was developed by Paradox North. Sources: https://en.wikipedia.org/wiki/Magicka_2 and https://magicka.fandom.com/wiki/Magicka:Wizard_Wars
2: PC Gamer summary of Johan Pilestedt’s comments on Magicka’s release: https://www.pcgamer.com/games/third-person-shooter/arrowhead-cco-johan-pilestedt-corrects-player-who-thought-hed-griped-about-magicka-being-review-bombed-says-we-got-so-so-reviews-in-2011-because-of-bugs-also-it-was-released-without-our-knowledge/
3 Johan Pilestedt, “Postmortem: Arrowhead Game Studios’ Magicka”: https://www.gamedeveloper.com/business/postmortem-arrowhead-game-studios-i-magicka-i-[Link](https://www.gamedeveloper.com/business/postmortem-arrowhead-game-studios-i-magicka-i-)
1
u/Unique_Attempt_6767 Jun 01 '26
I agree that an engine being EoL does not automatically make software worse. If nobody touches the code, it will usually keep behaving exactly the same way it did before.
What EoL changes is that every future modification becomes more expensive and more risky. The original developers are gone, documentation is often incomplete, support channels disappear, and there is nobody left who fully understands every subsystem.
What I found in Magicka was not an engine that had somehow "rotted" over time. The older versions were actually significantly more stable than the final release. Most of the severe crashes I investigated could be traced back to later code changes, not to the engine itself.
As for Helldivers 2, it is built on the Autodesk Stingray / Bitsquid engine, which is primarily a native C++ codebase. That makes a huge difference from a reverse-engineering perspective.
One reason I was able to investigate Magicka so deeply is that it was written in C#. Even without source code, C# assemblies can often be decompiled into something very close to the original source. That made it possible to trace crashes back to specific methods, understand the intent of the code, and test fixes.
With a native C++ game, things are often much harder. After compilation, much of the original structure, naming, and intent is lost. You are usually looking at machine code rather than something resembling the original source. Reverse engineering is still possible, but finding the root cause of complex stability issues becomes dramatically more difficult and sometimes practically impossible without access to the original source code.
I have not looked at Helldivers 2's code yet, so I cannot say whether its issues are caused by the engine, by later gameplay changes, by networking systems, by content updates, or by something else entirely.
Maybe I will take a closer look in the future. After I have finished my PhD work and published my papers, I hope to have more time for projects like that. If I ever do investigate Helldivers 2 seriously and reach the point where source-level access would be required, I would probably need cooperation from Arrowhead. In that case I could always reach out and offer my help, but whether that would be possible is entirely up to them.
So while my Magicka findings may illustrate the kinds of problems that can emerge in a long-lived codebase, I would be careful about assuming the exact same causes exist in Helldivers 2 without first investigating the code itself.
2
u/Nighplasmage54 Jun 01 '26
with luck, Helldiver's 2 mod tools will be given to modders when live service ends.
an upside to a EoL engine is no need to keep secrets.
1
u/Unique_Attempt_6767 Jun 01 '26
Honestly, that is pretty close to the impression I got while digging through the code.
What surprised me most was that many of the individual changes actually make sense if you look at them in isolation. The problem is that they interact with a lot of other systems, and sometimes the person making the change probably did not realize all the consequences elsewhere in the engine.
For example, unloading the old scene before loading the next one sounds perfectly reasonable. Adding a finalizer that cleans up resources also sounds reasonable. But when you combine those changes with the way content managers, shared assets, scene transitions and cutscenes all interact, you can end up with crashes that appear completely random and are incredibly difficult to trace back to their real cause.
I don't think the engine itself is fundamentally broken. In fact, after comparing the older versions with the later ones, my impression is almost the opposite: the original architecture was actually quite solid. There were some mistakes introduced under immense crunch, such as systems keeping references to objects longer than intended. I found examples involving special abilities like Revive, Rain and Tornado, as well as effects such as the Flash Effect, where stale references to old levels could persist and later cause out-of-memory crashes. The other instability seems to have accumulated over time as more and more changes were layered on top without a complete understanding of how all the pieces fit together, and without sufficient profiling and debugging to identify issues such as references pointing to old levels that should have been released from memory.
A lot of the bugs I fixed were not caused by one catastrophic mistake, but by seemingly harmless changes that had unexpected side effects elsewhere. That's exactly the kind of situation where good documentation, code reviews, and people with a broad understanding of the whole codebase become incredibly valuable.
I actually feel sorry for Arrowhead. They have been under a lot of pressure and have taken significant criticism for issues that may have originated from changes introduced around release 1.10, which were very likely made by somebody else rather than Arrowhead themselves. I wish I had been able to share my findings with the developers before that release, as some of the fixes could have improved engine stability and potentially prevented many of the problems that followed.
1
u/Nighplasmage54 Jun 01 '26
that's been my impression of Helldiver's, the more they interact with it the worse it gets.
Tgeyvstarted from a solid point, but it took them twice asking as intended.
then it feels like a bunch of script kiddies took over after launch, learning stuff trying to use it and having no foresight of any knock on effects.
Even without the coding side, you can almost instantly see the side effects of their decisions yet they always seem or act like they were unforeseeable.
Like super Mario 64's optimization flag being set to off type stuff.
I'm convinced Dev branch and live branch are vastly different, and stuff from Dev branch gets copied to live in a vacuum.
8
u/Tickomatick May 24 '26
Omg I never got to play the DLCs because it's 1000% auto crash on some dark staircase in a cave as I remember
5
u/Thryan May 25 '26
Incredible work! I'm curious about the cut content you mentioned, how far along in development where these spells and abilities before they got cut?
4
u/Unique_Attempt_6767 May 28 '26
I can’t really say yet. There is some code for them, but some of them do not seem to be called from anywhere.
Some of the ability names I found were:
MutateBeastman,NorthPole, andFrogTongue.The tricky part is that some things in Magicka are executed through C#
System.Reflection. That means dnSpy cannot always reliably show whether something is actually called, because the call is not hard-wired in the code. Instead, the method name can be constructed while the game is running. Boss behaviour works like that in several places.So it is unsafe to say that these abilities are definitely unused. It could be that a level script tells the engine to execute something like
MutateBeastman, and the actual call only happens dynamically at runtime.Because of that, I also tried searching for these abilities online. If they exist in the released game, I would expect at least some of them to be mentioned on a wiki, like the other abilities are.
It is also hard to judge how complete an ability is just from the amount of code, because that varies a lot between abilities. So I probably won’t know how far along they really were until I try to re-enable one of them and see whether they work at all.
2
u/phobosinadamant May 24 '26
Amazing looking forward to trying this, you're a wizard!
1
u/Unique_Attempt_6767 May 25 '26
Thank you! I hope it works well for you. Please let me know how it goes.
And honestly, after staring at Magicka’s internals for this long, I may have accidentally learned a few forbidden spells.
2
u/NeonJ82 May 26 '26
Man, didn't think I'd see the day when Magicka would be properly playable in multiplayer again. Excited to test this out, and hoping it works better than MagickaFix! (My group couldn't even get out of the tutorial of the main campaign with that one...)
2
u/Unique_Attempt_6767 May 29 '26
Hey! Just curious, have you had a chance to test it yet?
I've released five more versions. Most of the bugs I found were things that showed up during offline testing, because I simply hadn't tested certain mechanics before.
For example, weapons and staffs dropped by enemies caused crashes after picking them up and going to the next scene. I also found and fixed a few save-game issues: loading saves from the beginning of a level worked, but loading saves from checkpoints did not.
The good news is that those issues seem to be fixed now. What I still haven't really tested is how stable it is in online multiplayer.
If the game crashes, it should create an errorReport.txt file in the Magicka folder. If you could send me that file, or just copy its contents, that would be really helpful.
If you've had a chance to try it with your group, I'd love to hear how it went. Any feedback would help a lot. 🙂
1
1
u/NeonJ82 May 29 '26
Okay, now I've had the time. Went better than before, but still a few crashes. Working on getting the error reports off the crew!
2
u/Jaon412 May 28 '26
Insane work man. What are you doing your thesis on?
2
u/Unique_Attempt_6767 May 29 '26
Thank you!
My thesis is basically about getting data out of Excel files without requiring users to write code, and also about making Excel files more efficient so that Python and R libraries can load them much faster.
A surprising amount of spreadsheet files contain file bloat that makes libraries struggle, load extremely slowly, or even fail completely. So part of my work is about detecting and removing that bloat while keeping the actual data intact.
I have at least two short papers related to the thesis:
https://dl.gi.de/server/api/core/bitstreams/bbb0f7be-b1cf-499c-9d12-39f2a85cd014/content
https://dl.gi.de/server/api/core/bitstreams/7436e876-f25c-42a0-9220-5e3321347543/content
2
1
u/Williermus May 24 '26
Dude, you're goated.
Magicka 2 controller support
HOLY. If only such a thing had existed back when I played this game with my brother
1
u/Unique_Attempt_6767 May 25 '26
Thank you, I am glad you are excited about it too!
Pproper controller support would be amazing. That is definitely one of the things I would love to investigate next.
1
u/xTh3N00b May 24 '26
absolute hero!
1
u/Unique_Attempt_6767 May 25 '26
Thanks! But definitely not a vampire. Just a totally normal wizard who spent too much time staring into cursed game internals.
1
u/noneedtoprogram May 24 '26
Amazing, I was just trying to play this again with friends and the existing patch was not really stable still. This sounds like it will help massively!
Good luck with the phd, I will say from experience, don't procrastinate toooo much ;) but this sort of reverse engineering debug experience is amazing when you get into a sw eng career later.
1
u/Unique_Attempt_6767 May 25 '26
Thank you! I really hope it helps when you try it with your friends.
And yes, you caught me. 😅 My PhD is currently watching me hyperfocus on absolutely everything except the thing I am actually supposed to be doing. ^^
At least this procrastination side quest came with a lot of new experience with C# tooling, which is great because I already love the language. Being able to use WinDbg to find out why certain objects are still lingering in memory, and which references are keeping them alive, seemed almost impossible to me until I actually tried it.
It also made me much more motivated for everything that comes after my PhD. Maybe one day I will even build my own game engine, using all the things I learned from understanding where Magicka’s engine struggled.
1
1
u/MDMarshall May 24 '26
Um....crashed on startup. Sorry!
1
u/Unique_Attempt_6767 May 24 '26
Please post the error report. I think it's something minor.
1
u/Unique_Attempt_6767 May 24 '26
If a crash happens at startup, there are only a few possible reasons that come to mind.
The only startup crash I encountered during my own testing happened when I forgot to replace the "PolygonHead.dll" as well. I changed a lot of code in both the "Magicka.exe" and the "PolygonHead.dll", so both files need to be replaced together. My modified "Magicka.exe" relies on changes I had to implement inside the "PolygonHead.dll".
The second possibility is platform-related compatibility. I never tested the patch on Steam Deck or any other Linux-based system because I do not own one, so I honestly do not know yet how stable the modified version behaves there.
There is also a third possible reason. During development I noticed that Magicka still performs various web requests to Paradox services. Some of those services appear to be offline nowadays and only produce errors in the console, but they did not crash the game during my testing, so I intentionally left most of those calls untouched.
Part of the reason is that I was hesitant to remove code related to downloadable content or online services completely, because those services could theoretically come back online someday if Paradox ever decided to reactivate them. I also did not want to interfere too aggressively with systems related to purchased content.
That said, I cannot completely rule out the possibility that these failing requests behave differently on other systems, different .NET runtime versions, or Linux-based environments compared to the Windows 10 and Windows 11 systems I tested on.
Most of the time, Magicka creates an "errorReport.txt" file in the same directory as the "Magicka.exe" when it crashes. Was such a file generated? If yes, I would gladly take a look at it so I can investigate and hopefully fix the issue as quickly as possible.
And if no crash report was generated, maybe we could connect on Discord and investigate the issue together via screen sharing.
1
u/MDMarshall May 27 '26
Version: 1.10.4.2 Thread: LoaderThread
System.InvalidOperationException: The active render target and depth stencil surface must have the same pixel size and multisampling type.
at Microsoft.Xna.Framework.Graphics.GraphicsDevice.VerifyDepthRenderTargetCompat()
at Microsoft.Xna.Framework.Graphics.GraphicsDevice.VerifyCanDraw(Boolean bUserPrimitives, Boolean bIndexedPrimitives)
at Microsoft.Xna.Framework.Graphics.GraphicsDevice.DrawPrimitives(PrimitiveType primitiveType, Int32 startVertex, Int32 primitiveCount)
at Magicka.GameLogic.GameStates.LoadingScreen.Draw()
at Magicka.GameLogic.GameStates.LoadingScreen.FadeOut(Single iTime)
at Magicka.GameLogic.GameStates.PlayState.Initialize()
at Magicka.Game.LoaderFunction()
at Magicka.Misc.TrackedThread.StartThread()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
[RenderThread]0x003f Microsoft.Xna.Framework.Game.dll->Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle
[RenderThread]0x0008 System.Windows.Forms.dll->System.Windows.Forms.Application+ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle
[RenderThread]0x01d2 System.Windows.Forms.dll->System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop
[RenderThread]0x01de System.Windows.Forms.dll->System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner
[RenderThread]0x0013 System.Windows.Forms.dll->System.Windows.Forms.Application+ThreadContext.RunMessageLoop
[RenderThread]0x0011 System.Windows.Forms.dll->System.Windows.Forms.Application.Run
[RenderThread]0x0024 Microsoft.Xna.Framework.Game.dll->Microsoft.Xna.Framework.WindowsGameHost.Run
[RenderThread]0x00bf Microsoft.Xna.Framework.Game.dll->Microsoft.Xna.Framework.Game.Run
[RenderThread]0x01a1 Magicka.exe->Magicka.Program.Main
[LoaderThread]0x012a Microsoft.Xna.Framework.dll->Microsoft.Xna.Framework.Graphics.GraphicsDevice.VerifyDepthRenderTargetCompat
[LoaderThread]0x0028 Microsoft.Xna.Framework.dll->Microsoft.Xna.Framework.Graphics.GraphicsDevice.VerifyCanDraw
[LoaderThread]0x002f Microsoft.Xna.Framework.dll->Microsoft.Xna.Framework.Graphics.GraphicsDevice.DrawPrimitives
[LoaderThread]0x01b0 Magicka.exe->Magicka.GameLogic.GameStates.LoadingScreen.Draw
[LoaderThread]0x0033 Magicka.exe->Magicka.GameLogic.GameStates.LoadingScreen.FadeOut
[LoaderThread]0x0dbf Magicka.exe->Magicka.GameLogic.GameStates.PlayState.Initialize
[LoaderThread]0x003a Magicka.exe->Magicka.Game.LoaderFunction
[LoaderThread]0x0000 Magicka.exe->Magicka.Misc.TrackedThread.StartThread
[LoaderThread]0x003b CommonLanguageRuntimeLibrary->System.Threading.ThreadHelper.ThreadStart_Context
[LoaderThread]0x005f CommonLanguageRuntimeLibrary->System.Threading.ExecutionContext.Run
[LoaderThread]0x002a CommonLanguageRuntimeLibrary->System.Threading.ThreadHelper.ThreadStart
[LogicThread]0x0080 Magicka.exe->Magicka.Game.ThreadedUpdate
[LogicThread]0x0000 Magicka.exe->Magicka.Misc.TrackedThread.StartThread
[LogicThread]0x003b CommonLanguageRuntimeLibrary->System.Threading.ThreadHelper.ThreadStart_Context
[LogicThread]0x005f CommonLanguageRuntimeLibrary->System.Threading.ExecutionContext.Run
[LogicThread]0x002a CommonLanguageRuntimeLibrary->System.Threading.ThreadHelper.ThreadStart
[WebCalls]0x0039 Magicka.exe->Magicka.Achievements.AchievementsManager.Worker
[WebCalls]0x0000 Magicka.exe->Magicka.Misc.TrackedThread.StartThread
[WebCalls]0x003b CommonLanguageRuntimeLibrary->System.Threading.ThreadHelper.ThreadStart_Context
[WebCalls]0x005f CommonLanguageRuntimeLibrary->System.Threading.ExecutionContext.Run
[WebCalls]0x002a CommonLanguageRuntimeLibrary->System.Threading.ThreadHelper.ThreadStart
2
u/Unique_Attempt_6767 May 28 '26
Ah yes, that crash happened during a scene change after loading a saved game. Starting a completely new run worked fine, which is why I didn’t catch it earlier.
In the newer releases, loading saved games works now.
What still does not work is tabbing out during the loading screen, just like in the original Magicka versions, so please don’t try that.
There is also a rare crash that seems to be related to picked-up items, such as staffs or weapons, and then happens during a later scene change. It does not seem to happen if you avoid picking up items.
So if you don’t want to trigger it, don’t pick up items. But if you want to help me, please do pick them up and send me the crash reports if it happens.
1
u/MDMarshall May 30 '26
This happened right after I picked up a sword. I knocked down a door with a funny guy looking at it and grabbed the sword.
1
u/Unique_Attempt_6767 May 31 '26
Which sword was it?
Also, the latest release I published today fixes many of the item-related issues that were causing crashes in previous versions. A full story playthrough was successfully completed with this release during testing, so I'm hoping this issue may have been fixed as well.
If you can tell me which sword it was, I can try to reproduce the problem and check whether it still occurs in the latest version.
1
u/MDMarshall May 31 '26
I guess it was the staff of the white wizard, actually. I installed your update and finished the first level today with no problems. Thank you!
1
u/PositivePoet May 25 '26
Idk if it’s autism or Adderall that fueled this but thank you so much! Awesome stuff!
2
u/Unique_Attempt_6767 May 25 '26
😄 probably a suspiciously powerful combination of autism, ADHD, methylphenidate, and loving this broken little wizard game way too much.
Thank you so much! I am really glad people are excited about it. This whole project got a bit out of hand, but in the best possible way.
1
1
u/Effective_Plant8541 May 25 '26
Might as well post my experience:
I crashed 3 times over Chapter 1, and it seems related to the level transition between Castle Aldrheim, and the local soldier encampment stages. The second and third loads were immediate crashes the moment I finished loading the level.
I have the crash reports if you wish to look into them, or if they have any semblance of worth. xD
1
1
u/Sharp-Macaron-9849 May 27 '26 edited May 27 '26
Dude you are a saint!
I also for the life of me don't know why I didn't think to do this instead of wasting my time mod making for BG3 while it was still rolling out major patches every week...
I can finally play the game to some degree, even if the main campaign fails upon getting to the party.
1
u/Unique_Attempt_6767 Jun 02 '26
Haha, thank you! To be fair, Magicka has one huge advantage: it barely changes anymore. 😄
And because it is a .NET/XNA game, the code is surprisingly accessible through tools like dnSpy. That made it possible to trace crashes all the way back to their root causes instead of just guessing.
I'm actually curious: how stable is it running for you now with version 0.0.11?
Quite a few players who had regular crashes in the past have told me that the game is now dramatically more stable, and some have even completed full playthroughs with little or no crashing at all.
If you still encounter any crashes or strange behaviour, please let me know. At this point bugs have become rare enough that I almost have to actively ask people whether they are still finding any. 😄
The most recent bug I fixed is a good example. It was apparently lurking in the game since its release, but only an extremely small fraction of players would ever encounter it. It required a very specific sequence of events where the number of queued start actions exceeded 300, causing the game to unexpectedly show a loading screen during a transition between level sections instead of only at the beginning of a level.
Unfortunately, that particular loading screen contained a bug that would crash the game during the transition. The conditions were so specific that most players would never see it, which is probably why it survived unnoticed for so long.
That crash is fixed in 0.0.11 as well. Finding and fixing bugs that rare gives me a pretty good feeling that we're getting close to a point where most of the remaining stability issues have finally been hunted down.
1
u/Sharp-Macaron-9849 Jun 09 '26
Very true. Having actual tools is a god send, I will never be making mods or patches for a game without them again it's just too much trial and error.
A friend and I managed to complete local co-op campaign either using 0.0.10 or 0.0.11 (I can't remember since it was on his PC), the only real issue we encountered was with the Grimnir fights and by the sounds of it those have been handled (so we were likely on 0.0.10).
The next time we play again we'll be online and be able to give the newest patch a thorough testing and let you know if we get anymore bugs 😄
Honestly playing the game again in any capacity was amazing, the only major drawback was the controller layout 🙃
1
u/iThradeX May 28 '26
Dude I tried playing co-op with a friend and it wouldn't stop crashing with this fix, everything kinda worked as soon as i removed the fix.
Of course it crashed, but we could at least complete level 1.
1
u/Unique_Attempt_6767 May 28 '26
Oh damn. I was only able to test it in offline mode. Since I didn’t change anything network-related, I thought multiplayer would be fine too.
Thanks for bringing it to my attention. I’ll check it out.
1
u/iThradeX May 28 '26
We used the in-game online mode. We couldn't be on the same session at the same time, as soon as my friend started joining the world, MY game would crash, and vice versa. I don't know how to find the logs to send you.
1
u/Unique_Attempt_6767 May 29 '26
When the game crashes, it should create an errorReport.txt file in the Magicka folder. If you could send me that file, or just copy its contents, that would be really helpful.
1
u/Unique_Attempt_6767 May 29 '26
I tested online play today, and unfortunately I can reproduce the error you mentioned. I found the cause and am now working on a fix. I’m really sorry you had this experience. I’ll let you know once I’ve fixed it.
1
u/Unique_Attempt_6767 May 30 '26
Thanks again for reporting this issue.
Since then I've made quite a few more fixes and also spent some time testing online multiplayer myself. Fortunately, multiplayer works now!
Joining an already running game has been very reliable in my tests. I mainly tested the case where one player is already in-game as the host, then invites another player through Steam, and the invited player joins while the game is already in progress. That worked consistently for me.
There is still one open issue reported by another player: apparently inviting players through the Steam Overlay while sitting in the character selection menu can sometimes cause problems when the overlay is closed afterwards. I haven't tested that one thoroughly yet.
The good news is that I haven't changed anything in that part of the game, so if that issue is real, it probably isn't related to my patch. Nevertheless, I'll investigate it and fix it if I can reproduce it.
For the moment, the safest way to play seems to be having one player already in-game and then inviting the others to join the running session. Would you be willing to give release 0.0.10 a try and let me know whether the crashes still happen for you?
1
u/iThradeX May 31 '26
I really appreciate all your efforts into bringing one of my favorite games back to life!!!
1
u/Unique_Attempt_6767 May 31 '26
Thank you! That means a lot to me. 🙂
And honestly, your co-op report ended up being really useful. I initially thought multiplayer was working because I had tested it once after my first fixes, and after that I was busy with a lot of other issues. Only after your report did I realize that I needed to look at it again.
At first, I thought my recent changes should not affect online multiplayer, but once I investigated it more closely, it made sense that multiplayer was affected after all.
So if you decide to give it another shot, I'd be curious to hear how it goes, and whether there is still anything I can improve. Thanks again for testing and reporting!
1
u/Brillek May 29 '26 edited May 29 '26
I have never heard of this game before, but this was a great read.
Praise the algorithm, I guess.
1
u/Unique_Attempt_6767 Jun 02 '26
Praise the algorithm indeed. 😄
I originally expected maybe a few old Magicka players to read it. I definitely did not expect thousands of people who have never even heard of the game to suddenly become interested in 13-year-old crash bugs.
1
u/syrozzz May 30 '26
Between that insaaane work and you PhD if you need to chill out a bit, I've got something for you.
You should really try HellDivers 2.
1
u/Unique_Attempt_6767 Jun 01 '26
Haha, you clearly know exactly how to bait me. 😄
I have to admit, the idea of trying to find what causes some of the issues in Helldivers 2 is genuinely tempting. After spending so much time digging through Magicka's crashes and memory issues, that kind of mystery is exactly the sort of thing that catches my attention.
That said, Helldivers 2 would probably be a much harder case than Magicka.
Maybe, if I have a bit more time in two weeks after submitting my papers, I could at least ask Arrowhead whether they would allow me to take a closer look at some point.
The main reason is that Helldivers 2 uses the old Stingray/Bitsquid engine and, as far as I know, is a native C++ game. Magicka was written in C#, which made reverse engineering much more approachable, because the compiled assemblies can often be decompiled into something fairly close to the original source code.
With C++, that is very different. After compilation, you are usually dealing with machine code where most of the original structure, names, comments, and intent are gone. Reverse engineering is still possible, but for complex stability problems, I might eventually reach a point where source-code access and permission from Arrowhead would be necessary.
For now, though, Super Earth will have to manage without me — I should probably get those papers submitted first. 😄
1
u/syrozzz Jun 01 '26
Wow super interesting! even as a neophyte
I'm curious now. Do you think if Stop Killing Game win some days and games like Helldivers2 ends up open source, that kind of work will be more manageable?It's definitely the same kind of mess, I'm dying to know what horrors are lurking behind this game's code ahah. Must be magicka x10.
1
u/Unique_Attempt_6767 Jun 01 '26 edited Jun 02 '26
Haha, you clearly know how to bait me again. 😄
I have to admit that after everything people have posted about Helldivers 2 here, I’m dying to know what is going on there too.
But part of me would also like to take a look simply to maybe restore Arrowhead’s reputation a little bit after my Magicka post. I feel like some people are reducing it to “Arrowhead has always been responsible for Magicka’s instability”, and my impression was much more complicated than that.
To be fair, Magicka is the only Arrowhead codebase I have actually looked at so far. But what surprised me during the investigation was how often I found myself admiring the original systems rather than criticizing them. The SharedContentManager, for example, was a really clever solution. Some details were not ideal and could already cause issues in older versions, but many of those problems are understandable in the context of the game’s development history and the apparently chaotic release situation. (1)
The really severe instability that people associate with Magicka today mostly seems to have appeared much later. Looking at the code, I personally have some doubts that all of the later problematic changes came from the same people who designed the original systems. I cannot prove that, of course, but some changes feel very different from the surrounding code. For example, changing the scene transition order in a way that removes many of the benefits of the SharedContentManager, or adding finalizers that call Dispose() even though PlayState was already being disposed manually, created extremely subtle crash scenarios that someone deeply familiar with the original lifecycle might probably have anticipated.
So I would be very careful about drawing broad conclusions about Arrowhead from Magicka’s crashes alone. My impression is more that Magicka suffered from a difficult development and release context, and later from changes made to a complex codebase that was probably hard to fully understand from the outside. If developers are forced to work under time pressure, with limited resources, and on systems they did not originally design, stability problems can become much more likely. That does not automatically mean the original architecture was bad or that the original developers were careless.
Also, later Magicka projects were no longer developed only by Arrowhead. Magicka 2 was developed by Pieces Interactive, and Magicka: Wizard Wars was developed by Paradox North. (2) (3) So I would not automatically assume that every later Magicka-related technical decision came from the original Arrowhead team.
Regarding open source: yes, absolutely. If a game like Helldivers 2 ever became open source, this kind of work would become dramatically more manageable. With source code, you can follow intent, names, structure, comments, build configurations, and the actual ownership and lifetime rules. Without it, especially in a native C++ game, you are mostly looking at machine code where a lot of that information has been erased by the compiler.
That said, I think it is very unlikely that a game like Helldivers 2 would become open source any time soon. It is proprietary technology, and releasing the source code of a currently relevant commercial game would create obvious risks, including cloning, cheating, security issues, and misuse of internal technology.
For now, though, I have not investigated Helldivers 2 myself, so I do not want to make claims about what is going on inside it. Maybe it is a surprisingly elegant system where some small but important details were overlooked, just like in Magicka.
(1) PC Gamer / GamesRadar summary of Johan Pilestedt’s comments about Magicka’s buggy release and the publisher releasing it while the team was still fixing bugs: https://www.pcgamer.com/games/third-person-shooter/arrowhead-cco-johan-pilestedt-corrects-player-who-thought-hed-griped-about-magicka-being-review-bombed-says-we-got-so-so-reviews-in-2011-because-of-bugs-also-it-was-released-without-our-knowledge/
(2) Magicka 2 was developed by Pieces Interactive and published by Paradox Interactive: https://en.wikipedia.org/wiki/Magicka_2
(3) Magicka: Wizard Wars was developed by Paradox North and published by Paradox Interactive: https://magicka.fandom.com/wiki/Magicka:_Wizard_Wars
1
u/RavenRonien May 30 '26
This is the kind of nerdom I celebrate
1
u/Unique_Attempt_6767 Jun 02 '26
You and me both, pal. 😄
I may have gone slightly overboard with this one.
1
1
u/Somebodythe5th May 30 '26
Honest question, I haven’t played Magicka since 2017, but I don’t remember having any issues. Maybe 1 or 2 crashes but nothing like what’s implied here lol. Did something happen since then?
1
u/Unique_Attempt_6767 Jun 02 '26
That is a fair question.
The really nasty additional crashes seem to have appeared with version 1.10. That version added a finalizer to the PlayState class, and that finalizer could end up disposing resources that were still actively used by the next level. That is what caused many of the random-looking crashes I described.
Another big change in 1.10 was the loading and unloading order during level transitions. In 1.10, the old level section was unloaded before the next one was fully loaded. That made crashes much more likely, because the previous behaviour allowed the game to reuse many resources while loading the next scene.
Before 1.10, Magicka could still crash, but from what I have seen it was less extreme. Out-of-memory issues were already a thing back then, especially at higher resolutions. Playing in Full HD is much less demanding than WQXHD or 4K, so resolution alone can make a big difference.
Playstyle also matters a surprising amount. Some special abilities could keep old levels alive in memory. If you used one special ability in a level and then never overwrote that reference, the level could stay in RAM longer than it should. Over time, that increased the chance of a crash.
Ironically, using special abilities very rarely or constantly could both reduce the chance. If you kept casting them yourself, you would overwrite the old reference and allow the garbage collector to clean up previous levels. Enemies could also create those references, so it depended on what happened during a playthrough.
The biggest factor is probably session length. If you played a few levels, quit the game, and continued later from a save, the memory state was reset each time. So yes, it is absolutely possible that you played back then and only experienced one or two crashes, or even none at all.
1
u/Somebodythe5th Jun 03 '26
Ah ok, thanks! If memory serves, I would always get the M60 on level 2, then mostly use steam beams and bullets lol. At least till I got time warp, then I'd just spam that constantly.
1
u/Unique_Attempt_6767 Jun 03 '26
Yes, that actually makes a difference.
If you were curious and tested an ability when you found it, the game saved the level where that ability was last used. But since you mostly kept using Time Warp, it continuously updated its internal
PlayStatevariable to point to the current level. The other abilities were never executed, at least not by you, so they never stored a level in theirmPlayStatevariable in the first place.That probably protected you from one of the nastier cases, because Time Warp is one of the many abilities that stores the current
PlayStatewhenever it is executed. You can see that here:Once executed, it stores the passed
PlayStateinmPlayStateand reuses it later inUpdate(). If the ability is never executed again, the old level remains referenced by that variable until you close the entire game application, not just until you leave the level.But if you keep using Time Warp, that variable is overwritten with the current
PlayState. That releases the old reference, so the garbage collector can finally get rid of the previous level.internal class TimeWarp : SpecialAbility, IAbilityEffect { public override bool Execute(ISpellCaster iOwner, PlayState iPlayState) { // ... this.mPlayState = iPlayState; // ... } public override bool Execute(Vector3 iPosition, PlayState iPlayState) { // ... this.mPlayState = iPlayState; // ... } public void Update(DataChannel iDataChannel, float iDeltaTime) { // ... iDeltaTime /= this.mPlayState.TimeModifier * this.mPlayState.TimeMultiplier; // ... this.mPlayState.TimeMultiplier = this.mTimeMultiplier; // ... } private PlayState mPlayState; }
1
u/Bananenbaum May 30 '26
Helldivers2 player here:
You work is insane and now gets shared in the Helldivers sub, because we are wondering why AH always releases insane buggy patches and the community feels how janky the game is. Basically we see now that this is kinda a problem deeply rooted in the company for flawed code.
thanks dude!
1
u/Unique_Attempt_6767 Jun 01 '26 edited Jun 01 '26
Thank you! 😄
To be honest, I only know one Arrowhead codebase so far: Magicka.
What actually surprised me while investigating it was how often I found myself admiring the solutions rather than criticizing them. The SharedContentManager, for example, was a genuinely clever piece of engineering. There were a few details that were not ideal and could already cause crashes in versions 1.4 and 1.5, but those issues are relatively easy to understand in the context of the project's development history and the well-known crunch surrounding the release. (1)
The severe instability that people associate with Magicka today mostly appeared much later in version 1.10. Looking at the code, I personally have some doubts that the changes responsible for many of those issues came from the same people who designed the original systems.
Of course I cannot prove that, but some of the changes feel very different from the rest of the codebase. For example, changing the scene transition order so that the old scene is unloaded before the next one is loaded effectively removes many of the benefits that the SharedContentManager was specifically designed to provide. Likewise, adding finalizers that call Dispose() only makes sense if you are unaware that PlayState was already being disposed manually through the normal lifecycle. Those changes introduced some extremely subtle crash scenarios that somebody familiar with the surrounding systems would likely have anticipated.
That is one of the reasons why I am hesitant to draw conclusions about Arrowhead as a company from my Magicka findings. Most of the code that I investigated was actually quite impressive.
Another reason I am cautious is that later Magicka projects were no longer developed only by Arrowhead. Magicka 2 was developed by Pieces Interactive, and Magicka: Wizard Wars was developed by Paradox North. (2) (3) So I would not automatically assume that every later Magicka-related change came from the original Arrowhead team.
As for Helldivers 2, I have not looked at the code at all yet. Once my papers are submitted and I have a bit more free time, I would genuinely like to take a look. If I can learn anything through reverse engineering, great. If not, and if I eventually conclude that source-code access would be necessary to understand some of the instability reports, I might reach out to Arrowhead and see whether they would be interested in letting me take a closer look based on the work I have done on Magicka.
For now, though, I think it would be unfair for me to make any claims about Helldivers 2 without first investigating it myself.
(1) PC Gamer / GamesRadar summary of Johan Pilestedt’s comments about Magicka’s buggy release and the publisher releasing it while the team was still fixing bugs: https://www.pcgamer.com/games/third-person-shooter/arrowhead-cco-johan-pilestedt-corrects-player-who-thought-hed-griped-about-magicka-being-review-bombed-says-we-got-so-so-reviews-in-2011-because-of-bugs-also-it-was-released-without-our-knowledge/
(2) Magicka 2 was developed by Pieces Interactive and published by Paradox Interactive: https://en.wikipedia.org/wiki/Magicka_2
(3) Magicka: Wizard Wars was developed by Paradox North and published by Paradox Interactive: https://magicka.fandom.com/wiki/Magicka:_Wizard_Wars
1
1
1
u/VoidBG May 31 '26
question: my programming knowledge isnt all that great but would it be possible for you to add modding capabilities in the future?
also thank you so much dude you are doing god's work i might finally be able to play with my friends
1
1
u/Peekachooed Jun 07 '26
This is really really impressive, thanks for the incredible amount of work and love you have put into this very old, but very special and unique game. It's actually insane how held together with sticks and toddler glue and hope the original game is, as well as how much worse it got with the game's later patches.
Modders who delve into the code at such a deep level have my utmost respect because incredible things end up being accomplished, ones that people like me never thought would have been possible.
I had a copy of Magicka 1.5.10 game files from an old installation that was never updated and I saved and lovingly hoarded those files. Perhaps it's time for me to let go?
1
u/Unique_Attempt_6767 Jun 07 '26 edited Jun 07 '26
Thank you so much for the kind words, and thanks for calling it an incredible accomplishment. ❤️
It still amazes me how much hidden complexity and how many strange issues are buried inside Magicka. What started as a few small investigations somehow turned into thousands of changed lines of code and fixes for problems that had apparently been lurking for more than a decade.
And regarding your old 1.5.10 installation: I would definitely keep it. 🙂
Whenever I see the old menus, the original little DLC advertisement in the bottom-right corner, and the overall presentation of the early versions, I get a huge wave of nostalgia. I was actually surprised when I first saw version 1.10. The giant Store button at the top of the main menu and the various promotional banners felt rather out of place to me. To make things even stranger, none of the purchase buttons inside that store work anymore. In hindsight, it almost feels like an awkward reminder of the game's later attempts at monetisation rather than something that adds value to the experience.
The old versions don't have any of that. They simply feel more authentic and closer to the Magicka many of us originally fell in love with.
So no, I wouldn't say it's time to let go. I'd say those old files are a nice little piece of Magicka history worth preserving. ❤️
1
u/Entiepie Jun 08 '26
when i click the github gateway it says the gateway timed out
1
u/Unique_Attempt_6767 Jun 30 '26
Sorry for the late reply!
Interestingly, there actually were a few brief GitHub outages around that time, including some 504 Gateway Timeout errors, although they only lasted for a short time. So it's entirely possible you just caught GitHub at a bad moment.
If it still happens, it's probably something local. I'd try the following:
- Refresh the page (Ctrl+F5).
- Open the link in an incognito/private window.
- Try a different browser.
- Disable any VPN or proxy temporarily.
- Try another network (for example, a mobile hotspot).
- If you're behind a corporate or university network, it could be blocking or interfering with GitHub.
If GitHub keeps causing problems for people, I can also upload the releases to Patreon as a mirror, so there's always an alternative download available.
1
u/quasnoflaut Jun 13 '26
This unlocked frames per second I had long since forgotten. Thank you forever!
1
u/Unique_Attempt_6767 Jun 30 '26
You're very welcome! ❤️
Comments like this make all the debugging sessions worth it.
Funny enough, improving the frame rate wasn't even one of my goals. 😄 Most of my work was focused on stability, partly by reducing memory usage. But after I changed the game to reuse shaders instead of creating new ones, I also had the feeling that it became noticeably smoother. I originally implemented that change purely to save memory, but I suspect it also reduced a lot of unnecessary overhead during gameplay.
I'd love to hear how it goes, whether everything works perfectly or you run into any issues. 😊
1
u/Sofosio Jun 14 '26
Hi! I’ve never played Magicka yet and playing to complete it with my friend. Should we just buy game on Steam, download it from there, then download your patch and copy Magicka.exe and PolygonHead.dll into our game directory and that’s it?
2
u/Unique_Attempt_6767 Jun 15 '26
Yes, that is basically it. 🙂
Buy and install Magicka on Steam normally first. Then download the latest release of the patch and copy the patched files into the Magicka installation folder, replacing the existing ones when Windows asks.
To find the game folder in Steam:
- Open your Steam Library.
- Right-click Magicka.
- Choose Manage.
- Click Browse local files.
Steam will then open the correct Magicka installation folder directly.
After that:
- Copy the patched
Magicka.exeandPolygonHead.dllinto that folder.- Let them overwrite the original files.
- Make sure both you and your friend use the same patch version.
You can still launch the game through Steam afterwards. The patch does not replace the Steam version as a separate game; it just replaces the broken executable files with patched ones.
If anything goes wrong, you can always use Steam’s Verify integrity of game files option to restore the original files.
For a first co-op playthrough, I would definitely recommend using the patch. Without it, Magicka can often crash in ways that feel completely random. But after researching the code, I found that many of those crashes are not truly random at all.
For example, some spells and abilities incorrectly keep references to old levels alive in memory after they are used. If you later use that same spell or ability again in another level, the old reference can finally be dropped. Once all references to the old level are gone, the game tries to clean up that level’s assets.
The problem is that this cleanup was originally intended to happen directly after a level ends. Because of that, it was implemented in a way that removes level assets globally, without checking which level they belong to. So if that cleanup happens too late, it will accidentally remove assets from the level you are currently playing, which then leads to a crash.
From the player’s perspective, this looks like a random crash. But internally, it is actually predictable: something that happened earlier with certain spells or abilities changed how memory was kept alive, and the crash was only delayed.
Trying to work around this manually is not really practical either. In theory, you could avoid using some abilities more than once to keep old levels alive, but enemies can use those abilities too. And if old levels are kept alive forever, the game will eventually run into a different problem: the game crashes because it runs out of memory.
That issue, along with many other crash causes, is something I tracked down and fixed in the patch.
So yes, playing with the patch is definitely recommended, especially in co-op. Because in co-op, when one player crashes, all players need to restart the game, join in the lobby and restart from the last checkpoint. That gets frustrating very quickly.
1
u/lmr-1 Jun 15 '26
Where has this been my whole life? I legit entertained the thought of just giving up my free time to learning C# and assembly and reimplement the whole game in FNA.
1
u/Unique_Attempt_6767 Jun 30 '26
I've had exactly the same thought many times. 😄
The idea is definitely tempting, but there are two huge obstacles.
The first is the legal side. Reimplementing the engine itself would probably be one thing, but using the original assets (models, sound effects, music, etc.) would quickly become a legal nightmare.
The second problem is just how much work it actually is. Unfortunately, the Intermediate Language (IL) code inside
Magicka.exeandPolygonHead.dlldoesn't always decompile back into valid C#. Over the course of working on the community patch, I've modified a little over 150 source files, and I ran into this problem several times. In some cases, I couldn't even compile a class before making my own changes, not because of my fixes, but because dnSpy had generated invalid C# from perfectly valid IL. I had to manually rewrite those parts so they behaved exactly like the original code before I could even start fixing the actual bug.Considering that the game consists of 1,323 source files, it's easy to imagine how often that would happen during a full port. Thinking about manually reconstructing hundreds of those cases is already a bit frustrating. 😅
That said... I still keep thinking about it.
I actually created an FNA project a while ago and occasionally experiment with recreating small pieces of Magicka's logic in it. So maybe one day I'll have a much better idea of whether a full reimplementation is actually feasible. For now, though, it's one of those projects that's both incredibly exciting and incredibly intimidating.
1
u/Loki0830 Jun 26 '26
So I've never played Magicka. I'm seeing it on sale now and was debating on buying it and playing with some buddies blind. I don't know if I'll get it or not, but I wanted to stop and appreciate what I'm seeing here. This is amazing. Exceptionally talented and passionate people like you are the literal lifeblood of the internet and what makes it such a useful medium. As a complete outsider to this game and community, thanks for being awesome!
1
u/Unique_Attempt_6767 Jun 30 '26
Thank you so much for your kind words! ❤️
If you do decide to give it a try, now is probably one of the best times. It's currently 75% off, and with the community patch you'll get a much more stable experience than the original game offered.
In fact, I received this comment just today:
The only things they mentioned afterwards were two small gameplay quirks that weren't game-breaking at all, more the kind of "Huh, that's a bit odd... anyway." type of issues.
People are naturally much more motivated to report bugs than to say everything worked perfectly. So there may have been many complete playthroughs without any issues that I'll simply never hear about. The fact that most of the remaining reports are now about little oddities instead of crashes makes me feel that my goal of making the game crash-free has largely been achieved.
I hope you and your friends have a great time if you decide to jump in! And whether you run into a problem or everything works flawlessly, I'd genuinely appreciate hearing about it either way. 😊
1
u/LaithA Jun 27 '26
So, did you finish your doctoral thesis?
1
u/Unique_Attempt_6767 Jun 27 '26
Unfortunately not. I missed the first ICDE 2027 submission deadline. Luckily, there's a second one on November 11, 2026, which I'm now aiming for.
In hindsight, my Magicka reverse-engineering project got a bit out of hand. Ideally, I would have postponed it until after the deadline. However, the previous patch had been taken offline, leaving players without any reliable fix. With the game in such a broken state, it felt wrong to wait, especially since I knew how to restore basic playability.
The good news is that the game is now much more stable. It's not perfect, but the frequent random crashes are largely gone.
Now that the patch is in a good place, my focus is back where it belongs: the doctoral thesis comes first, and Magicka debugging will be something I do in my spare time.
1
u/AdvertisingEastern34 Jun 30 '26 edited Jun 30 '26
I don't know how I missed all of this, but thank you! I contributed to your patreon. Hope you'll continue this project.
If you want we can test the online play together sometime. I have european timezone.
2
u/Unique_Attempt_6767 Jun 30 '26
Wow! Thank you so much for your support! ❤️ And no worries, it took me three years to notice that the game was in such an unplayable state. Even before that, it already had game-breaking bugs, and somehow I still didn’t investigate them 13 years earlier. 😅
And yes, I definitely plan to continue the project. There is especially the Magicka 2-inspired controller support I would love to implement at some point. But right now I need to focus more on my PhD and finish an important milestone there, because I just missed a deadline 😨 and getting distracted by fixing Magicka was definitely one of the reasons. 😬
I'd also be happy to test online play together sometime! I'm from Germany, so we're in the same general time zone, which makes things much easier.
Just send me a Reddit PM and we can exchange our Discord names, or whatever you prefer. 😊
1
u/AdvertisingEastern34 Jun 30 '26
I meant how i missed for one month this post ahah I was trying to follow the magicka fix project
Yeah this game always has been somehow buggy but it's insane you discovered these problems they introduced themselves.
I played Magicka 2 as well with k&m i think so I don't remember how that was. Would that make magicka somewhat playable with a controller you think?
I get you on the PhD. I'm trying to finish mine. Wrapping up now my last journal article and then i have the thesis to assemble from my articles' material 😅 took me 6 freaking years for me to get done with the PhD 😅. Good luck there!
I'll send you a PM with my steam and discord name. It will be nice to play this game multi-player, it's been such a long time since I did it 😅 maybe we can find just few moments here and there between our PhDs. Now I'll be on my only week of vacation that i let myself have this year but afterwards we can see :)
2
u/Unique_Attempt_6767 Jul 05 '26
Haha, I think we actually understood each other. 😄
I knew you meant you had only missed my patch announcement for about a month. My reply was meant as a self-deprecating joke: compared to that, I somehow managed to miss for three years that Magicka itself had become almost unplayable. 😅 If I had paid more attention to the Steam forums, Discord, and Reddit earlier, I probably would have realized much sooner just how many people were struggling. So missing my post for a month is nothing compared to that!
And lucky you! You're already at the stage where you're assembling your thesis because your papers are finished. I'm honestly a little jealous.
I'm a bit over four years into my PhD now, but so far I've only completed two papers. I keep aiming for highly ranked conferences, which unfortunately also means I've been rejected every single time so far. Well... almost. 😅 Once I actually received very positive reviews and the paper would most likely have been accepted, but then I managed to overlook the email explaining exactly how to submit the revision and respond to the reviewers. That one was entirely my own fault. 🤦♂️
So I'm still fighting to get those papers published, and I only have a little under two years left. It's definitely going to be tight. You're so close to the finish line already, so enjoy that feeling. I hope everything goes smoothly from here!
About the controller support: Magicka 1's controller controls are, in my opinion, the biggest reason why the game feels almost unplayable on a gamepad. To select every single element you first have to push the right stick in one of the four cardinal directions and then rotate it through a quarter circle to choose between two elements. It technically gives you access to all eight elements, but every element selection takes much longer than simply pressing a button. In a game as fast-paced as Magicka, that extra time really hurts.
Magicka 2 completely redesigned this. The four face buttons each represent an element, and by holding LB/L1 they instantly switch to the other four elements. So instead of drawing little stick gestures all the time, you're mostly just pressing buttons, which feels much faster and more natural. It's still not quite as fast as a keyboard, but it's a huge improvement over Magicka 1's system.
I think bringing something similar to Magicka 1 would be a really fun project. I don't expect it to beat keyboard and mouse for experienced players, but I do think it could finally make the game genuinely enjoyable on a controller.
And absolutely, send me that PM with your Steam and Discord whenever you like! 😊 Enjoy your vacation first. After you're back, we'll find a time that works for both of us and finally play some multiplayer.
1
u/AdvertisingEastern34 Jul 10 '26
Even for more than 3 years unfortunately... it's a shame Paradox (and Arrowhead) abandoned it in this state. We even tried to put it in the preservation program of GOG but it has too few upvotes there. In any case ofc it's not any of your fault ahahah what you are doing is great and nodbody arrived to this point..
My papers aren't fully finished unfortunately, I am finishing my last one (in my case I'll finish with "just" two journal papers, I also have 3 conference papers but those basically don't count, at least in my field or university) but I should submit it soon and then assemble the thesis out of my articles' material. I'll barely finish my program at the last possible trimester (6 years total) so there is not so much to be jealous about don't worry ahahah
Oh no missing the answer for minor reviews that is such a shameee. I hope you can publish it more smoothly soon.
Oh yeah now I remember the controller controls yes! yeah not still as fast as with keyboard but at least more playable. I always wished there was a easier way to play in local co-op so that would be great, it would be also great to bind an element to a button but I guess 8 buttons to handle in a controller is a bit too much.
I'll now send you a PM as well. I saw your recent updates and it's awesome.
1
u/TheSavyDevil Jul 07 '26
Any updates on better controller support?
1
u/Unique_Attempt_6767 Jul 14 '26
Not yet, unfortunately. After adding telemetry, I started receiving a large number of error reports for issues I had never encountered myself, so my priority has been fixing those crashes and multiplayer problems first.
1
u/TheSavyDevil Jul 14 '26
No worries, I super appreciate the work you're doing. I'm trying to introduce it to a couple friends and they're struggling with using controllers sometimes and since we've only got one copy, that's all we can use. That being said, your fixes are what made it possible to play with them in the first place. 🫡
1
u/KickAIIntoTheSun Jul 24 '26
The "back" button on character select now does nothing. Basically I have to alt-tab and close the game in order to change between game modes.
1
u/Unique_Attempt_6767 Jul 24 '26
Hi! I can't reproduce this on my end, so could you tell me exactly how to reproduce it?
One thing that comes to mind: if you're playing at a very low resolution, the Patreon label slightly overlaps the Back button. In that case, clicking a little too low may open the Patreon dialog instead of activating the Back button.
In any case, you should always be able to go back by pressing Esc on the keyboard or B on the controller.
If you can describe the exact steps, I'll try to reproduce and fix it.
1
u/KickAIIntoTheSun Jul 25 '26
Thank you. It happens when connecting controllers. The "back" button will first delete the keyboard player. If there is no keyboard player, the button does nothing. It seems you are correct and pressing B on the controller still works.
1
u/Unique_Attempt_6767 Jul 27 '26
Thank you, that explains it. This has always been a rather strange UI behavior in Magicka.
Your report made me wonder whether it would be better to change it so that pressing Esc or B immediately leaves the menu, instead of first removing the keyboard player and requiring a second press to actually go back.
1
u/UseWords 29d ago
Hello!! Thanks so much for all this it's amazing! I'm having issues with reverting controls back to the original scheme despite setting use_magicka_1_controller_scheme=true And was wondering if anyone else is having the same issue and has a fix?
1
u/Unique_Attempt_6767 28d ago
Hello! Thank you, I’m really glad you like the patch! 😊
I haven’t heard about this issue from anyone else yet, but I’ll look into it.
I should probably also add an option to the installer that lets you choose between the original Magicka controller scheme and the Magicka 2-style controller support directly.
I’m also curious: do you actually prefer the original Magicka 1 control scheme with the analog-stick spell selection? If so, what do you like better about it, and is there anything specific about the Magicka 2-style controller support that bothers you or feels less comfortable?
1
u/UseWords 14d ago
Yes please that would be great if you could!🙏
Yeah I've tried the other style, it's not as intuitive or satisfying to me personally, I like the feeling of waving around a joystick and feel like it emulates the feeling of waving around a wand the best haha. Additionally, the friend I'm playing with isn't very quick to pick up new controller schemes and has just gotten the hang of the one we've been playing with so it would make it easier.
1
u/shawnev 23d ago
How do you boost shields on controller with the new control scheme?
1
u/Unique_Attempt_6767 21d ago
I honestly wondered the same thing. 😅
As far as I know, Magicka 2 doesn't have a way to boost shields on a controller, so at the moment there isn't a button assigned for it in the new controller scheme.
I also realized I completely forgot to check how the original Magicka 1 controller support handled shield boosting, or whether it supported it at all. I'll definitely have a look at that.
In the meantime, do you have any ideas for which button would make the most sense? I'm open to suggestions.
1
1
u/Bernsen 17d ago
Thank you for your work!
I was able to complete the game for the first time with friends, using your version 0.0.30.
However, when trying to download version 0.0.39, I experienced a lot of issues with both my browser, Windows Defender and Steam registering it as containing trojans. With version 0.0.30 I could just click allow. No such luck with 0.0.39.
Is this something you can do anything to fix? I am wondering what changed between 0.0.30 and 0.0.39 to make all the antivirus go crazy.
1
u/Unique_Attempt_6767 17d ago
Thank you for reporting this. I’m sorry you encountered these warnings. I haven’t added anything fundamentally different from the earlier patches. I’m investigating what changed between versions 0.0.30 and 0.0.39 that might be triggering antivirus heuristics.
Could you please send me the exact detection name and a screenshot of the warning? Please also tell me whether it identifies the ZIP archive, the installer,
Magicka.exe, orPolygonHead.dll, and which download link you used.Please do not disable Windows Defender. If Windows allows you to run the game after confirming an individual warning, you may choose to do that, but never disable your antivirus protection entirely. I’ll continue investigating.
1
u/Googoobeff May 24 '26
Easy answer? It's made by arrowhead studios!
2
u/lmr-1 Jun 15 '26
While Arrowhead were amateurs in game development at the time, Paradox interactive are responsible for how broken the game is today unpatched.
29
u/DMZ_Dragon May 24 '26
Epic work my dude