Roll Call! (Post here to let others know you show up from time to time)

How many people do you think regularly visit the Civ4Col Mod forum?


  • Total voters
    25

MDoulos

Chieftain
Joined
Feb 5, 2017
Messages
59
Hi Guys,

This forum has seen busier days. That is to be expected as the Civilization brand has moved significantly forward in terms of technology and graphical beauty. But some of you, like me, have a heart for Colonization, and seeing as this is the most up to date Colonization there is, you come back often, if only just to browse the forum and hope it stays alive. Let us reassure each other we still exist!

Comment below with something as simple as "I'm still here." at the very least and give more detail if you come back often or if you're new, etc.

Someone may notice this is technically my first post in the forum, but it's not. Can't remember the password for my other account "Sanotra" and I don't care because I prefer MDoulos anyway. Fun fact about me. I'm currently learning to program and have a small glimmer of hope I may do some long desired modding to Colonization.

Looking forward to hundreds ( :lol: ) of responses to this thread! (also mention if you know someone else is visiting often but can't post right now, or if someone is planning to come back)
 
I'm still here and actively programming on M:C. The goal is still to make a highly optimized DLL file with tons of new features for xml modders. This will in time (hopefully this year) unlock the option to make multiple very unique mods based on the same DLL. The reason for this is a lack of skilled C++ programmers and this approach can provide maintained and updated DLL files for more mods than we have programmers without stretching thin. It also completely eliminates the need to transfer modcomps from one mod to another, which is a really time consuming task, which is prone to add new bugs.

As always we are recruiting anybody interested in contributing to building this "platform" or even those just interested in using it for their own mods without contributing new code. Anybody interested should contact me, or post in the M:C subforum.
 
I'm still here. As Nightinggale mentioned the M:C mod is still in development. I myself am not able to contribute much at the moment as I am in school and have other obligations but I do plan to be able to contribute more at some point.

I voted 51+ as I believe there are many people who visit these forums. The vast majority of visitors never post, they are just looking for mods and such. However, the M:C mod still gets downloads everyday so that fact alone tells me that there has to be a large number of people visiting these threads and downloading mods.
 
I voted 51+ as I believe there are many people who visit these forums. The vast majority of visitors never post, they are just looking for mods and such. However, the M:C mod still gets downloads everyday so that fact alone tells me that there has to be a large number of people visiting these threads and downloading mods.

That is a great point and metric to use! That's encouraging to think the forum may be getting so many. Also, the fact that the mods or maps get thousands of downloads implies the lurkers vs posters ration is extremely high.
 
The goal is still to make a highly optimized DLL file with tons of new features for xml modders. This will in time (hopefully this year) unlock the option to make multiple very unique mods based on the same DLL.

Great to hear! Could you post a quick explanation about what the DLL file is (as a fledgling programmer, I have no clue what DLL means) and how what you're doing can be used and useful? Thanks!
 
Fun fact about me. I'm currently learning to program and have a small glimmer of hope I may do some long desired modding to Colonizat

Oh, by the way, fun fact about me... I started learning to code by modding Civ4. I really enjoyed it and the people on the forums here where a great help so it kept me going. Now I am finishing my last semester for my Associates degree for programming. So, just be warned once you start learning and if you like it you could end up with a degree :p
 
Great to hear! Could you post a quick explanation about what the DLL file is (as a fledgling programmer, I have no clue what DLL means) and how what you're doing can be used and useful? Thanks!
The game consist of the following:
  • game exe
  • game dll
  • python
  • xml
  • media files (graphics, audio etc)
The game exe is closed source and we can't mod anything in that one (that's the usual with non-free games). However somewhat unusually they split the game exe into the exe file and a dll file. On game start, they are both read and fuse into one in memory, acting like it's just one big exe file. This allows some modding inside the otherwise unreachable exe file. The game is essentially the DLL, which can then forward tasks to/read from the other parts. In other words the DLL provides access to the most powerful and game changing features. It's written in C++, which is used for most high end games because it can really deliver performance. The tradeoff is that you need to set up a compiler (though I have tried to make that easy).

