• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.
Showing developer posts only. Show all posts in this thread.
1819 to 1836 Converter Proposal

EDIT: Gah there is a thread below which deals with the same thing. Could some moderator merge this thread with the other one?

EDIT vol2: Sure, Grosshaus

Hello to all. Before I start, I want to mention that anything I speak of here I make no guarantee I will make or work with. I'm just asking myself the question whether the huge undertaking would be worth it, or possible.

My proposal is that I could write a converter for 1819 EU2 save games to Victoria 1836 save games. Before you start laughing, I'd say I'm sufficiently fluid in C++ and file handling to make a program like this. Else I'm sure someone else could. The big problem however, is the issue about how to translate EU2 save game data into Victoria save game data. There is also a an issue about the strange game world that would be initialized into Victoria, not at all close to the real campaign. Would anyone even consider to continue playing under these conditions?

Let's compare the save game formats. Victoria and EU2 use the same basic file format. The actual differences begin in the data itself. In order to convert an EU2 game to a Victoria game the following things would have to be taken care of:

1. Years. The years between the end of the EU2 grand campaign and the start of the Victoria GC would probably have to be considered in some way, although they initially could be totally ignored.
2. Provinces. There are a lot more provinces in Victoria than in EU2. It could just be managable however by letting a X province in EU2 represent Y provinces in Victoria.
3. Armies and fleets. How the &#!"/&#! does one convert EU2 military units? Giving X divisions for Y number of men or what?
4. Technology. Perhaps this could be solved by letting a certain interval tech of EU2 tech give certain levels of Victoria tech for a country.
5. Countries. There aren't nearly as many countries in EU2 as there are in Victoria, and many of them do not have the same names. This could be lived through however by simply placing down certain countries without any regard to historical accuracy.
6. POPs, factories & the WM. These elements are very different in Victoria. WM data could however be importanted from the real Victoria GC, and the same applies to POP data. Factories could be placed based on the number of manufactories.
7. Center of trades. These EU2 high value provinces would probably be needed to be represented somehow as high value Victoria provinces. One might accomplish this by factories, high population or something else.
8. Terra incognita. As far as I'm concerned the corresponding provinces would most likely be initialized as empty, colonizable provinces.
9. AI and events. The AI events are a huge problems, considering a lot of event files maybe don't take into account when certain countries don't exist (I think of majors like England here). The AI is pretty screwed as well.
10. Diplomacy. This is not a major problem; EU2 treaties are probably happily converted to Victoria treaties.
11. DP settings and religion. While religion is really important in EU2, it becomes much less important in Victoria. It is of course suitable for the time period, but huge losses might take place here. And how would one reflect the DP settings of an EU2 country in Victoria?
12. Any other Victoria specific data could probably be imported from the Victoria GC as previously mentioned. It requires it is not too closely tied to the existance of countries however.

As can be seen there is a HUGE number of problems with a potential conversion tool. However, I do think it might just be possible to pull off.
 
Last edited by a moderator:
I'll check my email when I get home from school (that is very late this evening ;/ ). My capabilities to communicate here in school are rather limited to the forums.

I do realize we will have to do a lot of planning first. One of my initial concerns is that it might be difficult to generate a valid Victoria save game from scratch, which will load and run without problems. As I mentioned in my post above it is because many countries might be missing that would normally be included in the campaign. In how many normal Victoria campaigns is England missing for example?

For raw data I think the most immediate tasks is to create a table of EU2 province numbers that contain a certain number of Victoria province numbers. Also a list of EU2 tags need to be created to map onto Victoria country tags. I think other conversions such as manufactories to factories can wait a bit, until we know what we are dealing with.

Over and out.
 
Last edited:
First I'd like to respond to the previous poster:

While it is possible to industrilize with very few factories around, I believe it is necessary for a few basic goods created by factories to be avabilable for education of POPs. This belief is based on however that the WM does not create goods out of nothing, which is something I can't confirm. Anyway, there are few of countries in the GC that start out with factories (such as England). It therefore leads me to think that one should convert EU2 manufactories and/or center of trades into Victoria factories. I'd rather not have the really broken economy in the out-of-the-box GC where some goods are chronically short of supply.

