Jump to content

My first impressions of GemRB 0.8.0


argent77

Recommended Posts

Hi Guys,

 

I've spent some time to test the latest stable version (GemRB-nmake-vs10-v0.8.0) and a current snapshot (GemRB-win32-v0.8.0-57-g5aa8478) after a very long time. I'm impressed how much has improved since then. My testing platform is a Windows 7 desktop system with a recent Intel Core i7 CPU, nVidia GPU and a dedicated sound card. GemRB seems to be mainly focused on Android and other mobile platforms, so I don't know whether the issues I've found are present there as well.

 

The vanilla BG2 game does work well. Only when I'm loading a saved game the first time it takes a few seconds until the party members are visible on the screen. There are a couple of minor issues as well, but they don't interfere with the game play much (mainly slowdowns when loading game resources for the first time). Scripts appear to be processed much faster than in the original game. This is especially apparent when I'm spawning helper creatures to execute certain actions.

Another problem is probably platform-specific: The mouse cursor freezes whenever I'm switching from a fullscreen GemRB session to the desktop. It continues to work when I switch back to the fullscreen GemRB session.

 

I've also tested it with the mod I'm currently working on. It uses lots of unusual and rarely used resources, script actions and opcode effects, so I was curious how or if GemRB was able to handle it.

Lots of aspects introduced by my mod seem to work. I really liked the fact that allied non-party creatures don't lose their selection state when reloading a saved game. That has always annoyed me in the original game. Although, judging from the log and the in-game behavior of the creature, the script actions AddFamiliar() and RemoveFamiliar() aren't supported yet. This also causes a game-breaking situation in a later scene where it is required that a familiar-type creature is able to talk to a certain character.

 

Unfortunately I also came across a couple of minor and some major issues:

  • Using SetSequence() for creatures doesn't work in specific situations. This is one of them:
     
    // --- snip ---
    Activate(Myself)
    SetSequence(SEQ_AWAKE)	  // doesn't work
    MoveToOffset([0.0])
    CreateVisualEffectObject("A7AFQSUM", Myself)	// always shown behind the creature
    ChangeEnemyAlly(Myself, FAMILIAR)
    // --- snip ---


     

     
    Maybe one of the subsequent actions cancels the creature's animation sequence.
    Also, the VVC effect mentioned in the script above is applied incorrectly. The Y position value in the VVC resource is set to 1, so the effect should have been drawn in front of the creature. However, GemRB always draws it behind the it.
  • I'm using an item with zero charges and the charge depletion behavior 'Don't vanish'. The original game executable doesn't show the number of charges in the equipment slot, but GemRB shows the (incorrect) number of 1 charge. This is only a cosmetic issue, but it's somewhat misleading.
  • Sound effects triggered by PlaySound() don't seem to be cut off when I'm leaving the game and return to the opening screen.
  • The color palette of some creatures looks wrong during their casting animation (tested with the djinni animation).
  • GemRB doesn't support VEF resources. Although I haven't seen other mods making use of it, I have started replacing a couple of chained (audio-)visual effects by VEF files. IMO, it's a very useful format.
  • I'm using a projectile file in combination with a spell to hurt nearby enemies. However the caster (an allied non-party member) is also hurt in the process which shouldn't be the case.
  • GemRB oftentimes (but not always) crashes when I'm triggering a script block which handles the unsummoning process of a creature. I'm not sure if it's caused by the process directly, as it takes a few seconds before it happens. There seems to be nothing in the log file which suggests the reason for the crash.
  • One of my own maps is shown incorrectly (Image). I created it with DLTCEP from a BMP file and the original game executable displays it just fine.

Here are the associated GemRB-0.8.0.log and the GemRB-snapshot-v0.8.0-57-g5aa8478.log containing entries about both major issues, the incorrectly applied spell/projectile and the crash to desktop after the unsummoning process.

Link to comment

Nice reports. What is the mod you're testing with and what everything else is installed? For the crashes you give too little info and I guess you don't have an IDE, so it may be easier for us to try to reproduce them, even though it's annoying.

 

I've fixed the playsound one. What doesn't work with setsequence? And are you really talking about Y or Z? Which projectile is your spell using? Your map image is not accessible.

 

We don't support VEF, since nobody knew it until two years or so ago and nobody used it before. Should be easy to add, but it just made no sense before.

Link to comment

What is the mod you're testing with and what everything else is installed?

The mod is called Djinni Companion and is still under development.

 

