[MOD] Medieval: Conquests

CvUnit::shouldShowEnemyGlow() and CvUnit::getAnimationMaxSpeed(). However this brings an interesting question: why isn't the colo exe using those functions?

Perhaps Col does this in a different way. Anyway, the ones that perked my interest was the Render ones. I wonder if those could be used to make a unit "take a hike" and vanish off the map.

Good work with the script you script mastro you :goodjob:
 
Good work with the script you script mastro you :goodjob:
I have been thinking a bit about that script. Essentially it loops all functions in one exe and prints everything not present in the other exe and then it reverse that approach. It could be used to write all functions called by the exe regardless of if they are called by the other exe. That way it will produce a complete list of functions, which need DllExport. I already have such a list, but that list is unsorted. This script sorts it by classes, which makes it possible to look up what DllExports a single header file should contain.

Semi-related I have been thinking of making all DllExport functions private, which mean they shouldn't be used in the DLL. If the DLL and the exe needs the same function, the private function calls the DLL function. The result would be that we need have the need to modify anything, which could be called from the exe. If we need extra parameters, we just add those and make a default one for the exe.

This allows something like CvPlot::getBonus() to return the bonus viewed by the current player. This mean if it isn't unlocked, it can be hidden for the exe (drawing code) while the DLL code to check for the presence will not consider the GUI for the current player. In other words we have a set of functions for the drawing engine and one set for game mechanics, which depending on our needs may or may not return the same value.

Another nice feature in doing that would be to add asserts/breakpoints, which helps to figure out if the exe actually uses the call it can make. A number of the calls are only used for the cheat menu, which mean we can mostly ignore those.


All in all this should allow us to work better together with the exe, make it do what we want it to do and provide a higher degree of freedom to DLL modding. This isn't top priority though. I better get back to CivEffects and finish those before starting a new project.
 
In many ways I almost think you need to go off and build your own game engine, rather than being a modder, I mean lets face it you have more or less rebuilt the civ engine and the way it works anyway! :D

You could be the architect of a whole new modders 'paradise' game engine! :D
I have been thinking a bit about this statement. Not really about making a brand new engine, but rather how to define what I have done so far, plan to do and what I might do even without any current plans.

I wouldn't call it making a new game engine as such because everything builds on top of the civ4 engine. It's more in the realm of [wiki]Middleware[/wiki], though it doesn't quite fit that description either.

Looking from XML, I guess it would be correct to say that I have created a new game engine. The XML interface is heavily modified and the goal is to make one DLL file, which fits all mods.

Internally in the DLL, a whole lot of internal coding features have been added to make coding new game features easier and faster. Also a lot of error detection and prevention have been added.

I haven't done much for python though (except the domestic advisor). However the plan is to have a shared python codebase, which mean from the point of XML, there is no difference between the DLL and python.


However technically speaking it isn't a new game engine. The exe still handles what it did in vanilla, which is drawing graphics on the screen and handing input from mouse and keyboard. Anything going to the speakers also goes though the exe and there is no plan to change that. The exe does other stuff as well, but I aim to make the DLL ignore calls from the exe in that regard, making it more clear who does what. It's a great design change, but calling it an entirely new game engine is stretching it. I would rather call it a new engine, which is a front engine to the existing one.
 
I'm baffled. I'm playing the MedCol ver. 2.5.4.2. I carefully unchecked "Time Victory". Last couple of games, when the Pope was supposed to come and get me, he folded and the game said I had won. I wanted some blood. What the hell happened?

I was really looking forward to kicking his narrow ass, and I bought a replica Viking war axe from Cold Steel in preparation.
 
I'm baffled. I'm playing the MedCol ver. 2.5.4.2. I carefully unchecked "Time Victory". Last couple of games, when the Pope was supposed to come and get me, he folded and the game said I had won. I wanted some blood. What the hell happened?
I reported something like that ages ago, before I started modding. However it appeared to have disappeared and everybody forgot about it. I think I better have a systematic search though the code to review every single location where the number of turns for timed victory is used. Odds are that somewhere Kailric wrote something long ago, which allows a backdoor into activating it even when the victory condition is disabled. The question is where and how that happens.

One thing, which isn't clear to me: did you declare independence?
If you did and then won instantly, then the problem would more likely be that the pope failed to move in his troops and he surrendered because he had no troops on the map. if that is the case, then the problem lies in how he places his troops.

I think I also read about an issue where the pope can place all units in some far away location and then they just stand there and does nothing, waiting for some timer to allow you to win.

Btw technically this would be a bug report.
 
No, I never declared independence. I was taking all the time I could get to make money and buy weapons. I am using the official release, not the one you're working on, although some stuff got in there that I've never seen before.

I haven't seen any updates to this release since 2.5.4.2. Are there any? Would you mind "catching me up to date" on your experimental version's status?
 
I haven't seen any updates to this release since 2.5.4.2. Are there any? Would you mind "catching me up to date" on your experimental version's status?
I think that's the number for the newest release. We are way overdue for making another release, which has been talked about a number of times already.

I don't think there is any change regarding timed games since last release. I better proofread the code to see if I can spot anything wrong with it. Might be in the DLL and it might be in XML. I better check both.
 
I'm baffled. I'm playing the MedCol ver. 2.5.4.2. I carefully unchecked "Time Victory". Last couple of games, when the Pope was supposed to come and get me, he folded and the game said I had won. I wanted some blood. What the hell happened?

