Dgdata and Fatal Error

I purchased DG on Steam and have been trying to play with the difficulty settings on SP tournaments (for me Normal is too easy, Hard is too hard).

I keep getting Fatal Errors though.

I followed Sorian's advice.

1.  Extract dgdata.zip to a temp folder

2.  Rename dgdata.zip

3.  Create new folder called dgdata.zip

4.  Copy extracted data to new folder

Doesn't matter what I do then, the problem's already created.  Even without editing game.lua, I get the following Fatal Error immediately on trying to launch:

dgdata.zip not found

Program : C:\Program Files (x86)\Steam\steamapps\common\Demigod\bin\demigod.exe
Cmd line arguments :

Callstack:
    unavailable.

Reactor version: 1.10.00
Demigod version MAIN.1.30.0217
Last 100 lines of log...

A full record of the log is stored in the Demigodlog.txt file

info: 00:00:00: Full Log file: C:\Users\Me\Documents\My Games\Gas Powered Games\Demigod\\DemigodLog
info: 00:00:00: DEMIGOD VERSION MAIN.1.30.0217
info: 00:00:00: DISK: AddSearchPath: 'c:\program files (x86)\steam\steamapps\common\demigod\dgdata.zip', mounted as '/'
info: 00:00:00: DISK: AddSearchPath: 'c:\program files (x86)\steam\steamapps\common\demigod\movies', mounted as '/movies/'
info: 00:00:00: DISK: AddSearchPath: 'c:\program files (x86)\steam\steamapps\common\demigod\sounds', mounted as '/sounds/'
info: 00:00:00: DISK: AddSearchPath: 'c:\program files (x86)\steam\steamapps\common\demigod\loc', mounted as '/loc/'
warning: 00:00:00: Search path element "C:\Program Files (x86)\Steam\steamapps\common\Demigod\mods" does not match any files
info: 00:00:00: DISK: AddSearchPath: 'c:\program files (x86)\steam\steamapps\common\demigod\bindata', mounted as '/'

 

The game launches fine if I delete the new folder and rename the old zip back to dgdata.zip.

Any ideas?


EDIT:  In case anyone else has this problem, it looks like the game has been restructured since Sorian's advice was given, that the dgdata.zip needs to be left alone and that mods have to be handled via the mod folder (bindata/mods).

Not that I've managed to get the game to play the way I'd like.  I've set the tourney AI players on both sides to be the same level (hard) [TournamentUtilities.lua] for both Normal & Hard tournies, but I'm still finding Normal a cakewalk and Hard the opposite.

If anyone knows which files and instructions I need to change, that'd be appreciated.  I'd guess it's game.lua that I need to play with.


EDIT2:  Playing with the difficulty levels of the other players via TournamentUtilities.lua does seem to have some effect, but there seems to be something else that accounts for more of the discrepancy between the enemy AI and your AI.  I played a Normal game with my guys on Nightmare and the enemy's on Easy.  It seemed to be easier than usual and my guys appeared to be even more high-level (and the enemy even more low-level) than I'd normally experience in a vanilla Normal tourney.  So far, so good.

However, when I played a Hard tourney with the same profile (friends Nightmare, enemies Easy), it seemed to play the same way as usual.  My side ahead at first, then at about level 3 the enemy pull away.  It did seem that my team killed a few more of their guys than usual though (2 vs usual 0), so likely it helps, but the problem seems to be a gold or XP multiplier that applies to enemy AI in tournies.  That's what I need to find.


EDIT3:  Anyone else who's trying to mod the tournaments, don't bother.  I just ran a series of tests on Normal and none of my outrageous test changes made any difference.  (Well, maybe the changes to difficulty levels in TournamentUtilities.lua, but if that was so it was a very minor part of the balance and didn't alter the general flow of the game.)  BTW, @game developers, it is never acceptable on Normal difficulty that a game does not require the player to play in order to win.  Seriously, it is impossible to lose a Normal tourney game; your 3 AI buddies will outpace the 4 enemy whilst you sit on the crystal doing nothing.

Kinda wish I'd seen Pacov's post in this thread before I wasted my time :) :

"You cannot use gameplay altering mods in the single player tournament mode."

 

EDIT4:  After yesterday's edit, looks like you can.  It's pretty involved though, but at least it's possible.  Unfortunately the link to Peppe's AI Skirmish mod with a tournament version doesn't work anymore, but the instructions in the first link are the real prize anyway.

8,632 views 5 replies
Reply #1 Top

I can’t help you with the technical aspects, but I do intend to rescue you from SP mode AI, which are awful.

 

The SP AI have not been updated since launch, and since then veterans have racked up tens of thousands of hours of game play experience and we know exactly what equipment, consumables and citadel upgrades are worth having and which are not. The standard AI does not know any of this.

 

What you need to do is download and install the big four mods. UI mod, AI mod, Balance mod and uberfix mod. Once you have these go to multiplayer, which is where they become active(they don’t work on SP) create yourself a lobby with a password and start practicing with AI 3v3 on Cataract. Your find the AI play far better than on SP, and your learn a lot more relevant stuff about the game.

 

Get in 50-100 games like that and then try multiplayer. Your find the existing player base are on the whole very welcoming and forgiving to new players that have made an effort to learn the basics, but very unforgiving to players that try to join experienced games without knowing the basics. 

Reply #2 Top

