While a lot of Stardock’s development team has been interfacing with Gas Powered Games to continue to improve Demigod, the Elemental team continues forward.
Now a couple of things about Elemental that should be made clear:
Now, with those 3 points out of the way, let’s talk about modding.
In Elemental, we are building an engine that we are then “modding” into Elemental. The idea is that if we approach the game in that way, the game will, over time, become flexible enough so that players can mod it into all kinds of different land-based, turn-based games. If we get our way, a modder could take Elemental and make RISK, or a Lords of Conquest game or all kinds of other things like that.
For those of you not familiar with modding let’s break this down into its elemental (no pun intended) parts:
For items 1, 2, and 3 you will have the built in modding tools (early version pictured above). What you see above is where the modder can create a particular tile in the game. Maybe it’s a dungeon. Maybe it’s a going to be a city improvement. Maybe it’s ruins on the map. Who knows.
The plan is that players will be able to save these creations and post them to share with other players. When these creations are saved, they can choose what “mod” they go with. Elemental (for instance) would be the default choice that your creation could be used with. But if someone made a different game mod, they could save it there as well. That way, a mod could continue to be improved over time by the community. Players would continue to use the bestiary (you’ll see that late Summer) to choose which mods they want to make available for themselves.
For items 4 and 5, how flexible this will be will largely depend on time. Since I code the AI in Stardock games, I’ll have to be careful to make C++ APIs in the game that are fairly generic that I can then call from python scripts. I don’t know Python right now so there will be a learning curve. Users will be able to mod the scripts as they see fit for single player. In multiplayer, the scripts will come from our servers in order to make sure everyone is playing the same game (it avoids all that desync pain you see in games when someone has modded something and forgotten).
So that’s the direction we’re going. Now, bear in mind here, what I’m outlining here is what are goal is. These aren’t “promises” because as with anything, economic reality may come into play. But so far, things are going pretty well.
Am I the only one dissapointed with this? I was *extremely* excited about everyone being able to make their own AI bot to compete in multiplayer...
This shift to single player and "same AI for multiplayer" takes away 80% of my excitement, sadly.
-Drexion/Ragarth
I haven't been following Elemental for that long, so what do you mean by them saying "same AI for multiplayer"? The only thing that I saw them really say is that AI scripting is one of the key elements of the modding. I don't see why you couldn't code some AI stuff and use that mod in multiplayer.
No AI modding for multiplayer, basically.
Is this saying that the AI was programmed in C++ and that we can only call up a few functions from them from Python? Forgive my low intelligence =P
Annatar, everyone is going to need the same set of AI files in order for an AI to run the same on every players computer. That does not necessairly preclude those files from being modded, only that those modded files would need to be approved and centralized, much like any other kind of mod input. The SP is additional functionality so you can play around with minor changes until you are happy.
I don't think so. Remember an older dev journal where Frogboy wrote that the AI in Elemental MP will be treated like players? They wouldn't be *set* by the player, they would exist on the servers and be able to join people's games that allow AIs. Basically, AI in MP will be a virtual player, not a bot that you will be able to set up.
Granted that journal is quite old so I don't know if the plans changed, but that quoted bit seems to fit in with it.
Edit: Though I suppose it's also quite possible that some AI tweaks/mods might make it into the official MP AI, I guess it depends on how robust the modding stuff will end up. We know people will be able to pick and choose what mods they want, but would that include MP AI?
It really doesn't sound like it. I am likely not going to be modding AI anyway, but from all of the above, it sounds like you will be able to make any AI you want to compete against in solo play (which is pretty cool) but all MP AI has to come from Stardock. Now, I am betting that if someone just came up with a Godly AI that Stardock would put it on their servers and it would be accessible in MP. But it sounds like any AI in MP has to come from Stardocks servers.
In multiplayer, the scripts will come from our servers in order to make sure everyone is playing the same game (it avoids all that desync pain you see in games when someone has modded something and forgotten).
Pretty sure that is just referring to Stardock hosting whatever mods you put onto their system, and then when you play multiplayer with someone, it loads the selected mods via their servers instead of your PC. It sounds like an awesome system, so I can't wait to see what comes of those plans.
You have gameplay scripting. We are using Python and that is where the rules of the game itself are modded.
You have the AI scripting. Again, using Python, that is where the AI behavior is modded.
It's nice that gameplay and AI will be moddable but look at Civ 4 modding. AFAIK even some parts of Fall From Heaven mod were re-written so to use C++ instead of Python as Python is much slower.
And IIRC Lua is faster than Python.
P.S. I can't find reference about FFH but Speed Mod is a good example. Even calls from C++ to empty Python functions slow down the game significantly [MOD] Speed Mod
I would be interested to know what led you to choose Python for your scripting? I have been playing with writing domain specific languages in Scala a bit recently, whereas at work I have to use all sorts of XAML stuff (yuck), Boo (nice) and Powershell (ugh), so it's a topic which is on the brain at the moment.
I mentioned it (see reply #18). If I recall reading correctly, it was something like 10 unique spells per civ. So there're be a few per civ, but many in the game overall. However, I can't find the source of the info, so I could be wrong.
I'll edit this post if I find the source.
Python was fast enough to script a third-person RPG (with perhaps the best real-time swordplay combo system I've ever seen in a game) as early as 2001's Severance: Blade of Darkness, and a 3D space sim, Star Trek: Bridge Commander, in 2002. In both games, all of the actual game logic is in Python. In 2003, Stackless Python (a variant) was used, and continues to be used to this day, for the server and client of EVE Online...
I don't know anything about the implementation of Python in Civ 4, or the work of the mod teams on that game, but they must be doing some *serious* grunt work in their code if they had no choice but to move into custom C++ libraries... Bridge Commander modders don't have the luxury of being able to use C++, and they've managed to do some pretty amazing things just in Python...
IMHO Civ 4 is a better example as it's a 4X TBS like Elemental and it's game logic source code is available for everyone (both Python and C++ one). What's the point to compare apples to oranges (other genres to TBS) when you can compare apples to apples (Civ 4 and Elemental)? Obviously, 2nd comparision will give you much better results.
If Kael says "Personally I can run on huge maps full of AI civs at the same speed I used to do standard maps" just because he removed Python calls then IMHO it's worth it. BTW he's one of the developers of Fall from Heaven mod for Civ 4.
One of the problems is that Civ 4 is a seriously shitty game from a performance perspective. The ai munches an ungodly amount of cpu for what it does. You can run more ai on a larger map in GC2 and have the turns flip by in a small fraction of the time. Even just latency on action completion takes an inordinately long time, it's a clunker.
They probably figured it didn't matter that much since they were coding a tbs, I frequently wish them ill for it.
I really don't understand modding. Sure, it adds a lot of value to the game, but who has any time for it? And the whole enterprise smacks of "working for free." I mean, just look at Demigod, a game concept that was blatantly taken (stolen?) from a mod. I guess the really creative modders may get jobs in the industry, which could ultimately pay for all of the lost hours spent modding.
But for the record, I also wish to have an amazing and complete product from Stardock without any dependence on modding to enhance the game.
Question for Frogboy: Will we be able to import custom models to use in the editor? (I really want a way to have guns late game aka magitech) Or will the item editor be strong enough I won't need a custom model for a gun?
Also, will there be 'extra' models in the editors for players that the base version of Elemental doesn't use(sort of like the marines in WC3)?
Here is a question for the future: Is there any chance that the collector's edition of Elemental will include a CD of the best user made content from the beta(would be a nice demonstration of what the editors can do for those that buy at retail)?
Note, DOTA was not a new idea.
As far as modding goes, there's this funky thing called a hobby. It's where you work without getting paid and tell yourself it's fun. For some people, being a code monkey is fun. For some people, editing textures is fun. If they can't or don't want to get paid to make games, they can make them for free because they enjoy it. Getting paid to do it takes a lot of the fun out by adding in irritants like schedules and deadlines, not to mention customers.
If there's something wrong with Elemental, Stardock gets a bunch of shit from us and has to fix it before we'll leave them alone. If FFH2 is broke, the modders can tell us to fuck off and leave them alone because no one is paying them to give two shits what we think.
Of course, modders have to accept limitations sometimes. Some things just can't be changed without a whole new engine.
And oversight. Complete creative control is a big part of why I enjoy modding and it's the part that really makes modding be for the fun of seeing your idea reach fruition rather than as work. Plus, for somebody like me who's still in college it's good coding practice and lets me get a feel for game design. I'd be working on my current mod for my own enjoyment anyway, so releasing it is just benefitting everybody else for something I'd do anyway.
The problem with the python implementation in Civ4, as compared to games that are coded in Python, is the process of shelling out to an external non-compiled slower programming language over and over again. C++ is trucking along then recieves an order to stop, create a python instance run the instance, perform actions on the result, tear down the instance and go on (repeat over and over).
I wrote Speed Mod specifically to address this, cut out the python routines and got a significant performance increase. It worked so well that Alex Mantzaris used the concept in Beyond the Sword and coded into the base game. The only difference being that Alex is a much better programmer than I am so he created a system where odders could enable and disable the python functions as they needed them (so if there wasnt anything to do in python the engine wouldn't shell out to it).
Games that are running entirely in python dont have this issue. Its like driving a ferrari compared to driving a moped. Having access to both doesnt give you the best of both worlds. You just have a ferrari with a moped strapped to the back, then occasionally you pull over, take downt he moped and race around with it for a while.
So my feedback would be:
1. Scripting is good, Im glad to see that it will be included.
2. Source code access is also good, hopefully some of that will be shareable as well so that deeper mods can be done.
3. Shelling out from C++ to python has a significant performance cost when it is done a lot. A python script that runs when an AI player is deciding what to build in a city and may trigger a few times each turn isn't much. A python script that triggers during each combat, each unit death, or on each unit movement and could happen hundreds of times a turn on large maps could add significant latency to the game.
4. Im trying to walk the line between being technical and understandable. Don't jab me to much for technical accuracy, hopefully the point comes across.
5. Im glad to discuss more if there is anything I can do to help (though honestly if you have buddies at Firaxis I would give Alex a call and get the real skinny from him, hes been fighting this since 2005).
6. I cant wait to play the beta!!!
Wee, Python ! You have me on board !
This sounds very interesting, especially that you can mod stuff like AI and resources. Higher level stuff.
As for multiplayer, I perfectly understand that focusing on singleplayer is a sacrifice from design point of view, and respect that. But please make it possible to mod multiplayer. By modding multiplayer, I mean please allow to run modded games on your multiplayer servers. Dominions3 developers are very active and even now continue to add new nations, items etc, but they do so with little regard to balance. The result is that the game is very rich in terms of lore and unit/item/spell variety, but suffers from balance issues. So the devs gave players ability to mod a lot of it, and it helped. But it's not possible to fix fundamental issues this way. You can only tweak unit stats, add or remove abilities, add/remove/change items, spells etc. Hopefully Elemental will allow more freedom.
If you outsource multiplayer balance and design to modders by giving them tools and allowing modded games on your servers, your game being focused on SP and balanced for it is a non-issue.
Cool, I'm a software developer and while Java is my strength, I've looked at enough languages I think I can handle Python.
A favor to ask of Frogboy and the dev team. In the beta, have a readme or something that says how to start Elemental in debug mode such that I can attach my debugger and set breakpoints in the Python code. It's something you'll almost certainly need to do anyway during dev and it'd give folks like me the chance to actually dig into problems in the Python scripting and find (perhaps even fix) issues.
Maybe that's a no brainer to do in Python. I know in Java I have to start the executable in debug mode so I can attach my debugger. I'm assuming Python is similar.
ckessel's question about debugger instructions makes me wonder if the Elemental effort will include an update of (or replacement for) SmartException, which I never could get to work in Vista. Might be good to get those sort of dumps from non-coder beta folks also.
Python is the definition of a no brainer. You can practically read the stuff with no experience.
What version of python do you plan on supporting?
I'm reading some stuff for python 3.0, and I've read that its going to be backward incompatible with any earlier verison. This is how they plan get rid of some problems plagueing the lanuage for a while.
Here is my source:http://docs.python.org/3.0/whatsnew/3.0.html
There are many great features available to you once you register, including:
Sign in or Create Account