The Arms Race to make a single improvement upon Fallout 3 Mo

Post » Fri May 04, 2012 7:28 am

A preview:
youtube(.)com/watch?v=PJThsH4-wt8


[GECK] An alternative import/export for Heightmap Files.
The GECK I refer to is the Garden of Eden Creation Kit by Bethesda Softworks.

There are a number of new changes to the workflow to be aware of.
The entire Heightmap is now exported into a single RAW file (~8MB) instead of the previous four files

To export or import the 8MB heightfile you will use these commands:
FileStoreBits(); // To Save the current Heightmap in the Heightmap Editing Window.
ReloadBits(); // To restore from disk a 8MB Heightmap.

One miscellanous command included with the utility:
AdjustBits(); // Raises an arbitrary space to the next highest color range. + 4096;

Please see:
Before calling any of the functions be sure a Heightmap editing window is open.


If you would like the binary or source I will be happy to provide it on demand.
User avatar
Rex Help
 
Posts: 3380
Joined: Mon Jun 18, 2007 6:52 pm

Post » Fri May 04, 2012 1:10 pm

Did you just point out what 'GECK' stands for, in a forum called "The GECK"? Anyways, uhm. If this really is an improvement on the GECK, then great job whatever it is that whoever accomplished. But, and I mean no personal offense here, to be 100% honest, your post makes absolutely no sense, and I don't know what your trying to promote, nor why you have done such a half-ass job promoting it on these forums. Someone made a plugin for GECK for easier height map operations? Why do you share with everyone the exact commands to the utility, but then tell them they're going to have to pm you to get the file as opposed to just putting it up on the Nexus as a mod? As for the video, I enjoyed the dramatic epic music, but the video itself was not informative in the slightest. And no links to anything? If you put time into a truly great plugin that you think many people will want to use, then provide some proper information and resources so that your hard work isn't just ignored by bad first impressions. Although, something (3 things) tells me that your not the programmer.
User avatar
Iain Lamb
 
Posts: 3453
Joined: Sat May 19, 2007 4:47 am

Post » Fri May 04, 2012 2:34 pm

You put forth good points in favor of me better expressing what I accomplish. Its nothing like a FOSE plugin. But it is third party by the fact a DLL must be injected. I am a programmer but I don't program often.

If its true that you are a programmer, you should be able to test some of my source. Also because you advertised your raw utility, you should with ease replicate my results if I am not wrong about my pointer being the same in your GECK.exe. (I have steam Fallout 3)

// This is why cheat engine was in the video, I used it to find a static pointer. It may not be true it is for your executable.
short* GetHeightmapPointer(){    short* pTexture = (short*)0x0;    int* pLevelA = (int*)int(0x400000 + 0x00CF2DCC);    int* pLevelB = (int*)int(*pLevelA + 0xA0);    int* pLevelFinal = (int*)int(*pLevelB + 0x20);    pTexture = (short*)pLevelFinal;        return pTexture;}

// Well obviously once you have a pointer to the heightmap in memory you can just dump it or overwrite it.
// I know its a bit silly how I write things to file byte by byte, but my computer handled it fine. Faster than the freaking GECK is.
    void CRawLoader::Save(std::string strName, short* inData)    {   	 CLogger log;   	 char buffer[16];   	 log.OpenFile("logSaveRaw.txt");        m_outf.open(strName.c_str(), ofstream::out | ofstream::trunc | ofstream::binary);        const int nTextureSize = 2043;        log.Write("raw save opened.");        short* pTexture = inData;	    log.Write(itoa(*pTexture, buffer, 16));        for (int xxx = 0; xxx < nTextureSize; ++xxx) {            for (int yyy = 0; yyy < nTextureSize; ++yyy) {		    short shByte = pTexture[(nTextureSize * yyy) + xxx];            char chshData[2];            memcpy((void*)chshData, &shByte, 2);		    m_outf.put(chshData[0]);            m_outf.put(chshData[1]);            }        }	    log.CloseFile();        m_outf.close();    }    void CRawLoader::Load(std::string strName, short* outData)    {   	 CLogger log;	    char buffer[16];   	 log.OpenFile("logLoadRaw.txt");        m_inf.open(strName.c_str(), ifstream::binary);	    log.Write("raw to load opened.");        const int nTextureSize = 2043;        short* pTexture = outData;        for (int xxx = 0; xxx < nTextureSize; ++xxx) {            for (int yyy = 0; yyy < nTextureSize; ++yyy) {		    short shByte = 0;            char chshData[2];            chshData[0] = m_inf.get();            chshData[1] = m_inf.get();            memcpy((void*)&shByte, (void*)chshData, 2);            pTexture[(nTextureSize * yyy) + xxx] = shByte;            }        }	    log.CloseFile();        m_inf.close();    }

