How to make a mod without ModBuddy?

RothX

Chieftain
Joined
Sep 25, 2015
Messages
5
Hello everyone,
I am interested in making a mod for Civ V, but the ModBuddy Program doesn't work for me because I have a Mac. I use WineBottler a lot, (a program that lets you run windows programs on a mac without actually running the Windows OS) so I figured that this would work for the SDK. The SDK did actually boot up with WineBottler, but when I clicked on the ModBuddy option, it said I needed Visual Studio. This framework was obviously made for Windows, and I tried, but installing frameworks/APIs doesn't really work with WineBottler. If anyone knows a way to get ModBuddy to work with WineBottler, that would be great, but I am guessing that there is not. I looked up some modding tutorials for Civ V, and it doesn't seem like ModBuddy does that much besides manage XML and Lua files. So I was wondering if I can just write XML and Lua in a normal text editor and then package them into a mod without ModBuddy. If this is indeed possible, I would like to know what I need to do that is different from the ModBuddy tutorials. Using Bootcamp or something similar would be an absolute LAST RESORT for me, and only recommend it if you say that creating a mod without ModBuddy is literally 100% IMPOSSIBLE.
Thank you in advance for your help.
 
It's completely possible without ModBuddy, but you'll have to create the .modinfo file - which is the only reason that the mods you use are recognized as mods at all by the game - yourself, whereas ModBuddy would do it for you. And there's no tutorial for making them AFAIK.