I was really looking forward to kicking his narrow ass, and I bought a replica Viking war axe from Cold Steel in preparation.

mastrude, my favorite come and go friend! Glad you stopped in again.

What exactly is a Time Victory? Isn't that if the time runs out who ever has the highest score wins? That probably doesn't have anything to do with the Pope giving up the fight. Any chance you have a saved game where the Pope gives up the next turn? I think we can still go back to the release version and check things.
 
I think we can still go back to the release version and check things.
Naturally we can do that. We can go back to any revision we ever made. However I tagged releases to make it easier to find a specific release. Also we have the master branch, which by definition should be the newest stable release and we have the release branch, which is the bugfix branch for the newest release.

Right now master and release should point to the same revision and that revision should be tagged with the release number. I didn't check, but odds are that nobody messed that up while I wasn't looking.

All this branching was made way back when we released just in case something like this would turn up ;)
 
I tried FreeOrion the other day and while I'm not impressed with the gameplay (maybe I suck, but I have a hard time getting an overview of the data I want), I did spot something interesting, which could be useful for us.

When building a ship, it could cost say 80 production and 4 turns. This mean it isn't possible to assign more than 20 production each turn. If the production is higher, the next item in the production queue will get the leftover and it will essentially be possible to build many items at once, but it will still not be possible to get the first ship in less than 4 turns.

I kind of like that concept. Imagine having a 3 turn minimum for city walls. This mean you can't just buy them when you see the enemy approaches. Likewise you can't just buy offensive units in that case.

The same goes for research. However with yield costs for research, this might not work that well. I think it would have to be pick one system. However with yield costs, we could do something else. Say a city runs out of yields for the current research. Instead of letting the assigned inventors be idle, they could start researching some other tech where they do have the requirements. Maybe the game builds a queue of all techs possible to research and the game will use that list to figure out what it want to try first. The player can then reorder the list.

Now I'm just writing whatever comes to my mind. I have no plans on implementation or know if it is a good idea or not. I only know that it will not be in the next release and that an implementation would likely be a compile time setting rather than a pure XML setting for performance reasons. We don't want it to be a major slowdown.
 
Minimum turns to build could easily be added in as a new XML option, and could be a cool addition.

For research, it still needs play testing with the yield requirements, but perhaps if the requirements are not met then research advances at a snails pace instead of being completely idle.
 
Aw Man,

I got all excited thinking this was the announcement for the latest version :D
:lmao:
For some reason I never expect a bunch of your replies even though i should be used to you by now.

I have done a bit more thinking and I have come up with the idea that the min number of turns could be modified by buildings. For instance a large shipyard could have -20% turns on ships. This could be based on unit domain or combat gear or something like that. I started thinking about a formula saying something like min turns = XML value / num working slots of the building doing the construction, but I don't think that will work well.

I have also been thinking about another aspect. If a city is constructing on multiple items in the queue at once, the interface would need to be improved to display this aspect as well because it would need better control where items can be moved in the queue, progress bar for each item and so on. This might be a small feature, which grows larger and larger and suddenly it's a great change.
 
Is a min turn req system really needed?

The main argument you put forward was that you can't just rush buy something in a turn, but the fact is you need to have the money saved to be able to rush buy, isn't that just a reward of good financial planning and economic management?

The other limiter is the fact that you can still only build 1 thing per turn (per city), so if you rush bought a combat unit, you would still only have one which would be outnumbered by an approaching army..

I think it would total a lot of work, but not a lot of reward.. if you want something to take a long time, you increase it's cost, same for if you want to make it hard to rush build something.

I think it would add a quantity of complexity (multiple things in the build list of each city) but no actual return on gameplay... Except perhaps in massive prduction cities that could complete the production of say 4 units in 4 turns with a minimum of 4 turns each, getting 4 units in 1 turn, instead of 1 unit each turn... but that does not seem like much to me.. other than a lot more thought juggling...
 
Well, as long as the other players follow the same rules, it should all balance out, as far as rushing goes. In history, when groups of men where really motivated they could accomplish amazing feats of construction in very little time, and there is no better motivator than gold. It still takes one turn to complete the project. So, if the enemy is at your door, rush building walls will not be useful for this next attack as when your turn ends your walls will not be complete yet.

As far as the next release, sorry, I've gotten side tracked messing around with Unity (and other life things). I managed to build an Arkanoid clone in Unity from my course I'm taking. Anyway, I'll post the files today. My latest version is not complete yet, it is in the play testing phase so when you play just make note of what can be improved/finished/axed etc.
 
As far as the next release, sorry, I've gotten side tracked messing around with Unity (and other life things). I managed to build an Arkanoid clone in Unity from my course I'm taking.
That explains a lot. I was starting to wonder if you were kidnapped by an angry mob or something. You never know what those peasants do to people who use witchcraft (like invisibility).

As interesting as Unity might be, I would like to focus on finishing the next release, which includes finishing CivEffects. If you have the time, it would be nice if you could review the XML files and figure out how I ruined the tech requirements. I messed up somehow and lost the Or requirements :(
 
That explains a lot. I was starting to wonder if you were kidnapped by an angry mob or something. You never know what those peasants do to people who use witchcraft (like invisibility).

As interesting as Unity might be, I would like to focus on finishing the next release, which includes finishing CivEffects. If you have the time, it would be nice if you could review the XML files and figure out how I ruined the tech requirements. I messed up somehow and lost the Or requirements :(

You lost me at "focus" ;) If you lost the Or requirement can't you just add it back?
 
Top Bottom