Comments (9)
Works fine on master, fixed by 0d19c1b
from devilutionx.
Rather than not being able to load the game, we probably are loading the game just fine and then failing to render some asset. It's like tricking the game into thinking the save is valid. I think it would be difficult to fail early with an error message. Or, at the very least, more difficult than simply catching an exception.
EDIT: I just saw Qndel's screenshot. I guess the issue occurs during level conversion, not during rendering. But it happens when saving the converted level, which means the level loaded just fine. I guess the issue is we don't call GetLevelMTypes()
so it's unable to load the monster type from LevelMonsterTypes
.
from devilutionx.
I could be wrong - this came up in Discord and but I didn't see anyone say it was definitely intended to be able to load a single player save from one version to another.
Maybe people didn't convert to hellfire that often or maybe they saved in dungeon or something, this started to happen in 1.5.0 after dereferencing null pointer got added and glebm's PR fixed it - we are still reading incorrect data (for zombie instead of golem) but at least it doesn't crash ;)
from devilutionx.
The following fields in SaveMonster()
access data from the MonsterData
array which can't be referenced without loading data into LevelMonsterTypes
.
devilutionX/Source/loadsave.cpp
Line 1449 in 039a6c9
devilutionX/Source/loadsave.cpp
Line 1451 in 039a6c9
devilutionX/Source/loadsave.cpp
Line 1456 in 039a6c9
Nowadays, each of these fields is being skipped during LoadMonster()
in favor of computing them on the fly.
devilutionX/Source/loadsave.cpp
Line 642 in 039a6c9
devilutionX/Source/loadsave.cpp
Line 644 in 039a6c9
devilutionX/Source/loadsave.cpp
Line 652 in 039a6c9
It would be pretty convenient if we could just copy these fields over from the loaded level to the converted level rather than trying to compute them. Otherwise, we'd have to do something like this for normal dungeon levels...
InitLevelMonsters();
SetRndSeed(glSeedTbl[currlevel]);
GetLevelMTypes();
And for setlevels, maybe something like this...
InitLevelMonsters();
LoadSetMap();
GetLevelMTypes();
from devilutionx.
You probably shouldn't load games switching between Diablo and Hellfire. Make a new game.
I tested the save file, crashed for me on load game, but new game worked fine, as far as I can tell. My understanding is the character transfers fine, loading a game saved in the other version isn't supported.
from devilutionx.
it's not feasable to backport that, but I can try and se if it can be easily patched for the next patch release.
from devilutionx.
Note: I did think loading a saved game was possible. Starting a new one with the same character I know I can do.
If it can be done, great, if not I get it if the legacy behavior was to not support that behavior.
To that point, if it's not possible, my recommendation at that point would be:
a) Show a message saying you can't load this saved game when someone tries
b) or don't offer the option when the character is being imported from Diablo so you can't get to the point I got to.
c) Gracefully crash without closing out the whole game. Catch the exception, whatever it is, and say error loading save file or something like that and return them to the last menu.
That's my 2 cents :)
from devilutionx.
I could be wrong - this came up in Discord and but I didn't see anyone say it was definitely intended to be able to load a single player save from one version to another.
from devilutionx.
maybe just load them and add a comment that it's only needed for conversion // load default for use with save game conversion
or something like that.
from devilutionx.
Related Issues (20)
- [Issue Report]: Lazarus starting sequence issues HOT 20
- [Issue Report]: Inventory problems HOT 1
- [Issue Report]: Inventory bug [1.6.0-dev] HOT 2
- [Issue Report]: Changing Item Parameters [1.6.0-dev] HOT 3
- [Issue Report]: Full screen option on Nintendo Switch HOT 5
- [Feature Request]: Shrine effect suggestion HOT 1
- [Issue Report]: Vipers / Drakes sometimes missing their lunge and slamming into walls or disappearing into the distance HOT 11
- [Issue Report]: Google Android TV - unable to acess data folder, nothing helps HOT 4
- [Feature Request]: Several proposals for innovations HOT 2
- [Issue Report]: Enabling Integer Scaling would yield lua\user.lua error HOT 5
- [Issue Report]: game crash with SDL_audiolib segfault HOT 5
- [Issue Report]: Broken enemy movement HOT 3
- Shared XP and gold for multiplayer. HOT 2
- [Issue Report]: Char Level And XP info in Panel repeats HOT 1
- [Issue Report]: hover information for dead monster HOT 5
- [Issue Report]: Stash corruption when starting new hellfire game from diablo save HOT 11
- [Issue Report]: segfault load save HOT 2
- [Issue Report]: Unique rings and amulets drop are always the same. HOT 5
- [Issue Report]: Hellfire spells stay dormant if you switch to Classic. HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from devilutionx.