As an example, here's what ModBuddy automatically created for me for my Magyar mod:
Spoiler :
Code:
<?xml version="1.0" encoding="utf-8"?>
<Mod id="0544f06d-57ca-400f-9f3a-f059983b4cdb" version="1">
  <Properties>
    <Name>AW's Magyar Tribes Mod</Name>
    <Teaser>Adds the Magyars to the game as a playable civ.</Teaser>
    <Description>Adds the Magyars to the game as a playable civ.</Description>
    <Authors>AgressiveWimp</Authors>
    <HideSetupGame>0</HideSetupGame>
    <AffectsSavedGames>1</AffectsSavedGames>
    <MinCompatibleSaveVersion>0</MinCompatibleSaveVersion>
    <SupportsSinglePlayer>1</SupportsSinglePlayer>
    <SupportsMultiplayer>1</SupportsMultiplayer>
    <SupportsHotSeat>1</SupportsHotSeat>
    <SupportsMac>1</SupportsMac>
    <ReloadAudioSystem>1</ReloadAudioSystem>
    <ReloadLandmarkSystem>0</ReloadLandmarkSystem>
    <ReloadStrategicViewSystem>0</ReloadStrategicViewSystem>
    <ReloadUnitSystem>1</ReloadUnitSystem>
  </Properties>
  <Dependencies />
  <References />
  <Blocks />
  <Files>
    <File md5="C46ABA511FBE2C382280A2E6B4B0DA5C" import="1">Art/Civilization/AlphaIcons/AlphaMagyarIcon_128.dds</File>
    <File md5="320D5A439BBFDADC2980EE3960188DBB" import="1">Art/Civilization/AlphaIcons/AlphaMagyarIcon_16.dds</File>
    <File md5="4AB4C9A590ABE0C81963E098A5BC5749" import="1">Art/Civilization/AlphaIcons/AlphaMagyarIcon_24.dds</File>
    <File md5="70BEB1E7F78DEA35D93F6676EDAB9FA2" import="1">Art/Civilization/AlphaIcons/AlphaMagyarIcon_256.dds</File>
    <File md5="910FA5528B962CACC413C460C18728B9" import="1">Art/Civilization/AlphaIcons/AlphaMagyarIcon_32.dds</File>
    <File md5="BE698D91633129563001C4BCE84E3CC1" import="1">Art/Civilization/AlphaIcons/AlphaMagyarIcon_45.dds</File>
    <File md5="7DEFE159063A2687D736BCC5303BF7CD" import="1">Art/Civilization/AlphaIcons/AlphaMagyarIcon_48.dds</File>
    <File md5="84DC11E0DC6D6704D4C9F6E9DB8EDFC0" import="1">Art/Civilization/AlphaIcons/AlphaMagyarIcon_64.dds</File>
    <File md5="987C8670C02F59A0D6358D0C636D9FCF" import="1">Art/Civilization/AlphaIcons/AlphaMagyarIcon_80.dds</File>
    <File md5="7C063F48E7AAB58CDF648AEB3C29E7AB" import="1">Art/Civilization/Icons/MagyarIcon_128.dds</File>
    <File md5="E1FC8A17D62C5BAE74C71D020E8A13BE" import="1">Art/Civilization/Icons/MagyarIcon_256.dds</File>
    <File md5="EF80BC5D5278979DF3C9E172FE50CC4E" import="1">Art/Civilization/Icons/MagyarIcon_32.dds</File>
    <File md5="F702F023E0357519E70896B2DA885E8E" import="1">Art/Civilization/Icons/MagyarIcon_45.dds</File>
    <File md5="61D2E1BD61894F5B28588B159DF2D7E9" import="1">Art/Civilization/Icons/MagyarIcon_64.dds</File>
    <File md5="5A085AE4D81B8884C9FD3D89C1777FA4" import="1">Art/Civilization/Icons/MagyarIcon_80.dds</File>
    <File md5="FD69889F2358A84B9DC05A100CAADAD8" import="1">Art/Leader/Icons/ArpadIcon_128.dds</File>
    <File md5="D85A1B0622BC7FF6480CB3ED98B1094A" import="1">Art/Leader/Icons/ArpadIcon_256.dds</File>
    <File md5="22D2B9BFAFD4DD17491558423246D4EE" import="1">Art/Leader/Icons/ArpadIcon_64.dds</File>
    <File md5="1A32FCC44E0BF629AEFFFB19D10D53A6" import="1">Art/Leader/Screens/Arpad_Diplo.dds</File>
    <File md5="CD3AF18D2C071545A347B572C98719BC" import="1">Art/Leader/Screens/Arpad_DOM.dds</File>
    <File md5="920EEECED5BB000AF2DA3D0D97904E1D" import="1">Art/Leader/Screens/MagyarMap.dds</File>
    <File md5="3B7B2CC1B8D9127F812BFFF53C5E8CE9" import="1">Art/Units/Cuman/Graphics/Horseman_Russia.blend</File>
    <File md5="D6D94317793D02D265A464F700700C5E" import="1">Art/Units/Cuman/Graphics/Horseman_Russia.dds</File>
    <File md5="4639DC9CF22BACF2799A335831A0DD8A" import="1">Art/Units/Cuman/Graphics/Horseman_Russia.fxsxml</File>
    <File md5="FAF3D86793DFBC0CF5B5FE6687FDD3B7" import="1">Art/Units/Cuman/Graphics/Horseman_Russia.gr2</File>
    <File md5="ED628898FA18C31ED488EBA084FD8E6F" import="1">Art/Units/Cuman/Graphics/Horseman_Russia_gloss.dds</File>
    <File md5="7E0522289E2199CCC70BC5CEA852CEA3" import="1">Art/Units/Cuman/Graphics/Horseman_Russia_Horse.dds</File>
    <File md5="AC41C06BA721315512F26433220FEDF7" import="1">Art/Units/Cuman/Graphics/no_gloss.dds</File>
    <File md5="9B8823093559C9D34BBE22621BFD044A" import="1">Art/Units/Cuman/Icons/CumanFlag.dds</File>
    <File md5="A4D24CA622C0A5AB25ECFDCF31C635D7" import="1">Art/Units/Cuman/Icons/CumanIcon_128.dds</File>
    <File md5="2424512D53BF9478DD66022E6C62945A" import="1">Art/Units/Cuman/Icons/CumanIcon_256.dds</File>
    <File md5="C1A68AF9105783E2A83FA373C1C36F1A" import="1">Art/Units/Cuman/Icons/CumanIcon_45.dds</File>
    <File md5="A39E9BA31396CFAF6DA0CA88CA635CD1" import="1">Art/Units/Cuman/Icons/CumanIcon_64.dds</File>
    <File md5="FE3AA39DAB2987008027A91AC0378A73" import="1">Art/Units/Cuman/Icons/CumanIcon_80.dds</File>
    <File md5="43316B5B4D43A296BF29C4DB2DF86107" import="1">Art/Units/Horka/Graphics/Early/Horseman_Persia.blend</File>
    <File md5="26714268E8098A521ADDF329D3CB098D" import="1">Art/Units/Horka/Graphics/Early/Horseman_Persia.dds</File>
    <File md5="660603D3389399B97100AD75272AE5CC" import="1">Art/Units/Horka/Graphics/Early/Horseman_Persia.fxsxml</File>
    <File md5="96F24C9F2D78452991E23CDD72B1588E" import="1">Art/Units/Horka/Graphics/Early/Horseman_Persia.gr2</File>
    <File md5="EB50926F04084A480EE8EB4D00AA07E0" import="1">Art/Units/Horka/Graphics/Early/Horseman_Persia_gloss.dds</File>
    <File md5="9E816B74D9F7F95B750BACA69EAD0289" import="1">Art/Units/Horka/Graphics/Early/Horseman_Persia_Horse.dds</File>
    <File md5="3DEF48656240765A85BD0EB3CD43D6B2" import="1">Art/Units/Horka/Graphics/Early/Horseman_Persia_Horse_gloss.dds</File>
    <File md5="F379D2492D4E806A4D5E877CC18F2427" import="1">Art/Units/Horka/Graphics/Late/41M_Turan_II.blend</File>
    <File md5="562F101C4CC40A9A4F71E90D44EB36E1" import="1">Art/Units/Horka/Graphics/Late/41M_Turan_II.dds</File>
    <File md5="84C5641139B6E6D9D9980B75A2F631AB" import="1">Art/Units/Horka/Graphics/Late/41M_Turan_II.fxsxml</File>
    <File md5="B56DA6C4CCBEAF1E3A350945F1D19341" import="1">Art/Units/Horka/Graphics/Late/41M_Turan_II.gr2</File>
    <File md5="AC41C06BA721315512F26433220FEDF7" import="1">Art/Units/Horka/Graphics/Late/no_gloss.dds</File>
    <File md5="32CDDF7E0F27D92A39A7B65FF031B5F8" import="1">Art/Units/Horka/Icons/HorkaFlag.dds</File>
    <File md5="60AA0515D92058341BD6E010C6B68564" import="1">Art/Units/Horka/Icons/HorkaIcon_128.dds</File>
    <File md5="71B0B348F154D092F2D7E805E608F1ED" import="1">Art/Units/Horka/Icons/HorkaIcon_256.dds</File>
    <File md5="F86B4BFE0397114550DDAE34BC6A3EC1" import="1">Art/Units/Horka/Icons/HorkaIcon_45.dds</File>
    <File md5="F6148F69D42323A4A3CF58E976E7C8A7" import="1">Art/Units/Horka/Icons/HorkaIcon_64.dds</File>
    <File md5="1F1C199A58949D54A08E6838FADD8DF5" import="1">Art/Units/Horka/Icons/HorkaIcon_80.dds</File>
    <File md5="EF7C185FEA29380B6D80C5E8463C5C00" import="1">Audio/Magyars_Peace.mp3</File>
    <File md5="7B85FF20A731B68B422EE705037BA477" import="1">Audio/Magyars_War.mp3</File>
    <File md5="DE16AC1F94C6B44F7985729982974F08" import="1">Audio/Magyars_DOM.mp3</File>
    <File md5="1F51E4F4CA43EDED40A55A605B3FED6F" import="0">Compatibility/Civ IV Traits/CivIVTraits_cleanup.xml</File>
    <File md5="90EEF6131094A35937104458A49AA4E3" import="0">Compatibility/Civ IV Traits/Compatibility_CivIVTraits.sql</File>
    <File md5="F711C071E43FFE703AAED21721DB3FBB" import="0">Compatibility/Civ IV Traits/Compatibility_CivIVTraits_Text.xml</File>
    <File md5="5D11857F280C3E7CA14221D472149691" import="0">Compatibility/Cultural Diversity/Compatibility_CulturalDiversity.sql</File>
    <File md5="7D99DE7F1A2AB867E9099A18260D794A" import="0">Compatibility/Map Labels/Compatibility_MapLabels.sql</File>
    <File md5="27E797F379FEF46BE386DE87CF185975" import="0">Compatibility/Piety and Prestige/PietyAndPrestige.sql</File>
    <File md5="D6DEBEECEC685D9D0DB553F97BFFBFF7" import="1">GameInfo/Arpad_Scene.xml</File>
    <File md5="9485B57D2A4BE3394726851E6C693B38" import="0">GameInfo/AudioDefines.xml</File>
    <File md5="4F085347505FC98B8558BA317ACC863C" import="0">GameInfo/CumanArtDefines.xml</File>
    <File md5="8AC0D0B7E7EAB94EFB494ED9376E14B8" import="0">GameInfo/HorkaArtDefines.xml</File>
    <File md5="AA6D4A9B6E1B95A4C767FEDFAB8A878A" import="0">GameInfo/IconTextureAtlases.xml</File>
    <File md5="D63DC8BB6AA0F310DD55B264DB49C7E2" import="1">Lua/PlotIterators.lua</File>
    <File md5="D1D5AD9B58CF32BA39FB949B98DC1C32" import="0">Lua/UA_Functions.lua</File>
    <File md5="601506D10513383ECAFC93457417B8BC" import="0">Lua/UU_Functions.lua</File>
    <File md5="AF94F5E8388B10384546433B049C7C38" import="0">XML/Buildings/MagyarDummyBuilding.xml</File>
    <File md5="4624D6D4A7243A22FEF91DE65B8D438C" import="0">XML/Civilization/Civilization_Magyar.xml</File>
    <File md5="531FAC83EA712F3D0BE3E808F7BEED4D" import="0">XML/Interface/Colors_Magyar.xml</File>
    <File md5="F3763153DCFB5E9F159D43CFB8BBB64B" import="0">XML/Leader/Leader_Arpad.xml</File>
    <File md5="376B15A1A36FBA300061422883F1DE3A" import="0">XML/Leader/Trait/Trait_Arpad.xml</File>
    <File md5="E4E44614B7AD4655E5A91E74A3345D1E" import="0">XML/Text/Text_en_US.xml</File>
    <File md5="A79A88B1BA0373E8BA1864E894B61AB1" import="0">XML/Units/unitpromos/UnitPromos.xml</File>
    <File md5="45A664F2789FE8792133038495AFF04D" import="0">XML/Units/Unit_Cuman.xml</File>
    <File md5="789EDA8050CA88BCDF1A5E982CFA9C40" import="0">XML/Units/Unit_Horka.xml</File>
    <File md5="C3F3E26A72E57159A2D46AEA2E182CDA" import="0">XML/updateOtherCivs/updateCityStates/updateBudapest.xml</File>
  </Files>
  <Actions>
    <OnModActivated>
      <UpdateDatabase>GameInfo/AudioDefines.xml</UpdateDatabase>
      <UpdateDatabase>GameInfo/CumanArtDefines.xml</UpdateDatabase>
      <UpdateDatabase>GameInfo/HorkaArtDefines.xml</UpdateDatabase>
      <UpdateDatabase>GameInfo/IconTextureAtlases.xml</UpdateDatabase>
      <UpdateDatabase>XML/Civilization/Civilization_Magyar.xml</UpdateDatabase>
      <UpdateDatabase>XML/Interface/Colors_Magyar.xml</UpdateDatabase>
      <UpdateDatabase>XML/Leader/Trait/Trait_Arpad.xml</UpdateDatabase>
      <UpdateDatabase>XML/Leader/Leader_Arpad.xml</UpdateDatabase>
      <UpdateDatabase>XML/Buildings/MagyarDummyBuilding.xml</UpdateDatabase>
      <UpdateDatabase>XML/Text/Text_en_US.xml</UpdateDatabase>
      <UpdateDatabase>XML/Units/Unit_Cuman.xml</UpdateDatabase>
      <UpdateDatabase>XML/Units/Unit_Horka.xml</UpdateDatabase>
      <UpdateDatabase>XML/updateOtherCivs/updateCityStates/updateBudapest.xml</UpdateDatabase>
      <UpdateDatabase>Compatibility/Civ IV Traits/CivIVTraits_cleanup.xml</UpdateDatabase>
      <UpdateDatabase>Compatibility/Civ IV Traits/Compatibility_CivIVTraits.sql</UpdateDatabase>
      <UpdateDatabase>Compatibility/Civ IV Traits/Compatibility_CivIVTraits_Text.xml</UpdateDatabase>
      <UpdateDatabase>Compatibility/Cultural Diversity/Compatibility_CulturalDiversity.sql</UpdateDatabase>
      <UpdateDatabase>Compatibility/Map Labels/Compatibility_MapLabels.sql</UpdateDatabase>
      <UpdateDatabase>Compatibility/Piety and Prestige/PietyAndPrestige.sql</UpdateDatabase>
    </OnModActivated>
  </Actions>
  <EntryPoints>
    <EntryPoint type="InGameUIAddin" file="Lua/PlotIterators.lua">
      <Name>PlotIterators</Name>
      <Description>
      </Description>
    </EntryPoint>
    <EntryPoint type="InGameUIAddin" file="Lua/UA_Functions.lua">
      <Name>UA FUnctions</Name>
      <Description>
      </Description>
    </EntryPoint>
    <EntryPoint type="InGameUIAddin" file="Lua/UU_Functions.lua">
      <Name>UU Functions</Name>
      <Description>
      </Description>
    </EntryPoint>
  </EntryPoints>
