Acknex / LotterVersusTheWorld

AckCon'17
4 stars 0 forks source link

Menü / Credits / Spiel Wechsel führt zu Fehler und Abstürzen #47

Open firoball opened 7 years ago

firoball commented 7 years ago

Irgendwo ist die Integration noch nicht sauber. Einfach mehrmals Credits, Intro, Spiel, abbrechen, Intro, Spiel usw. durchgehen, und man bekommt DirectX Fehler, Crashes, oder eine SPLASH__housekeeping() Fehlermeldung. Teilweise bleiben nach dem Intro seltsame Artefakte und kaputtes Spieler Movement zurück.

Ich vermute da ist was nicht sauber eingehängt, wird nicht gestoppt, mehrmals gestartet, etc.

firoball commented 7 years ago

Außerdem merkt man das Laden der Bitmaps beim Intro aus der WRS doch recht deutlich. Am besten preloaden, damit das Intro ruckelfrei läuft.

mk1x86 commented 7 years ago

Keine Ahnung wie das geht?

firoball commented 7 years ago

preloaden? ent_preload(ENTITY), bmap_preload(BMAP)

firoball commented 7 years ago

Was das Problem mit den seltsamen Fehlern betrifft, ist zumindest schonmal eine Ursache, dass man die Menüpunkte mehrfach klicken kann, weil nach Wahl einer Option das Menü nicht verriegelt wird.

mk1x86 commented 7 years ago

@MasterQ32 Da du die Übergänge gemacht hast und am besten weißt, wo man das Spiel abbricht: Die Sounds stoppen nur, wenn der Spieler tot ist! also muss dead irgendwo gesetzt werden

ikskuh commented 7 years ago

@mk1x86 Das liegt daran, dass die ganzen sounds mit snd_loop abgespielt werden und nicht mit ent_playloop2 oder ähnlichem... Für wie lange muss dead gesetzt werden, damit ich einen garantierten safe shutdown habe?

mk1x86 commented 7 years ago

Ein frame, aber ent_... kenne ich gar nicht. Gut zu wissen

ikskuh commented 7 years ago

Soundproblem resolved in c548c58d050974a16f1b34c55c35e97dea3724b2 Doppelter Start vom Intro resolved in d4640c140f172063e335ec5b1a9927d1d069f805

firoball commented 7 years ago

ent_playloop2!? Ist das ein Hidden Feature? :D

ikskuh commented 7 years ago

Nö, würde sagen: Documented!

firoball commented 7 years ago

im .chm kontne ich das nicht finden, weder über index, noch über Suche :o

firoball commented 7 years ago

ist das Random pitching des Schusssounds Absicht? Finde das irgendwie verwirrend beim Spielen...

mk1x86 commented 7 years ago

wenn ja, dann raus damit. habe das extra synchronisiert

firoball commented 7 years ago

