Programm-Code
for English just click here
Quellcode
Der letzte freigegebene Quellcode zum Programm liegt unter http://bote.codeplex.com/ unter Source Code. Die 63115 von Ende Februar 2011 ist 6 MB groß, danach wurden die restlichen Dateien integriert, was der Wunsch von MOD'ern war, der aktuelle Download ist 443 MB groß. Hier ist zusätzlich ein Download des Source-Codes Build 70507 (2,5 MB).
Der Code ist gut kommentiert und hier direkt einsehbar.
Das Urheberrecht ist zu beachten !
Threads:
- Warum Codeplex ... (und warum nicht github, BfW, gna.org, Mercurial, DVCS) http://forum.birth-of-the-empires.de/viewtopic.php?f=24&t=2192 (search entry t=2192)
- Source Code http://botf2.star-trek-games.com/viewtopic.php?f=15&t=3481 (search entry en_t=3481)
Codeplex: Issue Tracker
http://bote.codeplex.com/workitem/list/advanced
Definitions | |
---|---|
STATUS: Proposed = vorgeschlagen
IMPACT (low, medium, high): = Bedeutung oder Prio? CUSTOM: |
SourceForge
momentan (04/2013) wird überlegt, den Quellcode aufgrund von Problemen von Codeplex zu SourceForge (SF) zu übertragen.
- Artikel über SF http://www.golem.de/1201/88784.html
- Wikipedia: http://de.wikipedia.org/wiki/SourceForge
- Vergleich verschiedener Anbieter http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities#Available_version_control_systems.2C_more_features
- maybe Terms of Use for it http://slashdotmedia.com/terms-of-use/
Verwendete Sprache C++
Als Sprache wird C++ verwendet.
- Online-Buch: Einstieg in C++ http://www.willemer.de/informatik/cpp/index.htm
- Offline-Kurs: http://c-plusplus.de/tuts/cpp/vcppk.zip
Verwendetes Programm Microsoft Visual Studio 2008
Als Programm wurde Microsoft Visual Studio 2008 verwendet (mindestens Version "Standard", die Express-Versionen besitzen keine MFC).
Download-Quelle für die Express-Version (da ist alles dabei, es ist zeitlich unbegrenzt verwendbar. Die Lizenz der Express Editions schreibt jedoch vor, dass damit keine kommerziellen Programme erstellt und anschließend verkauft werden dürfen. Zum Üben und Testen ist es jedoch perfekt geeignet. Damit geht auch nicht nur C++.
Nur BotE lässt sich mit den Express Editions nicht kompilieren. BotE benötigt die MFC (Microsoft Foundation Classes), welche eine Sammlung von C++ Klassen inkl. GUI Editor für Windows Programme ist.)
- http://www.computerbase.de/downloads/system/entwicklung-und-server/visual-studio-2008/ oder
- http://www.microsoft.com/de-de/download/details.aspx?id=3092 (kostenlose Registrierung erforderlich)
Beim Kompilieren auf "Release" gehen, sonst erhält man eine relativ große Debug-BotE.exe (ca. 8,5 MB). Sir Pustekuchen packt die Exe nach dem Kompilieren zusätzlich mit dem UPX-Packer.
Threads:
- Kompilierprobleme http://birth-of-the-empires.de/phpBB3/viewtopic.php?f=32&t=1295 (search entry t=1295)
SVN
Wer eine automatische Source-Code-Aktualisierung braucht, kann eine SVN verwenden. Als SVN (Subversion=Versionsverwaltung) kann VisualSVN verwendet werden (Download: http://www.visualsvn.com/visualsvn/download/)
Die SVN hängt sich in den Windows-Explorer ein (rechte Maustaste).
Dort zunächst einen Ort für den Programm-Code festlegen (evtl. BotE-Verzeichnis des jeweiligen Users, wo ab V0.81 auch die bote.ini abgelegt wird), dort rechte Maustaste: SVN-Checkout (Volumen ca. 1 GB)
Als URL of repository angeben: https://Bote.svn.codeplex.com/svn oder -um nur den Source-Code zu laden- https://bote.svn.codeplex.com/svn/BotE%20Game/trunk (replace %20 by blank)
Wenn der SVN manchmal Problem macht, dann ist es am besten, sich den ganzen SVN nochmal (an neuer Stelle) runterzuladen, auch wenn's etliche MB sind.
Hier ist noch ein Thread im Forum dazu:
- Problem beim svn-update http://birth-of-the-empires.de/phpBB3/viewtopic.php?f=7&t=1741 (search entry t=1741), hier eine Anleitung: http://birth-of-the-empires.de/wiki_files/Downloads/BotE-Repository-Checkout(v1.0).doc
und hier interne Threads:
- Repository: http://forum.birth-of-the-empires.de/viewtopic.php?f=16&t=1424 (search entry t=1424)
- Quellcode: http://forum.birth-of-the-empires.de/viewtopic.php?f=16&t=1020 (search entry t=1020)
Auch hilfreich könnte diese Beschreibung sein http://frickelblog.de/?p=336, über TortoiseSVN auch diese Aufstellung http://sopra.le-gousteau.de/Subversion.
Alternative: Visual Studio 2008 Professional Edition (90-Tage-Testversion)
Eine Alternative wäre Visual Studio 2008 Professional Edition (90-Tage-Testversion). Mit dieser Version erstellte Programme dürfen jedoch nicht verkauft werden, aber das ist bei BotE ja eh nicht der Fall. Damit sollte sich BotE problemlos kompilieren lassen. Einfach die Projektdatei (.sln) aus dem BotE-Code-Verzeichnis doppelklicken und auf kompilieren drücken (meist F6), fertig.
http://www.microsoft.com/downloads/de-de/details.aspx?FamilyID=83C3A1EC-ED72-4A79-8961-25635DB0192B
Installiert werden müsste eigentlich nur die C++ Umgebung inkl. MFC, die restlichen Programmiersprachen und SQL-Server-Zeugs braucht man für BotE nicht. Kann sein das man noch das neuste ServicePack für VS2008 braucht. BotE ist jedenfalls mit diesem kompiliert.
XML
XML Parser: TinyXML
Threads: http://forum.birth-of-the-empires.de/viewtopic.php?p=29473#p29473
Ziel: deutschen und englische Listen mergen, das heißt z.B. <DescriptionDE>, <DescriptionEN> und zukünftig vielleicht auch ein <DescriptionFR> usw. Lediglich die Namen und Beschreibungen sind ja sprachabhängig. Für die Verwendung verschiedener Sprachen bräuchten wir noch ein Konzept.
Z.B. könnte man sich da an Civilization 4 orientieren. Da sind auch alle Informationen in XML Dateien abgespeichert. Hier ist ein Beispiel, wie die Städtenamen sprachabhängig sind:
<TEXT> <Tag>TXT_KEY_CITY_NAME_VIENNA</Tag> <English>Vienna</English> <French>Vienne</French> <German>Wien</German> <Italian>Vienna</Italian> <Spanish>Viena</Spanish> </TEXT>
- Shiplist.xsd Datei (XML Schema) ->Struktur und Validierung
- Shiplist.xml Datei (basierend auf Shiplist.xsd) ->Die eigentlichen Daten
vielleicht pugixml: http://pugixml.googlecode.com/svn/tags/latest/docs/quickstart.html
schreiben vll. mit "sprintf" http://forum.birth-of-the-empires.de/viewtopic.php?p=29498#p29498
So könnte es aussehen:
<?xml version="1.0" encoding="utf-8"?> <MajorRaceData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="MajorRace.xsd" version="0.81"> <Race id="MAJOR1"> <LanguageIndependentData> <NumberAssignedToBuildings>1</NumberAssignedToBuildings> <NumberAssignedToShips>1</NumberAssignedToShips> </LanguageIndependentData> <LanguageDependentData lang="de"> <HomeSystem>Terra</HomeSystem> <BreedName>Menschen</BreedName> </LanguageDependentData> <LanguageDependentData lang="en"> <HomeSystem>Terra</HomeSystem> <BreedName>Humans</BreedName> </LanguageDependentData> <LanguageDependentData lang="fr"> <HomeSystem>Terre</HomeSystem> <BreedName>Gens</BreedName> </LanguageDependentData> </Race> </MajorRaceData>
Beispiele aus dem Programm-Code
String aus der Stringtable.txt holen
s = CResourceManager::GetString("DEMOGRAPHY_MENUE");
Exceldatei zu botf2Doc.cpp (58548)
Der Latest-Code ist hier direkt einsehbar.
Neben vielen anderen Unter-Programmen, wo z.B. Bildschirme gezeichnet werden oder Unterfunktionen (Kampf berechnen) ausgeführt werden, gibt es den Haupt-Code botf2Doc.cpp.
Hier eine Excel dazu (Spalte E ist das Hauptprogramm, allerdings Stand 58548, vorher sind Zeilen eingefügt z.B. Spalte B Filter "nichtleere anzeigen"). Die Datei ermöglicht einen ersten Überblick.
Weitere Exceldateien zum Programm-Code
Der Latest-Code ist hier direkt einsehbar.
\Gamedata\AI
AI(englisch) bzw. KI repräsentiert die Computergegner:
\Gamedata\Events
\Gamedata\Galaxy
\Gamedata\General
\Gamedata\Intel
\Gamedata\Races
- DiplomacyController.cpp (Races) (Diplomatische Angebote wie z.B. Krieg)
- Research.cpp (Races) (Forschung, inkl. Funktion CalculateResearch; AI-Forschung siehe #\Gamedata\AI)
- ResearchComplex.cpp (Races) (Spezial-Forschung)
\Gamedata\Ships
- BeamWeapons.cpp (Laser-Waffen)
- Combat.cpp (Verwendung noch unklar)
- CombatShip.cpp (Wiki-Seite: Schiffskampf-Berechnung)
- Fleet.cpp (Flotten-Eigenschaften+Befehle)
- Hull.cpp (Hülle, Hüllenreparatur)
- Shield.cpp (u.a.Schild-Aufladung)
- Ship.cpp (Schiff/Flotte: Symbol zeichnen, Tooltip, u.a.)
- ShipHistory.cpp (verwaltet die "Übersicht aller Schiffe")
- TorpedoWeapons.cpp (Torpedos-Waffen)
\Gamedata\System
\Gamedata\Trade
\Gamedata\Troops
\GUI
- ShipDesignMenuView.cpp (Schiffsdesign-Bildschirm), aber Berechnung der Kosten in ShipInfo.cpp
Variablen etc.
definition | short decription | relevant files | affects |
---|---|---|---|
CurrentHabitants | Population (Bevölkerung) | botf2doc.cpp | AddPopSupportCosts |
LetPlanetsGrowth | Growth of population | Sector.cpp |