</Mod>
Obviously, your code would have different values, but the overall structure should be the same.
What I find most concerning is the file and mod IDs, which must be totally 100% unique not only within the context of the mod, but also within the context of all other mods. Exactly what the constraints are for how they should be formatted is beyond me.
Have fun with that.
 
Thanks for the quick response!
Yeah, most of that file looks pretty simple and replicable, except those IDs. That seems like it might be bordering the impossible to do manually. This might just be worth a Bootcamp or VMware.
Just to clarify, is the making the modinfo file for you the only reason that ModBuddy is more useful than just text files? Or are there other features?
 
Oh, I was responding to AW, but PawelS replied while I was writing.
Thanks, I will check out that template, see how it works.
 
Advantages of ModBuddy (other than the modinfo file):

- When writing XML files it will automatically add in the end tag once you write the start tag, which basically speeds up total code writing time by upwards of 10% (since I'm assuming writing the markup between the tags takes everyone longer than writing the tags themselves)
- Will alert you when you make an XML syntax error
- Easier to organize files, plus when you move a file, you don't have to change the filepath in the modinfo - that's done automatically
- syntax highlighting for most code
- Don't remember if it automatically puts all files in the correct encoding or not, but that's definitely a "maybe"
- Building the mod produces an up-to-date folder with the most recent version of the mod which will automatically overwrite your older version, so you don't have to manually delete it
- Building the mod also, along with the folder version of the mod, packages the mod for use in convenient .civ5mod format
- As part of the Civ5 SDK, comes with Nexus, FireTuner and World Builder; Personally I don't use any of those except FT which is invaluable for testing lua scripts
 
Ok, thank you!
You've been very helpful. I'm new here, and I can't believe how fast I got a detailed response.
 
Oh, Nutty did that post while I was typing again. Thanks I will try that.
In case there is anyone else in a similar predicament as me, I will come back here later and post my results. And maybe I'll even have a shiny new mod...
 
The only real outstanding constraint is that the Steam Workshop wants to work with ModBuddy and the xxxx.civ5mod file for uploading the mod to the workshop. But all the civ5mod file is is a 7z archive with a fancy name to it, so even not being able to generate that is not so much of an issue if you zip/upload to sites like this here one in order to share your work with others.

BTW I never edit code of lua/xml/sql files from within the ModBuddy tool. The Modbuddy editor is too much a pile of smelly something....I just open the files in Notepad and edit. Copy/paste find/replace functionality of a plain old text editor far outweighs any advantages of editing directly within ModBuddy, and is generally faster because ModBuddy 'thinks' about the text of the code as it is being alterred and slows down your work. There isn't anything special about any of the lua, xml, sql files that requires them to be in some way 'packaged' or 'saved' from within modbuddy. It's just more convenient to use ModBuddy to set up all the activation methods (<UpdateDatabase>, import="1", EntryPoint type="InGameUIAddin", etc.)
 
I never use modcruddy I just looked at the structure of other mods and learned from that, the only tools I use are the logs and whowards "modtools" for verification if something goes wrong although that's not always 100% accurate but once you learn the program it's quite brilliant especially if you decide at some point to make a big mod as sometimes you might forget something or make a mistake then modtools will generally find it so you can correct it apart from that there are many people here who are more than willing to help you out if you get into difficulty
 
I just open the files in Notepad and edit. Copy/paste find/replace functionality of a plain old text editor far outweighs any advantages of editing directly within ModBuddy,

you do realise you can find/replace in ModBuddy itself, right?
 
The ModBuddy editor is quite good for editing XML files. It's bad for SQL files (as it sometimes marks valid code as a syntax error), and for Lua files (as in case of large Lua files it becomes very slow).
 
One question, for uploading the mod to steam and having no issues in the unpaking, if you generate the MD5 with chaos it will work?
But you generate a number, and when you put it again in the file it changes...
 
Those file hashes game uses are not for checking file integrity, but for referencing mods - MD5s act as identifiers here.

In ModBuddy you have Associations tab where you can add hashes (IDs) for dependences, references, or blockades for particular mods.

For instance, any mod that requires the popular whowards' DLL, has a pointer to its ID in dependencies section of that tab. That ID for whoward's mod was generated only once, and stays intact through every version of that mod, so that other mods dependent on it could reference some unchanging value.

Technically speaking, every released mod should have unique ID that never changes between its updates.
 
Last edited:
Back
Top Bottom