Habe gerade mehrere Levels gespielt und im sechsten oder siebten hats dann geknallt (hab leider keinen Meldungstext bekommen). :( Vielleicht sollten wir da doch nochmal suchen.

ikskuh commented 7 years ago

Ich kann mir vorstellen dass es am Aufräumen der dynamischen Modelle liegen könnte, da ich das dreist weggelassen habe... Das sollte aber eigentlich nicht zu Problemen (mal abgesehen von OutOfMemory) führen, da ich die CleanUp-Funktionen nicht aufrufe und damit keine dangling pointer entstehen könnten. Zum out of memory: Jedes Level benötigt um die 900kB Hauptspeicher, das kann also eine ganze weile leaken, bevor das zum Problem wird

firoball commented 7 years ago

Ich hab mal schnell mit nem -diag laufen lassen, aber diesmal gabs keinen Absturz. Dafür ein paar interessante andere Sachen die anscheinend nicht unmittelbar die Executable versenken...

MM mixer opened DSOUND device opened DI interface opened Start Window opened(c) Conitec - www.3dgamestudio.com A8 Engine - Pro Edition V8.47.1 - Mar 9 2016 Linking D:\git\ackcon\LottiVersusTheWorld\game\lottervstheworld.cd\lottervstheworld.exe...

Mouse found Lautsprecher (Realtek High Definition Audio) opened NVIDIA GeForce GTX 960 pure T&L device 1ff9 detected D3D device NVIDIA GeForce GTX 960 1ff9 selected Opening 226 resources in LOTTERVSTHEWORLD.EXE... lottervstheworld.wrs opened ENEMY_hit: function not found FONT_big: function not found INIT_global: function not found QUESTmasterEvent: function not found RICOCHET_create: function not found RICOCHET_create@1: function not found SPHEREODturnOn: function not found SaveMeshToX: function not found WeldVertices: function not found dmdl_vertex_equals: function not found stageRenderEntity: function not found............................ Running LOTTERVSTHEWORLD.EXE. Main started at 0.536 D3D_Init Window: 720x480 -> Window: 1x720x480x32 Video memory found: 4093 MB D3D_Resize Screen: 1920x1200 -> Screen: 1x1920x1200x32 Loading credits data... node(0.000000) node(1.000000) node(2.000000) node(0.000000) node(2.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(0.000000) node(0.000000) node(2.000000) node(0.000000) node(2.000000) node(0.000000) node(2.000000) node(0.000000) node(2.000000) node(0.000000) node(2.000000) node(0.000000) node(2.000000) node(0.000000) node(2.000000) node(0.000000) node(2.000000) node(0.000000) cheats_startup started pp_ring_startup started Materials_startup started mtlfx_startup started Main loop at 0.654.... 1st frame with 4093 MB at 0.655 LevelInit at 0.728 0 lmaps 0 textures...ok LevelReady at 0.737 media\main_menu.mp3 audio opened LevelInit at 6.084 3 entities 0 cameras 4 lights 0 sounds 0 paths 2 lmaps 3 textures 14 meshes 14 submeshes 176 faces...ok LevelReady at 6.380 media\credits.mp3 audio opened Rendertarget used for texture! Rendertarget used for texture! LevelInit at 131.058 0 lmaps 0 textures...ok LevelReady at 131.070 LevelInit at 131.208 0 lmaps 0 textures...ok LevelReady at 131.216 media\main_menu.mp3 audio opened Nexus overflow at 33221496 media\intro.mp3 audio opened LevelInit at 249.147 0 lmaps 0 textures...ok LevelReady at 249.164 media\in_game1.mp3 audio opened HEADRELATIVE sound: 1 LevelInit at 283.481 0 lmaps 0 textures...ok LevelReady at 283.491 LevelInit at 284.494 0 lmaps 0 textures...ok LevelReady at 284.502 LevelInit at 325.734 0 lmaps 0 textures...ok LevelReady at 325.745 LevelInit at 327.979 0 lmaps 0 textures...ok LevelReady at 327.987 media\main_menu.mp3 audio opened Normal exit at 332.335 Close level,DLL,objects Free input,funcs,panels,defs,syns,views,strings,vars..ok Free sounds,bmaps,fonts,hash,defs1,script..ok Close dx,multimedia,D3D,engine,nexus..ok A8 Engine - Pro Edition V8.47.1 - Mar 9 2016 (c) Conitec - www.3dgamestudio.com Close window at 332.473

ikskuh commented 7 years ago
ENEMY_hit: function not found
FONT_big: function not found
INIT_global: function not found
QUEST__masterEvent: function not found
RICOCHET_create: function not found
RICOCHET_create@1: function not found
SPHEREOD__turnOn: function not found
SaveMeshToX: function not found
WeldVertices: function not found
dmdl_vertex_equals: function not found
stageRenderEntity: function not found

Das kommentier ich mal mit einem "WTF, warum tut das dann überhaupt?!"

Rendertarget used for texture!

Hm, das sollte aber eigentlich nur dazu führen, dass man schwarz bzw. Datenmüll sieht und nicht, dass es abstürzt....

firoball commented 7 years ago

Das mit den Function not found kann auch von nicht gelöschten Prototypen un evtl. von fehlenden includes kommen. Dürfte primär reine Schlamperei sein :D

Ich hab jetzt nochmal ne längere Session eingelegt und es ist nix abgestürzt. Ich hatte irgendwann das klassische "Shader Ruckeln" und einmal war WASD so halb kaputt, aber da hab ich vorhin wohl echt den einen Griff ins Klo gemacht.

firoball commented 7 years ago

und jetzt doch noch gecrasht nach den Credits bei schnellem Klicken in Menü bevor der Text sichtbar war... was bin ich auch so ungeduldig :D

Naja egal fürs erste.

Edit: Ok, wie man den Crash hinkriegt hab ich zuminest rausgefunden. Das passiert, wenn man nach den Credits sehr früh im Menü (noch nicht alles eingefadet) direkt wieder die Credits antriggert. Das kann man wohl vernachlässigen, außer uns klickt doch da eh keiner so schnell rum ;)

Vermutlich hats mit dem bmap_for_entity für den Warlock Monitor zu tun. Wenn ich das auf die Schnelle richtig seh, wird der View zunm Rendern vor dem Laden des leeren Levels nicht gekillt, damit dürfte sie ein ungültiges rendertarget haben. Wer hat den Credits Code gemacht oder kennt sich da drin ein wenig aus?

mk1x86 commented 7 years ago

@evil-lemming ist für die Monitore verantwortlich. Vielleicht steigt er da durch

ikskuh commented 7 years ago

unfortunately I had to make a copy of d3dx9_42.dll and change the filename to d3dx9_30.dll so that the game doesn't break up anymore during loading the level. The parameter -debug helps a lot here. Das klingt irgendwie nach einem sehr komischen Bugfix ^^

firoball commented 7 years ago

zumal es -debug gar nicht gibt.

Könnte aber sein, dass die d3d_compiler dll für die Shader fehlt... hmmm

edit: hm ne die ist drin.