Welcome to Final Frontier Plus!

TC01

Deity
Joined
Jun 28, 2009
Messages
2,216
Location
Irregularly Online
Welcome to Final Frontier Plus!

Final Frontier Plus is, as the name suggests (and as the readme will tell you if you read it), a modmod of Jon Shafer's Final Frontier mod/scenario included with Beyond the Sword. Unlike most of the existing Final Frontier modmods, it is not a total conversion; instead, it is an expansion of Final Frontier itself. The goals of the project are threefold.

The first goal is to significantly improve the speed and reliability of Final Frontier. Through a handful of merged speed mods, as well as countless bug fixes accumulated over the last few years, we have mostly accomplished this goal. Final Frontier Plus runs at nearly the speed of unmodded Beyond the Sword and has fixed almost all outstanding issues with the original mod-scenario. Future improvements will likely still occur over time, especially as more bugs may be unwittingly introduced.

The second goal is to make Final Frontier Plus a richer and more immersive experience than the Final Frontier scenario. As anyone who has played Final Frontier will likely realize, that mod is rather lacking in terms of content. This is an open-ended goal. Through the work of God-Emperor, many new features have been added to the game and the BUG interface has been overlaid over the Final Frontier interface. More work in this area of things is to come over time.

The third goal is to improve a modder's experience in modding Final Frontier. To do this, we have removed a number of hardcoded limitations from the Python code of Final Frontier, created a number of new XML tags as a result of the removal of such hardcoding, and finally generally cleaned up the original Final Frontier code. This too is an open-ended goal that currently has received more focus than adding new content (as it goes along with improving speed and reliability).

This forum, then, is for anything to do with the mod. Have a feature request? A feature in another space mod that you think should be merged into this mod? Post it here. Are you working on a total conversion of Final Frontier? Are you having issues getting your mod to work with Final Frontier Plus? Post it here. Do you want to discuss the gameplay of Final Frontier (Plus) and how it can be improved? Post it here. This forum is for Final Frontier Plus development and discussion, but it's also a place for general questions about how Final Frontier works and plays.

You are welcome to produce modmods of Final Frontier Plus. I personally see a slight distinction between using FF+ as a platform for your own space mod, and making a modmod with additional content for FF+, which is why I specify this.

Current Version: 1.84

Some useful links:

Main Mod Thread: The mod's discussion thread in the Modpacks forum. It will continue to be used in conjunction with this mod forum.

Download Thread: Download the mod here! This thread has links to the download pages where you can get it, as well as install instructions, an explanation of which download you want, and changelogs.

Bug Thread: If you run into a problem, or something that may or may not be a bug, post it in this thread. This thread is for both Final Frontier Plus and unmodded Final Frontier bugs- the thread below is for unmodded Final Frontier only.

Final Frontier: Problems and Issues Thread: This thread, stickied in the Official BTS Mods forum, has long been the place for reporting Final Frontier bugs. As mentioned, one of Final Frontier Plus's principal goals is to fix all bugs reported here. You can continue to report problems there, or post it in this forum, or in the main mod thread.

Github Pages Site: There isn't much here right now, but we now have a Github Pages site to complement the new github repositories. Go here if you're interested in helping develop! (Or post here!).

Included Mods:

Final Frontier Plus, in addition to improvements to the game, game speed, and game AI, also contains some community content designed for both Final Frontier and unmodded Civilization 4. Here is a list of community mods that aren't specifically targeted to Final Frontier that we have merged:
Here is a list of Final Frontier content that we have merged, some of it that we wrote and released separately:

Credits:

Mod Team:
-TC01
-God-Emperor

Contributors (Code or Art):
-deanej (bugfixes, ideas, help, mapscripts, wormhole graphics)
-Kiwikaz (feature effects code)
-cephalo (SpiralGalaxy mapscript)
-T-hawk (production overflow fix)
-stmartin and HoTK team (CAR mod)
-Sephi (various speed improvements)
-Valkrionn (Inno install script)
-The Navy Seal (Final Frontier resource art)
-ColdFever (blue marble graphics)
-Pep (Unit orders modcomp)
-BUG/BAT/BULL team (BUG 4.4)
-killmeplease (Defender Withdrawl modcomp)
-UncutDragon (Lead from Behind modcomp)
-TheLopez (Multiple Favorite Civics modcomp, Attack/Defense combat bonus mod)
-denev (Multiple Production modcomp

Help and Suggestions:
-davidlallen, Afforess, phungus420 (DLL help)
-The_J (python and graphics help)
-Emperor Fool (python help, SDK help)
-PieceOfMind (feedback)
-PsiCorps (suggestions, bug reports)
-dawe1311, wpulsar (bug reports)
-apenpaap (suggestions)
-JEELEN (suggestions)
-renegadechicken (suggestions)

Special:
-Jon Shafer for creating Final Frontier.
-Firaxis/2K Games for making Civilization 4
 
Congratulations on your sub-forum :)
 