Thanks K_B.  I probably won't get into MP, but I'll have a crack at the modded MP vs. AI (hadn't RTFM and had assumed those mods applied to SP as well).

Reply #3 Top

Enhanced AI works for me in SP. Just not in tournaments.

Reply #4 Top

The big problem for me with any AI is that they cannot think creatively, so their tactics are always poor and their strategy lousy, they can only make do with sheer brute force which can be avoided if you know how to play strategically.  

 If I ever play vs an AI, I normally play solo against 2 nightmares or 3 normal AI, as while I can’t beat them toe to toe I can trick them onto towers, or simply go around them and gain map control.

 That said it’s a great way to learn the game, and will be more than enough to keep you entertained for the first 50 hours or so, after that your need human players who can surprise you. If you arrive in your first multiplayer game already able to beat 3 nightmare AI with only 2 normal Ai on your team your find it still hard, but a lot less off-putting.

 As for knowing if the mod is working, your know if you have an Ai on your team because they talk to you. If the first thing rook says is something like “Towers / Hammer Slam” then it’s a modded AI. 

Reply #5 Top

I'm spamming this solution into a couple of threads that popped up when I was looking for how to make Hard singleplayer tournaments less hard.

1.  Editing the game is normally done via the bindata/mods folder.  However, those mods are not loaded for the singleplayer tournament games.  They take their instructions from the unmodded dgdata.zip.

2.  Editing dgdata.zip leads to the game not running.  This is because the game checks to make sure it's got the dgdata.zip that it's expecting.  This check did not exist in the beta version of the game, which explains posts like this that you might see.

3.  Therefore, you need to change that check after you edit the files.  See Peppe's excellent thread on the subject.  Don't be put off by the hex editor aspect; this is doable by anyone.

There's a load of things you could edit.  Unfortunately, Peppe's AI Skirmish mod is the only one I've found that has a tournament version and the download link is broken.  So adding in AI fixes etc. has to be done manually, if you want them.  Just copy the files from the mod's hook folder into your renamed dgdata.zip (remember to make sure they're in the correct folder/sub-folder).

The key thing though, if like me you found Normal tournaments too easy and Hard ones too difficult, is to modify 2 files in that renamed dgdata.zip..

lua/ui/sp/TournamentUtilities.lua.  This is the one that sets the difficulty levels of the AI units on each side.  As you may have noted from singleplayer skirmish, the difference in difficulty (in terms of intelligence) isn't huge there, but in tournies the difference between the difficulties is massive.  That's because the unit difficulty is, in tournies, also used to assign XP & gold multipliers (see game.lua).  Note that these multipliers also apply to you, so unfortunately it's not possible to just give the bonuses to all AIs, friend & foe, and not also give it to yourself.  This effectively leads to you using higher difficulty AI for the enemy team than yours to try to give their side a bonus.

The defaults are as below (where 1 is easy and 4 is nightmare).  Note that in Normal you & your AI were getting Hard bonuses, whereas the enemy AI was getting Normal bonuses (i.e. none).  It's the reversal of this position that makes the difference between Normal (where your buddies will win even if you do nothing) and Hard so stark.

I've added suggested changes, based on almost zero testing, in square brackets after the actual numbers:

    # Set difficulty for each slot based on rules
    #   On Easy -> Player team mates are nightmare; Enemy are easy
    #   On Normal -> Player team mates are hard; Enemy are normal
    #   On Hard -> Player team mates are normal; Enemy are hard
    #   On Nightmare -> Player team mates are normal; Enemy are nightmare
    if tournamentHistory.Difficulty == 'Easy' then
        for demigodName,demigodData in playerTeam do
            demigodData.Difficulty = 4[3]
        end
        for demigodName,demigodData in enemyTeam do
            demigodData.Difficulty = 1[2]
        end
    elseif tournamentHistory.Difficulty == 'Normal' then
        for demigodName,demigodData in playerTeam do
            demigodData.Difficulty = 3[3]
        end
        for demigodName,demigodData in enemyTeam do
            demigodData.Difficulty = 2[3]
        end
    elseif tournamentHistory.Difficulty == 'Hard' then
        for demigodName,demigodData in playerTeam do
            demigodData.Difficulty = 2[3]
        end
        for demigodName,demigodData in enemyTeam do
            demigodData.Difficulty = 3[4]
        end
    elseif tournamentHistory.Difficulty == 'Nightmare' then
        for demigodName,demigodData in playerTeam do
            demigodData.Difficulty = 2[2]
        end
        for demigodName,demigodData in enemyTeam do
            demigodData.Difficulty = 4[4]

lua/game.lua.  This is the one where the modifiers are applied.  The important ones are the earnt gold, the earnt XP and the starting gold multipliers.  Remember, these multipliers will apply to you as well, which sucks as it's therefore not possible to beef up your own AI without also beefing you up.

As before, suggested values based on almost no testing are in square brackets.  There aren't actually any values for the Normal multipliers, but I've added in what the game will be using.  I also removed the limit on the favour items.

# Difficuly handicaps for the three different AI difficulty levels
    DifficultyHandicaps = {
        # Easy
        {
            GoldMultiplier = 0.75[0.75],
            ExpMultiplier = 0.75[0.75],
            StartingGold = 0.5[0.75],
            MinPoints = 0[450],      # MinPoints and MaxPoints is the range of points the AI is allowed to spend on an achievement item
            MaxPoints = 150[10000],
        },

        # Normal
        {  GoldMultiplier = 1.0[0.75],
            ExpMultiplier = 1.0[0.75],
            StartingGold = 1.0[0.75],

            MinPoints = 150[450],
            MaxPoints = 300[10000],
        },

        # Hard
        {
            GoldMultiplier = 1.5[1.0],
            ExpMultiplier = 1.5[1.0],
            StartingGold = 2.0[1.0],
            MinPoints = 300[450],
            MaxPoints = 450[10000],
        },

        # Nightmare
        {
            GoldMultiplier = 2.0[1.5],
            ExpMultiplier = 2.0[1.5],
            StartingGold = 4.0[1.5],
            MinPoints = 450,
            MaxPoints = 10000,