[Questions] How to Improve Single Player

By on March 15, 2010 7:25:04 AM from Demigod Forums Demigod Forums


Join Date 02/2007

Originally Demigods was slated to have an impressive single player component. However, as it evolved this feature was dropped. At release Demigod's Single Player was reduced to skirmishes versus the AI and the Single Player Tournament. The majority of Demigod users, at this point, seem to play on private lans or single player. Thus, it seems reasonable that efforts to increase the diversity and depth of single player games may prove fruitful.

The purpose of this post is to query the community about potential ways of enhancing the single player experience.

What we have:

  • Limited Map Changes
    • mrappard has done a lot of work with the maps, but with mixed success.
    • The pathing information contained in the map files hasn't been understood. Attempts to recreate them result in failures. It is unknown why.
    • Feature placement changes work.
      • There is a version of Cataract released on this forum that demonstrates this.
        • Towers, Citadels, Crystals, walls, and portals can all be moved freely.
        • I'm not 100% sure if pathing works when these are changed, but I think it does.
    • Maps may require input from the user to overwrite ones
  • Game Style Changes
    • Scottish Alien was developing a Bombing Run game.
      • I'm not sure what happened or how far he got. However, he is MIA at this point.
  • Special Units AI
    • Peppe has demonstrated that much of the AI can be controlled for Demigod AIs.
    • There is no scripting, but high level changes can be implimented.
  • Adding Units
    • Creating new models is impossible (virtually) without very expensive modelling and scripting software
    • Texture Mesh changes are relatively easy - see any of the numerous skinning threads Ptarth has made
    • Size scaling of models is trivial and scripting is mostly size independent
    • Adding nonDemigod units is straightforward as long as they use currently existing models.
    • Adding new abilities is relatively trivial.
  • Adding New Demigods
    • mrappard has released the first complete new demigod
    • It relies on replacing an existing demigod
    • It is a reskin of Regulus
  • Single Player Mods
    • Mods do not load until a game starts.
    • This forces some limitations, unless we want to change the executable
      • Changing the executable is something that should be generally avoided
    • Some mods do not function in Single Player.
      • I don't recall the specifics, anyone else?
  • Scripting Events
    • I believe we do have some potential with event scripting, it would be horrendously kludgy, but should work
      • Best idea would be to use buffs that trigger functions when they expire.
      • Possibly combined with invisible units that create effects when they die (as an effect of a buff or such)
    • We have no additional voice overs.
    • Events would be text based, the same types of messages that appear in game.
      • A Player could easily miss these events
      • There would be no pausing (I think)

Where does that leave us?

Well, the best idea I have is that mods could be loaded that create single scenarios (multiple mods could provide a series of scenarios that would be related). These scenarios would be played as a Skirmish versus the AI. It may require the player to have a specific and fixed number of AIs. This may be manipulatable by the mod, but I'm uncertain. It seems possible to develop scenarios that require you to achieve goals such as killing an overpowered demigod, fighting against reinforcement waves that do not have capturable portals, and rewarding progress in a map with "treasure" chests containing various items.


Locked Post 5 Replies +2 Karma
Search this post
Subscription Options

Reason for Karma (Optional)
Successfully updated karma reason!
March 18, 2010 1:45:18 AM from Demigod Forums Demigod Forums