Thank you both!

Hopefully we can put this forum to good use.

I plan on posting a thread about modding (a modder's guide, with info and a place for general modding questions), and then maybe open up some discussions. Is there anything else that might be useful for me to post here as its own thread right now?

Of course, people can feel free to open their own threads- that's the point of having a forum.
 
I plan on posting a thread about modding (a modder's guide, with info and a place for general modding questions)
A section specifically devoted to Vista/7 SDK issues (using VC 2008/2010) would be appreciated. Problem of note - compiling a working Debug dll that doesn't CTD when running under Vista/7.
 
I've never had trouble compiling a working debug DLL on Windows 7 for Star Trek. If you have issues, it's either specific to your computer and/or Final Frontier Plus.
What version of VS are you using? Also, is this how your makefile is set up?...
Code:
TOOLKIT=C:/Program Files (x86)/Microsoft Visual C++ Toolkit 2003
PSDK=C:/Program Files/Microsoft SDKs/Windows/v6.0A [COLOR="Red"]<-- installed by Vista[/COLOR]
Also, was the debug dll compiled with /MDd?
 
I've succesfully compiled both Debug and Final_Release DLLs on 64-bit Windows 7, Visual Studio 2010, and been able to start a game with them.

Sorry for the late response- I've only just started using Windows 7 for modding (and everything else), and transitioning off of Windows XP.
 
@ TC01 - The SDK for FF+ doesn't include a makefile. You would be doing the CFF community a big service by posting the makefile with instructions for dummies (that would be me) on how to successfully compile the debug dll/final_release dll USING VS 2008/2010 (there are plenty of guides for VS 2005). AFAIK, nobody on the forums has been able to do so (i.e. they use VS 2005). I had Lemon Merchant (BAT mod) try for me and she said that she couldn't get it to work on VS 2010 (64 bit platform error?) I have seen hacks (RevDCM) where the debug dll used the /MD option instead of /MDd (which is the debug compiler option) to 'compile' the debug dll. So far, not one mod I have tried to compile a debug dll for has worked properly (i.e. crashes when running or not a real debug version). There is definitely some kind of compatibility issue between compiling the SDK using VS 2005/XP and VS 2008/2010/Vista/7. Any insight you could offer would be invaluable. Thanks in advance.
 
@ TC01 - The SDK for FF+ doesn't include a makefile. You would be doing the CFF community a big service by posting the makefile with instructions for dummies (that would be me) on how to successfully compile the debug dll/final_release dll USING VS 2008/2010 (there are plenty of guides for VS 2005). AFAIK, nobody on the forums has been able to do so (i.e. they use VS 2005). I had Lemon Merchant (BAT mod) try for me and she said that she couldn't get it to work on VS 2010 (64 bit platform error?) I have seen hacks (RevDCM) where the debug dll used the /MD option instead of /MDd (which is the debug compiler option) to 'compile' the debug dll. So far, not one mod I have tried to compile a debug dll for has worked properly (i.e. crashes when running or not a real debug version). There is definitely some kind of compatibility issue between compiling the SDK using VS 2005/XP and VS 2008/2010/Vista/7. Any insight you could offer would be invaluable. Thanks in advance.

These instructions on the Modiki work for both VS 2008 and 2010. In turn, I got a DLL that I had set up using XP/2008 to compile on 2010. (I did have some weird issues: the first time I tried to build a DLL, I got errors. However, the second time (after restarting Visual Studio a while later), it worked. Not sure why.)

A makefile is also provided there. That is the makefile for Final Frontier Plus. There is no reason to provide one specially for my project. I haven't (yet) added DLL files that would require a new one.

Here is what you would do:

1. Install Microsoft Visual C++ 2003 Toolkit from the link.

2. Download the *.lib files from the link and copy them to your Microsoft Visual C++ Toolkit 2003\lib directory.

3. Create a working directory somewhere on your computer.

4. Copy the contents of the CvGameCoreDLL folder from Beyond the Sword to your working directory.

5. Copy the CvGameCoreDLL folder from Final Frontier Plus into your working directory directory, overwriting all files.

6. Download the makefile from the link and copy it into your working directory.

7. Open the makefile with a text editor. Change the "TOOLKIT=" to point to the VC++ 2003 toolkit, and change the "PSDK=" to point to your Platform SDK. The one installed by XP/Vista/7 is fine. Then, if you want, uncomment and change "YOURMOD=" to either point to Final Frontier Plus, or a copy of Final Frontier Plus that you are modding.

8. Open Microsoft Visual Studio and follow the directions on the link.

Once you're done that, compile a Final_Release DLL without changing anything. If you enabled the "copy to mod folder" option, start a game and see if things work. Otherwise, manually copy the new DLL and then start a game.

Then, change the build from Final_Release to Debug and compile a Debug DLL (again, without changing everything). Test it out again.

If either DLL doesn't work, please let me know. I could have excluded source files that I edited, or there could be other issues.
 
@ TC01 - Thank you for your help. Unfortunately, you are not compiling a true debug. Part of the RevDCM makefile...
Spoiler :
Debug_SAFE_CFLAGS= $(Debug_PROJECT_CFLAGS) /MD /GR /Od /W3 /EHsc /DWIN32 /D_DEBUG /D_WINDOWS /D_USRDLL /DCVGAMECOREDLL_EXPORTS /nologo /Gd /TP $(Debug_GLOBAL_CFLAGS) <-- note compiler option in red
As Fuyu pointed out to me (RE: MSDN Visual Studio compiler options), /MDd is required to build a debug dll. The makefile for RevDCM is a hack (i.e. no symbols are loaded since a pbd file is not created). I appreciate you looking into this for me. It's too bad the code for CIV4 is obsolete (i.e. you can't debug it unless you have VS 2005) but that's pretty much the conclusion I already came to.
 
@ TC01 - Thank you for your help. Unfortunately, you are not compiling a true debug. Part of the RevDCM makefile...
Spoiler :
Debug_SAFE_CFLAGS= $(Debug_PROJECT_CFLAGS) /MD /GR /Od /W3 /EHsc /DWIN32 /D_DEBUG /D_WINDOWS /D_USRDLL /DCVGAMECOREDLL_EXPORTS /nologo /Gd /TP $(Debug_GLOBAL_CFLAGS) <-- note compiler option in red
As Fuyu pointed out to me (RE: MSDN Visual Studio compiler options), /MDd is required to build a debug dll. The makefile for RevDCM is a hack (i.e. no symbols are loaded since a pbd file is not created). I appreciate you looking into this for me. It's too bad the code for CIV4 is obsolete (i.e. you can't debug it unless you have VS 2005) but that's pretty much the conclusion I already came to.