Python is also programming. It doesn't require compiling, but lacks the access to "everything" like the DLL, meaning while some people claim it to be easier to use on entry level, it's far worse if you really get into modding. Python is also significantly slower than C++. It is mainly used to code graphical interfaces, like advisor screens. Some mods use it for more, but I recommend against this for many reasons. The only reason for using python for more than graphical interfaces is if you don't want to mod the DLL at all (modding the dll makes non-windows versions of civ4 unable to load the mod). Bug finding and fixing tend to be easier in the DLL.

Xml and media files are just that: setting up units and stuff, including graphics and sounds for stuff like that.

Everything before this line applies to all mods using any version of the civ4 engine.

New options available in the Medieval Conquest DLL is:
  • highly optimized, meaning the game should run smooth and the wait for the AI should be short. A number of tasks are preformed faster than in vanilla (in some cases a lot faster)
  • savegames adapts to xml changes instead of just breaking. Adding a unit breaks savegames in vanilla, but not with this DLL file (though it's not 100%. Removing units in use and such can still break)
  • added civ4 features, such as plotgroups and tech tree
  • xml data verification and human readable error messages for invalid xml values
Quite possibly a whole lot more. It has been developed for years. We better make an official feature list and not just some random selections when writing posts once in a while.

What I'm working on right now is a new concept I coded from scratch, which we have named CivEffects. Simply put, it's a merge of traits, civics, techs, perks (which is techs researched with FF points) as well as some other xml files. The result is that a tag from any of those files will be available to all files of the CivEffect system. This means if we say take the ability to give all units of a certain type a certain promotion, we can do that with traits in vanilla (if I recall correctly). However with this shared code approach, the xml modder can provide this feature to civics or techs or something else without changing anything in the DLL. With more than 100 tags to set in CivEffects (which will grow with time), degree of freedom to the xml modder is extremely high.

You can take something from techs, like (un)locking of professions or units and apply it to traits or civics. You can also do something like blocking a "prepare for war" civic if the leader has a pacifist trait (once completed. This part is not 100% done yet). I don't think it is possible to overstate the amount of combos available, which will have a huge impact on the game.

CivEffects are more or less complete. They work as intended for 4 files, but I need to add the remaining planned files to this. Also there is a bit of GUI work left.
 
The game consist of the following:
  • game exe
  • game dll
  • python
  • xml
  • media files (graphics, audio etc)
The game exe is closed source and...

Thank you Nightinggale for such a thorough summary! If you could, please append to that by quickly saying where each of these file types can be found and how to successfully save them in a mod. (this discussion could be it's on thread!) So the Civ4Col programmer needs to know C++, and Python eh? Right now I am strong-arming my way into programming using Javascript and Python, once I start getting my beak wet, how difficult is it to pick up C++, will I even be able to read it? Your system sounds great. Once completed, will a modder be able to use your DLL file withOUT including all of the new features you put in there (like tech tree)? Is there an easy way to turn off some features and on some others?
 
So, just be warned once you start learning and if you like it you could end up with a degree :p

I'm surprised you went after a degree! I hear a lot of programmers say they don't need one to get a job and that as soon as you learn it's easy to find work! Haha, either way, I do like programming and I actually got up this morning looking forward to my training.
 
Nightinggale could you please tick your vote on the poll for this page? Thanks! :D
 
Thank you Nightinggale for such a thorough summary! If you could, please append to that by quickly saying where each of these file types can be found and how to successfully save them in a mod.
It's pretty strait forward. Most files are in Assets, like Assets/python, Assets/xml etc. However do note that if a file is present in vanilla and not in the mod, the game will use the vanilla file. The C++ code however can be whereever the modder wants because the game will not look at it. It will look at the compiled DLL file, which ends up being Assets/CvGameCoreDLL.dll. For Medieval Conquest, the source code is in sourceDLL/DLLsource. Since sourceDLL is a submodule (read: an alias to another git server), this path will be valid for all mods using that DLL file and a code update for one mod will affect all.

So the Civ4Col programmer needs to know C++, and Python eh? Right now I am strong-arming my way into programming using Javascript and Python, once I start getting my beak wet, how difficult is it to pick up C++, will I even be able to read it?
According to Bjarne Stroustrup (creator of C++), once you know one or two languages, you know them all. For the most parts they are the same. There are some families of programming languages and switching family is an issue, but all languages mentioned here are of the same.

Once completed, will a modder be able to use your DLL file withOUT including all of the new features you put in there (like tech tree)? Is there an easy way to turn off some features and on some others?
That's the idea. For now, most new features have been tested for being used, not for not being used, meaning it might require some bugfixes at some point, but we will deal with that if it turns out to be needed.

I'm surprised you went after a degree! I hear a lot of programmers say they don't need one to get a job and that as soon as you learn it's easy to find work!
Lacking a degree would likely make you first in line when the company has to downsize. Getting something to work and getting it to work well and bug free are two different things and proper training makes it easier to end up in the latter category. People have spent billions and decades figuring out theory on what to do and what not to do. This is why proper theory is just as important as learning the syntax and getting Hello World to work. In fact I would argue that in the long run, the theory is more important.

Nightinggale could you please tick your vote on the poll for this page? Thanks! :D
I postponed voting because I was clueless to what to say. I looked up RaRE and it has 526 downloads, but it's unevenly distributed. During the peak, it had more than 3 new downloads daily for two months. I consider that to be a pretty high number considering that I never announced it anywhere else than this forum. As a result I would say 50+.
 
The C++ code however can be whereever the modder wants because the game will not look at it. It will look at the compiled DLL file, which ends up being Assets/CvGameCoreDLL.dll. For Medieval Conquest, the source code is in sourceDLL/DLLsource. Since sourceDLL is a submodule (read: an alias to another git server), this path will be valid for all mods using that DLL file and a code update for one mod will affect all.

Does this mean that the mod folders don't contain a DLL file but the modded DLL file must replace the one installed by the vanilla game? I'm sure I understood that wrong.

According to Bjarne Stroustrup (creator of C++), once you know one or two languages, you know them all. For the most parts they are the same. There are some families of programming languages and switching family is an issue, but all languages mentioned here are of the same.

Awesome that is what I thought! Already something I noticed is that the various languages I dabbled in looked the same but with different syntax.


Lacking a degree would likely make you first in line when the company has to downsize. Getting something to work and getting it to work well and bug free are two different things and proper training makes it easier to end up in the latter category. People have spent billions and decades figuring out theory on what to do and what not to do. This is why proper theory is just as important as learning the syntax and getting Hello World to work. In fact I would argue that in the long run, the theory is more important.

Are you saying proper theory can't be learned outside of a college setting? What do you think of all of the websites that teach coding (Team Treehouse, CodeSchool, CodeAcademy, CodeCombat, FreeCodeCamp, etc.)?
 
Does this mean that the mod folders don't contain a DLL file but the modded DLL file must replace the one installed by the vanilla game? I'm sure I understood that wrong.
No. Next to the game exe, there is a dir called "mods" (or you can create it if it's missing). You place mods there and you place everything for the mod in that dir. This means the modded DLL file for M:C is in mods/Medieval_Conquest/Assets/CvGameCoreDLL.dll. If it's missing, the vanilla DLL will be used.

Are you saying proper theory can't be learned outside of a college setting? What do you think of all of the websites that teach coding (Team Treehouse, CodeSchool, CodeAcademy, CodeCombat, FreeCodeCamp, etc.)?
Considering that I never paid any of those people and instead learned programming at the university, I would say I'm not the best person to ask that question. What I meant is the self study approach tend to be "how do I make this work?" rather than "how do I design this to avoid bugs and find/fix those, which unavoidable turns up in the alpha version?" or "how to I design this to cope with the expected peak load?". It might also be something as simple as how to make a plan, which will get the task done before a deadline.

One publicly well known example where this failed is the Obamacare website where people should sign up with their insurance company. When displaying a page, the page would have something like "last name = get last name from database", then get first name, then age etc. It made around 40 requests for each page view. The thing is that people with good theoretical database knowledge knows that one lookup takes around the same time regardless of how many variables you read from said table (in this case a person). This means if the page code was written to fetch all the needed data in one go, the database server would be able to handle 40 times as many people at the same time. It doesn't matter if your max is 100 or 4000 during testing when you only have 5 testers, but when you release it to the real world and get 3000 users at the same time, the result is an overloaded server, really slow page loads and people giving up due to getting timeouts all the time. This is a really good example about the difference between "make it work for me" and "make it work". The reason it went that bad seems to be due to using two teams, one for the database and one for the web site. The web site people didn't consider how often they made requests from the database because that was outside their training. They just made it look nice... or something. It's far from the only incident where something like this happens. It's just the best known worldwide.

To answer the question if it is completely impossible to learn how to program outside of college/university environments: it's not impossible, but I dare to say that unless you have a degree as proof of your skills, you will have a hard time standing out from those, who claim to be programmers, but lack the theoretical background to deal with "sideeffects".

Having said that, I have encountered people without degrees, who knew what they were talking about and some with degrees who talked garbage. Also there are quite a lot of "low tech" programming tasks where degrees aren't needed. A team tree house "degree" in wordpress would be good enough to make web pages for small businesses. Say a plumber usually needs a somewhat static page with contact info and info on which tasks he is licensed to do etc. The theoretical knowledge needed is much smaller for such a task and the margin for error is significantly higher. This means asking if a degree is needed to get hired and keep your job can only be answered with "it depends".
 
A team tree house "degree" in wordpress would be good enough to make web pages for small businesses. Say a plumber usually needs a somewhat static page with contact info and info on which tasks he is licensed to do etc. The theoretical knowledge needed is much smaller for such a task and the margin for error is significantly higher. This means asking if a degree is needed to get hired and keep your job can only be answered with "it depends".

The impression I have so far of the programming world, is that a lot of a person's skill/success likelihood depends on the individual and how committed that person is to learning and how thorough they are in getting things done. If a person for example (this isn't me) devours every self-help resource, reads tons of stuff, learns multiple languages and structures, gets an overview of how all basic programming works in different fields, plows through all of the paid websites, and creates dozens of real world projects... I'd say that person is likely to be much more knowledgeable, experienced, and worthy of trust with your code than say, a guy who goes to college and doesn't have the passion or the focus to succeed.

I'm gonna try to be the first guy. But time is limited. With what I've got, my goal is to have a wide scope of knowledge and a dedication to expertise in whatever field I go in to.
 
Well I am still here intermittently keeping tabs on the 2071 mod. It's tough cause I've been kidnapped by the grey aliens from the mod and have to post from a containment chamber aboard their saucer :cry::scan::assimilate::p but I'm hoping to eventually develop a new version based on Nightingale's and Kailric's improved M:C DLL, once it gets to a stable/final state with no further XML changes. I edited the top post in the 2071 thread with some thoughts for anyone interested to join in on mod development :shifty::D and included a link to the draft design document on Google Drive.

I don't think lots of people read these forums but there is still some player interest as people continue to download mods like M:C and 2071. :borg::thumbsup:
 
My thoughts on degree vs self-taught is that work experience trumps them both. School programs would be different of course, but my online school just gave the basics and the work load wasn't heavy at all. For example, in my C# class all I had to do was read the chapter, take an untimed quiz, do one assignment, and sometimes post on a forum. That one assignment wasn't enough to really ingrain the concepts being taught. What taught me how to use C# was my C++ background and building my own extensive C# project.

I agree with Night in that knowing how to code and knowing how to code efficiently is two different things. It can all be self taught though with the right discipline I do believe. I had worked with Civ4/Civ4Col for a few years in the C++, but when Night joined on a few years back I noticed really quick just how much of an amateur I was :p

Even after getting my associates degree, I will still be very far behind Night as far as ingrained knowledge and being able to apply that knowledge. There is just so much to learn and new things to learn, it basically never ends. And it is obvious the more you have on your resume the better it will be for you in the job market. If you are hoping to enter the field creating a new or modding existing projects is the best way to learn in school or not, and it would be something tangible you can put on your resume.
 
Well I am still here intermittently keeping tabs on the 2071 mod.
That's awesome. I remember seeing you active all the time when I was busy here as an XML modder. Indeed it seems to me like there about 3-5 guys who keep this forum active, and the rest get involved from time to time, like me.


I edited the top post in the 2071 thread with some thoughts for anyone interested to join in on mod development :shifty::D and included a link to the draft design document on Google Drive.
The hyperlink to the 2071 thread leads to a security error in chrome. I clicked go back to safety!
 
...the work load wasn't heavy at all. For example, in my C# class all I had to do was read the chapter, take an untimed quiz, do one assignment, and sometimes post on a forum. That one assignment wasn't enough to really ingrain the concepts being taught. What taught me how to use C# was my C++ background and building my own extensive C# project.
For this very reason, I like Code Combat. It's a coding game meant to teach coding to children, but in my opinion it's the only effective way to keep interest and learn (for me). The other resources, for adults, are exactly as you described, even online. They have you watch a video or two, do a 2-5 question untimed quiz, maybe type a few lines of code, and you're on to the next videos which have an entirely new concept! So after just a couple of videos and a quiz, they talk to you as if you internalized and breathe the concept they just showed you! Code Combat on the other hand, has you typing the whole time, to make your hero move around and fight. It's repetitive, like a game is, but fun. I'll type the same concepts over, and over, and over again. Never getting bored because it is a game. And then slowly as I progress in levels, they add new concepts, which I must then repeat over, and over, and over again. Genius.

Snippet I typed from memory of just some code I recently worked on which is just engraved into my brain and I know exactly what it does:
Spoiler code snippet :
Code:
while (true) {
  var enemy = hero.findNearestEnemy();
  var flag = hero.findFlag();

  if (flag && flag.color == "green") {
     hero.pickUpFlag(flag);
}
  else if (flag && flag.color == "black") {
     if (hero.isReady("cleave") {
         hero.pickUpFlag(flag);
         hero.cleave();
}   else {
         hero.pickUpFlag(flag);
}
}
 else if (enemy) {
  hero.attack(enemy);
}


}
And I type that almost every level, with additional code typically being added to that to pick up items, check health, place traps, etc.

I agree with Night in that knowing how to code and knowing how to code efficiently is two different things. It can all be self taught though with the right discipline I do believe. I had worked with Civ4/Civ4Col for a few years in the C++, but when Night joined on a few years back I noticed really quick just how much of an amateur I was :p

Haha right on.
 
Hey Nightinggale, when I try to open the dll files, all I see is gibberish ( a whole bunch of random characters ). Why is that, and how do I edit or even look at the C++ held inside? Thanks in advance!
 
My thoughts on degree vs self-taught is that work experience trumps them both.
I both agree and disagree. Programming is one of those things where you learn it by doing it. However if this is all you do, you can end up sticking to what you figured out yourself and you will only figure out say 5% on your own. This mean you will not improve your coding skills as you should and you will stay an amateur forever.

Think of it this way. Imagine building a house. You have a bunch of bricks. You can figure out how to place them next to each other, but if you increase in height, they tip over. To make them stick together you need mortar. This will make the bricks stick together even if you go up. However if you just have mortar, you will not get anywhere either because it's useless without bricks. Now say bricks are programming experience and the mortar is education, including gaining theoretical knowledge. You can go around with one layer of bricks doing simple code, but you need proper training to increase in height. This means in order to make the finished product you are aiming for, you lay the foundation (of mortar to keep the example simple). This means getting to know simple code like if, for loops and stuff like that. Then you gain experience by placing a row of bricks. Next you learn more theory, which will then act as the foundation for the next row of gaining experience. If you stick with gaining experience too much, you won't grow in height. If you pay too much attention to theory without gaining actual coding experience, you will end up with mortar without bricks to place it on and it will just dry up without being used and will be lost. You somehow need to balance the two approaches to maximize skill gain.

Hey Nightinggale, when I try to open the dll files, all I see is gibberish ( a whole bunch of random characters ). Why is that, and how do I edit or even look at the C++ held inside? Thanks in advance!
There exists two kinds of programming languages: interpreted and compiled. Interpreted means the computer can read the source code and act on it. This includes all script languages. Compiled languages are unreadable by the computer at runtime. Instead they need a compiler to translate the human readable code into machine code. C++ needs to be compiled.

Compiling is a one way translation. The source code is written in .cpp and .h (and outside vanilla .hpp is also used). I'm not going to explain it all right now. Follow the guide here https://sourceforge.net/p/colonizationmodcollection/wiki/GIT/
I wrote how to download and compile M:C as well as how to use git to get the newest version of the mod. Some info applies to all mods and some are specific to the custom setup used by M:C.
 
Top Bottom