Well - you did a good job of highlighting where we are at, but I really don't see a good solution here.  There's not a way that I know of to have a user play out a specific scenario without them having to configure their own settings (for instance, let's say I wanted to force a user to fight against a specific build ub combined with a specific build oak.  The ai script could be built so that if the user choose to fight against those characters, they be up against that build, but the user would still have to configure the settings themselves, right?  They'd have to choose ub+oak and then choose nightmare and then configure all of the settings however I'd recommend.  Do we have any way past that limitation?  And even then, we'd still to load scenarios 1 by 1 so that the next part of the "story" would be a manual load.  You make a good point that events could be written via text at least in game, but that's about it. 

Anyway, obviously there are some options, but the current system is loaded with limitations (as you highlighted).

Reason for Karma (Optional)
Successfully updated karma reason!
March 19, 2010 11:29:44 PM from Demigod Forums Demigod Forums

Perhaps a mode where you start off 1v1 2v2 etc vs a demigod but they start at level 20, but you remain at level 1. Defensive towers have much more HP and you level up 2x as fast with held portals etc.


But thats just an idea for a possible scenario.


If pantheon can be loaded automatically, choosing settings/maps/winfocus it wants etc with the only player input being a choice of character, perhaps something within those settings could be looked into?

Would open the possibility of being able to achieve scenario specific goals in a  PvE (players vs Ai format) that could be publically displayed, as well as allowing for people to take on challengable scenarios when there is no PvP available.

Don't know how youd achieve this offline though.

Reason for Karma (Optional)
Successfully updated karma reason!
March 20, 2010 1:18:02 AM from Demigod Forums Demigod Forums

Perhaps a mode where you start off 1v1 2v2 etc vs a demigod but they start at level 20, but you remain at level 1. Defensive towers have much more HP and you level up 2x as fast with held portals etc.

i like the idea, but I don't think anything exists in the game where you can set levels for individual characters.

Anyone - is that possible?  I'd think you could pull it off, but you'd have to get like 1 character to a huge HP at start and the players couldn't select that character.

Reason for Karma (Optional)
Successfully updated karma reason!
March 20, 2010 2:12:24 AM from Demigod Forums Demigod Forums

I think it would be possible.

One way to do it would be to create an AI only item that it is required to buy (credit to Peppe for this part). When it equips it, it gives the demigod enough xp to get to level 20.

Another way would be to look into the starting conditions code and see if levels can be set by team instead of for everyone.

As long as everything is done in a mod, it can all be played in single player skirmish mode. Altering tournament mode is still prohibited without changing the executable.

Reason for Karma (Optional)
Successfully updated karma reason!
March 21, 2010 6:53:36 PM from Demigod Forums Demigod Forums

No need for items.  There is a give XP function.


Setting all the AI's to a higher level should be pretty arbitrary.   Did a quick test and adding this to the section where my AI announces its build (friendlyAsset.lua) resulted in them all being level 20 and me level 5 (set in menu) to start the match.

                    #[MOD]  Announce Build
                    local announcement = "Build: "..buildNames[num]
                    AIUtils.AIChat(unit, announcement)

The announce and build selection only runs once, so thought it was a good spot to test.


I don't know the exact integer amounts for each level off hand,  but i sure it could be fine tuned without much trouble.  I've never made a distiction between the AI's on my team vs not, but there should be a way to determine that and apply the bonus to enemy AI's if needed.



Edit logic to apply different XP values to ally AI vs Enemy AI:
                    for k, v in ScenarioInfo.ArmySetup do
                        if(v.Human) then
                            humanIndex = v.ArmyIndex
                    if (IsAlly(brain:GetArmyIndex(), humanIndex)) then


Reason for Karma (Optional)
Successfully updated karma reason!
Stardock Forums v1.0.0.0    #108432  walnut2   Server Load Time: 00:00:00.0000250   Page Render Time:

Stardock Magazine | Register | Online Privacy Policy | Terms of Use

Copyright © 2016 Stardock Entertainment and Gas Powered Games. Demigod is a trademark of Gas Powered Games. All rights reserved. All other trademarks and copyrights are the properties of their respective owners. Windows, the Windows Vista Start button and Xbox 360 are trademarks of the Microsoft group of companies, and 'Games for Windows' and the Windows Vista Start button logo are used under license from Microsoft. © 2012 Advanced Micro Devices, Inc. All rights reserved. AMD, the AMD Arrow logo and combinations thereof are trademarks of Advanced Micro Devices, Inc.