Well, I'm not quite sure what you mean by a "true" debug DLL. However, the one built by that makefile does what I personally would want the debug DLL to do. You get assert failures, and if you hook it up to VS, when there would be a crash instead you go directly to the part of the code where there is the error occured and the call stack is displayed, so you can see exactly what went wrong.

And you can do this in Visual Studio 2008, so I'm not sure why you think it can only be done in 2005. I presume it could be done in 2010 as well (haven't actually hooked a debug DLL up for debugging).
 
Well, I'm not quite sure what you mean by a "true" debug DLL. However, the one built by that makefile does what I personally would want the debug DLL to do. You get assert failures, and if you hook it up to VS, when there would be a crash instead you go directly to the part of the code where there is the error occured and the call stack is displayed, so you can see exactly what went wrong.
FYI - the assert failure messages are hard coded in the SDK and are enabled by the '_DEBUG' compiler directive (see FAssert.h for explanation). By definition (see MSDN link in previous post) /MDd is used to create a debug dll that includes a pdb (program database) file. Without the pdb file the compiler cannot load the debug symbols. A 'true' debug dll will show the name of a function call on the stack trace (i.e. CvGame::write(FDataStreamBase* pStream)) not just the memory address of the function call. When a break occurs a debug dll will point to the offending call in the source code file (i.e. verifyDeals(); on line 5910 of CvGame.cpp), whereas a dll compiled with /MD only shows a disassembly of the code at the break (and therefore basically useless in trying to find out which line in the source code needs to be changed). VS 2005 allows the /MDd option to compile and run with the symbols loaded. VS 2008 will compile with /MDd fine but running the debug dll will cause an unhandled exception to occur (which without the debugger being attached would cause CTD).
 
FYI - the assert failure messages are hard coded in the SDK and are enabled by the '_DEBUG' compiler directive (see FAssert.h for explanation). By definition (see MSDN link in previous post) /MDd is used to create a debug dll that includes a pdb (program database) file. Without the pdb file the compiler cannot load the debug symbols. A 'true' debug dll will show the name of a function call on the stack trace (i.e. CvGame::write(FDataStreamBase* pStream)) not just the memory address of the function call. When a break occurs a debug dll will point to the offending call in the source code file (i.e. verifyDeals(); on line 5910 of CvGame.cpp), whereas a dll compiled with /MD only shows a disassembly of the code at the break (and therefore basically useless in trying to find out which line in the source code needs to be changed). VS 2005 allows the /MDd option to compile and run with the symbols loaded. VS 2008 will compile with /MDd fine but running the debug dll will cause an unhandled exception to occur (which without the debugger being attached would cause CTD).