As a side note and idea; perhaps it is possible to convert EU2 victory points to Victoria prestige? At least the user could be given the option, and that a certain ratio would be applied (like 1 Victoria prestige = 10 EU2 VP). That should make the relative start between countries a bit more differentiated.

Now I'll get back to the things we need to do as soon as possible:

We need to decide on what language and compiler/tools to use. While I'd prefer to use C++, the best compiler and development environment is MSVC. However, it is way to expensive and has it tendencies to strongly reduce portability. (I just stopped using version 5 and tried to convert a few old projects to DevCPP - what a pain...). Of course there a loads of freeware compilers too, but those usually have their issues and lacking documentation. Like you stated earlier Java could be used as well, but I'm not too familiar with it so I'll need to practice a bit if we decide to go that route. To round it off the most important thing is that the language we choose need to have good facilities for clear IO, UI and data structure handling.

Now to the conceptual part. I haven't read much (not even in the forums), but is there any known documentation of all the specific Vic-related scripting statements for the .EUG files? Else we would have to research these in order to accomplish anything meaningful.

I've said earlier that we need someone to do the boring task of organizing EU2 province IDs into Victoria IDs, and EU2 tags into Victoria tags. Preferably this should be done in a format that we could use to load into the converter (if we don't need to modify it further). That is in a text format, but note that it means plain ASCII text and not Word! (For any non programmer who'd like to do that.) Below I'll make examples of tag definitions.

First country tag mappings file, with EU2 country to the left and corresponding Victoria to the right, separated by white space (note that many of the tags would be the same as seen below):
FRA FRA
ENG ENG
XXX YYY

Then the province mapping file. It is worse because each EU2 province would probably need to map into several Victoria province IDs (to the left the EU2 ID, to the right a list of Victoria IDs separated by whitespaces):
214 184 637 223
142 384 73 273
112 64
198 632 612 600 273

Tip: To view the IDs in the game, type "showid" when pressing F12. This should help you immensely since there are very few ID maps as of yet for Victoria.

Note that I made all those provinces above up, and that they probably should probably be sorted in EU2 numerical order for convience. In the same way the country list should be sorted in EU2 alphabetical order.

My last qustion is, how are states represented in the Victoria save game file? Are they at all, or are they simply initialized during loading time? If they aren't that is certainly more convient than if we have to care about them. Factories and colonial buildings might be organized into states though, and then Victoria province IDs need to be mapped into state IDs as well.
 
Last edited:
I don't have HOI and I'm not planning to buy it very soon, so I couldn't help with that. Therefore I do agree upon that we stick to a EU2->Vic utility for the time being.

OK so we've chosen Java. What compiler should we use? Tell me where to download it and I'll relearn Java myself in a short time (I did try it three years ago).

There is an additional task we should begin coding a soon as possible, when other things have to wait. There must be some kind of base class for the .EUG file format, that should be able to load such a file and split it into its logical components (that is keywords, numbers and strings). All relationships should also be tracked. Perhaps one then could derive another class for EU2 from this base class, and one class for Victoria. The task of these classes would be to check if the contents in the .EUG file loaded were appropiate for each game.

I believe the creation of this IO system for .EUG files is very important if we want to get started anywhere soon. When we got a stable loader everything else gets to be less of a pain.
 
Yepp this is not only programmers' business you know. We still need suggestions on how to convert EU2 elements into Victoria elements, and it would be great if someone would like to convert those province IDs for us (since it will probably take a long time and that we can't really test the conversion tool for real until it is ready).
 
JRod: I'm glad you want to help! Sadly, the only Victoria ID map I've seen in one of Europe. But you can start up Victoria and then open the console by pressing F12, and then you write "showid" and press Enter. This will show the province number of the province where the mouse cursor is.

Remember, we will have to convert water provinces as well if we want to place navies correctly later. This might not or might be an issue.

Cpt. Frakas: I'm sure that is a possibility, but those 16 extra years in between may actually give us an excuse to change certain things pretty much. That is something which is needed since a lot of things in EU2 can only be poorly translated into Victoria.
 