My game setup is very simple. This is the current WeiDU.log:

 

// Log of Currently Installed WeiDU Mods

// The top of the file is the 'oldest' mod

// ~TP2_File~ #language_number #component_number // [subcomponent Name -> ] Component Name [ : Version]

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #0 // BG2 Fixpack - Core Fixes: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #1000 // BG2 Fixpack - Game Text Update -> GTU Light (by Wisp): v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #2 // Super Happy Fun Lucky Modder Pack: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #3 // BETA Core Fixes (please check the readme!): v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #100 // Party Gets XP for Sending Keldorn to Reconcile With Maria: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #101 // Improved Spell Animations: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #104 // Ghreyfain's Holy Symbol Fixes: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #106 // Giants Receive Penalties When Attacking Halflings, Dwarves, and Gnomes: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #107 // Remove Dual-Classing Restriction from Archers and Stalkers: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #108 // Remove Second Attribute Bonus for Evil Path in Wrath Hell Trial: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #109 // Corrected Summoned Demon Behavior: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #110 // Additional Script Fixes: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #111 // Bard Song Fixes: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #112 // Wizard Slayers Cause Miscast Magic on Ranged Attacks: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #113 // Additional Alignment Fixes: v9.14

~BG2FIXPACK/SETUP-BG2FIXPACK.TP2~ #0 #114 // Change Free Action to Protect Against Stun: v9.14

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #40 // Change Viconia's Skin Color to Dark Blue: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #60 // Weapon Animation Tweaks: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #70 // Icewind Dale Casting Graphics (Andyr): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #80 // Restore SoA Load Screen Logo (ToB Only): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #100 // Commoners Use Drab Colors: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #110 // Icon Improvements: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #130 // Force All Dialogue to Pause Game: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #140 // Fix Boo's Squeak: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1010 // More Interjections: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1020 // Alter HP Triggers for NPC Wounded Dialogues: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1040 // Improved Athkatlan City Guard: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1070 // Improved Multi-Player Kick-out Dialogues: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1080 // Add Bags of Holding: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1120 // Stores Sell Higher Stacks of Items: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1161 // Multiple Strongholds (Baldurdash) -> Keep Class Restrictions: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1170 // Bonus Merchants (Baldurdash): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1180 // Female Edwina: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #1220 // Allow Cromwell to Upgrade Watcher's Keep Items: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2060 // Weapon Styles for All: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2090 // Change Experience Point Cap -> Remove Experience Cap: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2140 // Expanded Dual-Class Options: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2151 // Wear Multiple Protection Items -> No Restrictions: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2160 // Alter Weapon Proficiency System -> Rebalanced Weapon Proficiencies: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2170 // Cast Spells from Scrolls (and Other Items) at Character Level: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2200 // Multi-Class Grandmastery (Weimer): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2210 // True Grandmastery (Baldurdash): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2240 // Un-Nerfed THAC0 Table: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2250 // Un-Nerfed Sorcerer Spell Progression Table: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2261 // Alter Mage Spell Progression Table -> PnP Table: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2271 // Alter Bard Spell Progression Table -> PnP Table: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2281 // Alter Cleric Spell Progression Table -> PnP Table: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2291 // Alter Druid Spell and Level Progression Tables -> No Level Progression Changes, PnP Druid/Cleric Spell Table Only: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2300 // Triple-Class HLA Tables: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2320 // Trap Cap Removal (Ardanis/GeN1e): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2330 // Remove Delay for Magical Traps (Ardanis/GeN1e): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #2340 // Remove Summoning Cap for Celestials (Ardanis/GeN1e): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3000 // Higher HP on Level Up -> Maximum: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3012 // Maximum HP for NPCs (the bigg) -> For Party-Joinable NPCs Only: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3031 // Easy Spell Learning -> 100% Learn Spells and No Maximum Cap: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3040 // Make Bags of Holding Bottomless: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3050 // Remove fatigue from restoration spells: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3070 // Change Effect of Reputation on Store Prices -> Low Reputation Store Discount (Sabre): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3080 // Unlimited Ammo Stacking: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3090 // Unlimited Gem and Jewelry Stacking: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3100 // Unlimited Potion Stacking: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3110 // Unlimited Scroll Stacking: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3121 // Happy Patch (Party NPCs do not complain about reputation) -> NPCs Can Be Angry About Reputation but Never Leave (Salk): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3123 // NPCs Don't Fight: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3124 // Stop Haer'Dalis-Aerie romance from starting: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3125 // Neutral Characters Make Happy Comments at Mid-Range Reputation: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3141 // Faster Chapter 1&2 Cut-Scenes and Dreams -> Non-Silly Version: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3150 // Turn Off The Hideous Cloak-of-Mirroring, Spell-Trap, and Physical Mirror Animations: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3160 // Keep Drizzt's Loot, Disable Malchor Harpell: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3170 // No Drow Avatars On Party In Underdark: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #3190 // Rest Anywhere (Japheth): v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #4010 // Improved Fate Spirit Summoning: v11