Last I want you to know that the changes are not permanent. You need to save just as if you painted on the heightmap alone and wanted your changes to remain. Because you challenged me I rushed past putting a GPL license for this code. I promised a command-line which I am prepared to go through with in coding.

Design->
The command program injects the DLL, then shared memory techniques are employed to communicate with a DLL what and when a user has inputted the listed commands of the OP.
User avatar
City Swagga
 
Posts: 3498
Joined: Sat May 12, 2007 1:04 am

Post » Fri May 04, 2012 2:44 am

phew. I thought I might have been a little mean and I was going to get a reply from you [censored]ting all over me, I didn't mean it as a challenge or anything, just not in the best mood today :smile:. And my assumption that you were not a programmer is clearly wrong, and judgmental on my part also. However, gone are the days where you can assume a programmer is a master in C/C++. I'm only a newb in Java and a bunch of lighter weight scripting languages (ie I've never had to manage memory), and unfortunately I can't help you here, I wish I could, cuz the vanilla GECK height-map operations svck a bunch of radraoach ass. You're clearly the more experienced programmer here, but just the post and the video is, well, kinda odd. I think if you changed that you would get a lot better attention. For example, your link is written as:
youtube(.)com/watch?v=PJThsH4-wt8
Instead of using the url tags? The only people I see who do this are people who are not computer savvy. And now the mention of the exclusion of the usual GPL copyright? This tells me that you have good programing practices, but also that you're still not following the usual forum conventions. I've seen a lot of code snippets on the internet, but never the inclusion of a license with those code snippets. Pragmatically, that makes sense. At least I don't know of any forums that enforce that kind of thing. And so nobody expects to see a license here. I don't even know if code snippets on forums can be legitimately considered as a method of distribution and I think the GPL only applies when your intention is to distribute the source code. Hhmm that's an interesting thought though.

The video should be a recorded tutorial session (FRAPS etc.), with no music, and you telling viewers how to use the utility and its features, in an explicit unambiguous manner, keeping in mind that you may or may not have to explain certain things depending on who your target audience is. You should also put more information in the uploader info section including a link to a forum where you explain everything anyone needs to know about the plugin. Poorly documented software usually dies. I suppose the ultimate test is, does it compile and run smoothly as intended on the platforms you targeted? If so, then put it up on the Nexus as a small mod/plugin, and provide a link to it from this post. If not, then its still in beta.

Anyways, I bet somebody will come by here within in the week and look at your code.

Also, I haven't published any utilities myself. And my post was merely a commentary on your post and your video, not on your software. If you are, however, referring to a recent post of mine http://www.gamesas.com/topic/1366558-how-to-convert-jpeg-and-png-to-raw-without-photoshop/ , that is just me telling people that a Java-based opensoft called ImageJ can export height-maps. The official GECK website says that ImageJ only imports, so I thought it might be helpful to some people. Anyways, the last thing I want to do is hijack this thread with my off-topic and unsolicited comments. I'm assuming you posted you in efforts to talk about the plugin you wrote, so If you want I'll delete my posts. Its your thread.
User avatar
OTTO
 
Posts: 3367
Joined: Thu May 17, 2007 6:22 pm


Return to Fallout 3