Nothing said you have to play all the way from 1419 to be able to convert... I'll probably play the age of revolutions or something to keep it fairly historical, and then use the conversion tool as a continue for an all-too-short scenario.
 
Nothing said you have to play all the way from 1419 to be able to convert... I'll probably play the age of revolutions or something to keep it fairly historical, and then use the conversion tool as a continue for an all-too-short scenario.
 
I thought we had already settled for an end of EU2 = start of Vic converter ;). Anyways, that's what I'll be able to test (since I don't own HoI), and it also seems to be the most popular feature around here.

By the way, is this Java compiler any good?
http://gcc.gnu.org/java/

If it is enough for our project, I suggest all download that to keep it coherant. As I've mentioned earlier I don't want to do any excessive code converting, mostly because many extra boring hours spent with C++ with this issue has convinced me. I do know Java is more compatible, but there still might be compiler differences.

EDIT: Ughh that compiler seems to be a pain to install under Windows...
 
Last edited:
G-Klav, sure we need your help, but it will still take a while before we decide upon the file format for those IDs. However, it's also possible to fire up Vicky and type "showid" into the console if you want to see the rest of the IDs. Though I have to admit it is much easier when there is a ready map to easily view the IDs on.
 
I'm still here, I've just been away for most of this week. Probably I'll sit down next or next next week (I have a few important tests coming up), and write an overview about all suggestions made in this thread.
 
EU2Vic sounds just fine I think (with a special stress put on the '2').

I'd like to add we really need to have some kind of public workspace where the current progress is listed. Either this could be a special thread in this forum, maintained only for this purpose, or some special feature of some other web site that allows people to communicate and exchange work.
 
Thank you Ironfoundersson for trying some basic conversion out. I have some answers to your questions about issues that arise:

Populations:
I don't think we will need to convert the populations from EU2. Think about it, the population of a province in EU2 is really only the population in its biggest capital. I don't see any reason to why we couldn't instead import population data from the Victoria Grand Campaign and use with slight modifications. These modifications would include religion and culture perhaps (for those colonies).

Province sizes and locations:
I don't see much of a problem if whether an EU2 province represents 1 or 10 Victoria provinces (that might very well be the case in Germany for example). It is not that hard to program for as well. The only issue I can see with multiple Victoria provinces corresponding to one EU2 province is army placement and state belonging. In this case I think one "main province" in Victoria should be chosen for each EU2 province, where armies are placed and which's state is the one that receive any factories from manufactories etc.

States:
Sure, it will be hard to decide who owns a state. However, if you look into the structure of a save file you see a state can be divided up by each country that owns province(s) in it. I think that each EU2 province that needs have to its manufactory converted to a factory for example, should add a corresponding factory to the state of the country it belongs to. I'll make an example below:

EU2 provinces A, B, C and D lie in the same Victoria state.
A and B are owned by country X, C by country Y, and D by country Z.
A contains manufactory K, and adds a corresponding factory to the part of the state that belongs to country X. B also contains a manufactory, and it adds another factory to the state of country X.
C does not contain a manufacotry, and nothing is added.
D contains a Center of Trade, and it should represent some kind of factory which is added to the state of country Z.

I would like to remind people about that everything does not have to be converted. The decreasing effect of religion could for example mean we decide to ignore religion at all if we want to, even though it'd be nice to see the conversions you've made in EU2 to appear in Victoria. DP sliders we can drop as well, unless we somehow want them to have some kind of far-fletched effect on the policies of the country converted. Some things are just stupid to convert, like the goods produced in the provinces (I don't even know if they can be edited in Victoria). And yet again we can convert some countries non existant in Victoria to some that did exist (and a lot of countries did change names during that time).

Remember, no need for this to be overdone or overcomplicated.
 
Last edited:
I have ICQ: 150858672, MSN I got tired of two years ago when they started it and said my own email address was not good enough, and wanted me to get a hotmail address. Never!

mIRC is an option as well, we could create a temporary chat room (or join an exsisting one), and decide upon a time to meet there.

To assign industrial rankings: It is quite a good idea, but the downside of it is of course the user won't recognize his former industrialized manufactory provinces. I now envision the a mix of your idea and the localized province based manufactory idea; sites with manufactories would have a higher chance of receiving a factory (with the total number placed still based on the industrial ranking). It might be used to determine positions of starting railroads as well (if we need any).
 
I'm in Sweden and to me it says you posted 01:25 in the night ;). (Sweden is in the Central European time zone.) Assuming we round that time off to 01:40, it means you are 6 hours after me. I guess I'd have to stay up a bit late, and you would be able to talk to me in the early evening. However, as you say messaging in real time is not really necessary, but I think it enhances a feeling of responsability. Then again, it is more hard to present complete ideas in mIRC than in the forums or in email because one is expected to reply quickly.
 
That would be fine with me. I am currently busy, but tomorrow after the maths test I should have time again.

Hehe I think I'll make a go at designing a pseudo-loader for .EUG files in C++. If it works it should not be too hard to change the general structure to Java. The reason I want this code going is so that we can start to output valid .EUG files in a very short period of time.
 
Last edited:
I have now studied the most general file format of the .EUG files. This does not only apply to the .EUG files, but also to the event files, AI and POP files. It is entirely in what context the file is read which determines how the data gets interpreted. The format can at its simplest be described with the following:

Once '#' appears on a line, the rest of that line is discarded (that is until a new line character is detected).

Any number or text of undefined length is read until any delimiters are found. A delimiter is a white space, a tab, a new line, an equal sign, and the '{' and '}' signs. However, the equal sign and the '{' and '}' (that will hereby be incorrectly referred to as "parenthesis"), have special meanings although they do terminate the fields above. Therefore for general separation a space or tab must be used (or a new line if that's preferable). New lines only act as delimiters and do not disturb the general flow of text.

Each .EUG file contains a number of root nodes. That is, everything does not have to start from the same node. A node is defined as something which contains either other nodes or a data element array within it. Its syntax is: "node_name = data_element" or "node_name = { data_element_array/node_names }". A valid name for a node begins with an alphabet character (case does not matter), and may include an underscore character '_'. A name may not include a number or any other character however.

A data element is what is actually used by the game; nodes just tell where the data belong. Data might come in a single piece (when directly following the equal sign after the node), or as a part of an array. Data either is a number, that may include a period decimal sign '.', or a defined or undefined length string. The difference between the two string types is that an undefined length string goes on until a general delimiter is encountered, while a defined length string starts with a quote sign ' " ' and ends with another one. In addition to being declared differently these string types are also used differently in the game engine; UL strings are often (if not always) read and then used as constants that equal other things than the actual text data. DL strings however are used in such a way that the text data they contain are used directly within the engine. As such, UL strings have not been observed as case sensitive, while it often matters to a DL string. A DL string may also contain numbers and any other character until the ' " ' is reached (new lines though are forbidden).

That is about it. I may be wrong about certain details (especially what valid names are for nodes and what characters are valid). It can be easily correct when we learn more about the file format however. Even though everything looks complex it is not so complex that is looks as can be seen above.

Now for the question how I'll implement my test version of this (and how you may implement the Java version). Probably the file itself will have to be represented as an object, which can be saved or loaded from. A loading function would read through the file and create a tree like structure, where each branch would represent a number of nodes or data elements. If only one data element was found, that would mean no parenthesis had been found. A corresponding saving function would then save the contents of this tree to a visually pleasing file with indents for every new level of the tree.

So how would one connect this generic structure to the game data? Well, we could add a validation object (which also could be loaded from a file we've defined ourselves). It would create a pseudo-tree structure with a list of valid nodes and in some cases data elements for each node. A function would then be added either in this object or the file object to check whether the loaded data was valid or not. A clever communication system between both objects would mean that we could look up what node or data element to use for a certain thing we wanted to change in the validation object, and then make the modification with the file object. Of course the different validation objects would have to be created for each game (EU2, Victoria), and different file objects could be created to load different files at the same time.

I find the idea of writing this loader very intriguing, and I'll start tomorrow when my head is no as dizzy as it is now.