~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ #0 #4020 // ToB-Style NPCs: v11

~GENERALIZED_BIFFING/GENERALIZED_BIFFING.TP2~ #0 #0 // Generalized Biffing: v2.2

~DJINNICOMPANION/SETUP-DJINNICOMPANION.TP2~ #0 #0 // The Djinni Companion -> Full Version (includes quests, banters and more): v0.9

 

 

 

 

For the crashes you give too little info and I guess you don't have an IDE, so it may be easier for us to try to reproduce them, even though it's annoying.

This is the creature script which is executed each time the unsummoning process is initiated:

 

IF
 !AreaCheck("A7AR06")
 HPGT(Myself, 3)
 Global("A7AfaaqSummoned", "GLOBAL", 1)
 Global("A7AfaaqGaseous", "GLOBAL", 0)
 Global("unsummoning", "LOCALS", 1)  // triggers the unsummoning process
THEN RESPONSE #100
 SetGlobal("unsummoning", "LOCALS", 0)
 SetGlobal("A7AfaaqSummoned", "GLOBAL", 0)
 SetGlobalTimer("A7AfaaqHealTimer", "GLOBAL", ONE_TURN)
 SetGlobalTimer("A7AfaaqRestTimer", "GLOBAL", EIGHT_HOURS)
 SetInterrupt(FALSE)			// minimizes outside influences on the unsummoning process
 ChangeEnemyAlly(Myself, NEUTRAL)  // minimizes inside influences on the unsummoning process
 ApplySpellRES("A7UNSUM", Myself)  // spell effects used: 215 (Play 3D Effect, permanent), 287 (Selection Circle Removal, duration=3s)
 SmallWait(5)
 SetSequence(SEQ_DIE)		   // this particular animation sequence is played correctly
 SmallWait(25)
 ChangeEnemyAlly(Myself, FAMILIAR)
 SetInterrupt(TRUE)
 DestroySelf()
END

 

The creature itself has been made global by MakeGlobal() and elevated to familiar status by AddFamiliar().

I could also try and produce a simplified version which contains only the problematic features for further testing if you are interested.

 

 

What doesn't work with setsequence?

The expected behaviour is that the creature should get up from a lying position while a visual effect is played in front of it. However in GemRB the creature is already standing immediately after appearing on screen.

 

 

And are you really talking about Y or Z?

Yes, a positive Y position causes the animation to be drawn in front of the creature. The Z position only shifts the animation vertically, but it's covered by the creature all the time.

I've just noticed it. GemRB does it the other (and imo more logical) way around.

 

 

Which projectile is your spell using?

I've created the PRO resource by myself. I'm not sure if the projectile or a specific spell effect is the cause for the unintended damage.

This archive contains all relevant spell and spell-related resources (spell a7spin2a contains the custom projectile effect): pro_spell.zip

 

 

Your map image is not accessible.

Strange, I can access it from here just fine. Maybe this one works better.

Link to comment

If you can reproduce any of the issues with just vanilla+your mod, that would help a lot (you could even provide save games for immediate reproducibility). The snippet you posted doesn't contain anything suspicious per se.

 

Thanks for the pro. Usually the caster is affected too if the ignore-center flag is not set. Will check it out.

 

The area clearly has a broken TIS (MOS tile index) and it's odd that it works in the original.

Link to comment

So, I have tested the mod in an otherwise unmodded BG2 installation now.

 

During the character creation I've noticed some minor things:

  • At the bottom of the weapon proficiency section is an entry 'GemRB v0.8.0' where I can put up to five stars into it. What does it do?
  • The pre-selected voice selection for the character seems to be set to a fixed index. I had an additional voice set installed in my game installation which resulted in a wrongly selected male voice set (FEMALE4 instead of MALE1). Removing it fixed the problem.
  • When I click the 'Start Over' button, the portrait of the last character isn't removed.