Well, I know that with VS 2008 and a debug DLL compiled by it, I've been able to use the call stack to jump directly to the line of code that caused the problem, then to lines of code in other functions that called the function with the error.

Which, according to you, is not possible... so I'm not sure what to think.

Oh, and I know that for me, CvGameCoreDLL.pdb is created with the makefile I linked to (at least, with XP + VS 2008- haven't tried it on 7 + VS 2010). I do get an error message that it can't load all of the symbols though.
 
Well, I know that with VS 2008 and a debug DLL compiled by it, I've been able to use the call stack to jump directly to the line of code that caused the problem, then to lines of code in other functions that called the function with the error.

Which, according to you, is not possible... so I'm not sure what to think.

Oh, and I know that for me, CvGameCoreDLL.pdb is created with the makefile I linked to (at least, with XP + VS 2008- haven't tried it on 7 + VS 2010). I do get an error message that it can't load all of the symbols though.
Okay. I see the problem in this interesting discussion. I should have restated the platform that has the problem. Sorry, my bad (I assumed you had tried it on Vista). You are correct that XP+VS 2008 will compile a debug dll (although I suspect that you are actually compiling with /MDd - the makefile you linked to does not). What I am having a problem with is Vista 64 bit+VS 2008. I assume you know that the OS architecture changed from XP to Vista (and 7 which has the same code base). I would be interested in your results using 7+VS 2010 (Lemon Merchant couldn't get it work). This is the call stack I get (Vista 64 bit/VS 2008/msvcr71d.dll and pdb file present/symbols loaded for CvGameCoreDLL.dll/compiled with /MDd)...
Spoiler :
ntdll.dll!77e5ac0f() <-- unhandled exception
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!77e5a58b()
kernel32.dll!76303f01()
msvcr71.dll!7c34218a()
ntdll.dll!77e5a58b()
kernel32.dll!76303f01()
msvcr71.dll!7c34218a()
CvGameCoreDLL.dll!CvString::format() + 0x75 bytes C++
msxml3.dll!71cb1665()
msxml3.dll!71cb1f86()
<< omitted several lines for clarity>>
ole32.dll!777a9fc0()
ole32.dll!777a9ffd()
winmm.dll!7516334c()
Civ4BeyondSword.exe!00684d80()
Civ4BeyondSword.exe!004dd129()
CvGameCoreDLL.dll!CProfileScope::~CProfileScope() + 0x37 bytes C++
726f7772()
Civ4BeyondSword.exe!005f0044()
 
Okay. I see the problem in this interesting discussion. I should have restated the platform that has the problem. Sorry, my bad (I assumed you had tried it on Vista). You are correct that XP+VS 2008 will compile a debug dll (although I suspect that you are actually compiling with /MDd - the makefile you linked to does not). What I am having a problem with is Vista 64 bit+VS 2008. I assume you know that the OS architecture changed from XP to Vista (and 7 which has the same code base). I would be interested in your results using 7+VS 2010 (Lemon Merchant couldn't get it work). This is the call stack I get (Vista 64 bit/VS 2008/msvcr71d.dll and pdb file present/symbols loaded for CvGameCoreDLL.dll/compiled with /MDd)...
Spoiler :
ntdll.dll!77e5ac0f() <-- unhandled exception
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!77e5a58b()
kernel32.dll!76303f01()
msvcr71.dll!7c34218a()
ntdll.dll!77e5a58b()
kernel32.dll!76303f01()
msvcr71.dll!7c34218a()
CvGameCoreDLL.dll!CvString::format() + 0x75 bytes C++
msxml3.dll!71cb1665()
msxml3.dll!71cb1f86()
<< omitted several lines for clarity>>
ole32.dll!777a9fc0()
ole32.dll!777a9ffd()
winmm.dll!7516334c()
Civ4BeyondSword.exe!00684d80()
Civ4BeyondSword.exe!004dd129()
CvGameCoreDLL.dll!CProfileScope::~CProfileScope() + 0x37 bytes C++
726f7772()
Civ4BeyondSword.exe!005f0044()

Yes, I suppose that's probably the issue. My Windows 7 is 64-bit. (And yes, I went from XP to 7... well, actually, I have a dual install of both).

I'll create a debug DLL and then take a look at what it does.
 
I wonder if 64 bit could also be an issue. I believe you need slightly different libraries to compile the SDK on a 64 bit computer.
Lemon Merchant thought it had something to do with 64 bit too. What's interesting is that the debug dll wouldn't even compile for her (using VS 2010 on Windows 7 64 bit), whereas I can compile it (using VS 2008 on Vista 64 bit) but get an unhandled exception when running it. Also, whatever the problem is, only the debug compile is affected (I can compile final_release versions without any problems at all).
 
Top Bottom