I have found some other minor issues during play testing:

  • My allied creature comes equipped with an enchanted scimitar and a plain scimitar. However, only the first weapon slot contains a weapon. The second slot is empty (no fist icon either). The weapon slots of my party members are displayed correctly though.
  • You can activate specific actions (e.g. Talk or Attack) when you click the respective slot icon or press the associated function key. However, it isn't reset to the default action when you select another creature or party member.

Now to my crash situation. The crashes do happen in a clean installation too, but I was able to narrow down the problem to the specific script trigger AreaCheckObject(S:ResRef*,O:Object*).

In my case I'm using an observer creature which, among many other things, checks whether the target creature is in a certain area, using AreaCheckObject(). When I'm using the script mentioned in my previous post on the target creature, the object of AreaCheckObject(S:ResRef*,O:Object*) becomes invalid. This is likely the cause for the crashes.

Just a side note: Apparently the conditions are evaluated in a top-down order, because I was able to prevent the crash when I prepended AreaCheckObject() by a False() trigger (appending it didn't help).

 

 

I've tried to recreate the broken TIS with the latest version of DLTCEP (v7.6b), but it is identical to the broken one. Do I have to prepare the source bitmap (it's in 1024x768x24bpp BMP format) in any special way?

Link to comment

I hopefully fixed the crash in AreaCheckObject, but that doesn't help with the original problem.

 

I can't reproduce the proficiency problem (extra useless proficiency with no name assigned), so it may have been fixed already since 0.8.0 or you need a specific class to trigger it - what were you creating?

 

The voice selection has no ordering or logic at all. And the portrait thing is an extreme nitpick. :p

 

As for the scimitar, I suspect the wrong slot is displayed. Try changing the line for f/m to what the fighter has in gemrb/unhardcoded/bg2/qslots.2da (the first three columns should do). I can confirm it works fine for Solaufein, so it's odd.

 

As for the TIS, I haven't managed to create a good one with DLTCEP either, so in the end Ed made one with iesh.

Link to comment

Testing the latest automated build 'GemRB-win32-v0.8.0-67-g32f9f8b', I can confirm that the script trigger AreaCheckObject() doesn't crash anymore. The projectile issue persists though.

 

Now the extra useless proficiency's name and description have changed to 'GemRB v0.8.0-GIT' (seems to be the same as in the opening screen). It is visible for all races, classes and kits, and for most of them class restrictions apply (except for paladins who can still put five stars into it). Is there a 2da file which controls the proficiencies listed in the character creation screen?

 

Changing the slot numbers for FIGHTER_MAGE in qslots.2da doesn't help to show both weapon slots correctly. Using the fighter's slot numbers only displays a couple more empty weapon slots. When I change the 'Weapon slot selected' field in NearInfinity from 0 to 1, then only the weapon in the second slot is visible and the first slot is empty instead.

 

And I've found another minor issue. The new build displays the wrong icon (the small one) for items while they are dragged in the inventory screen.

Link to comment

I do get an extra prof, but without the label. Anyway, this is likely a regression due to one of the scrollbar changes. There is a 2da for proficiencies, with extra space, but this is irrelevant here.

 

As for the weapons, I'll have to take a look ingame. Can you provide a save game where this and the bad spell are easily accessible? And a description on how to trigger the problematic setsequence block.

 

The icon thing is a recent regression-fix pair. It's back to normal now.

Link to comment
I've tried to recreate the broken TIS with the latest version of DLTCEP (v7.6b), but it is identical to the broken one. Do I have to prepare the source bitmap (it's in 1024x768x24bpp BMP format) in any special way?

During my own area creations I always convert an area art in some external graphical editing program by decreasing palette depth to 256 colors (which can original IE handle), and after then I convert it into TIS format. I´m sure that DLTCEP has some internal converter, too, but maybe it just doesn´t work correctly in your case (although I dunno the reason).

Do it this external way and you should be fine.

Link to comment

I think I have found the cause why TIS files are sometines shown incorrectly in GemRB. The files created by DLTCEP based on BMPs don't have a valid header. The offset to the tiles has been left blank which seems to confuse GemRB. The original game is probably more robust or (more likely) uses a hardcoded offset, as it always should be 0x18 in standard TIS files.

Link to comment

I have worked around the problem by setting both Y and Z positions to 1, as it doesn't really make a difference in my case. However, as you can see in the case of POLYBACK.VVC and SPPOLYMP.VVC, the Y position does indeed determine whether the effect will be drawn in front of or behind the target in the original game.

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...