Skip to main content

Coding Tasks

Submitted by rubenmp8 on

Hi all, new person here hoping to help this project. I don't have any experience with CK, but I am a pretty skilled C++ programmer. It's a bit hard from the forum to see where I can help the most(possibly converters?). Suggestions would be greatly appreciated.

Karma: 0 (0 votes)
Last edited by grumpycat on 8 Dec 2013 - 18:30.

I haven't done this before, but you could do something similar to keeperfx. Link Oblivions EXE to a program (use it as a dll), and use the function calls from inside the original program to workout the structures. I imagine it being painful to work out the mess, but it might help reduce your workload in the long run.

Karma: -1 (1 votes)

Even if possible, this is probably against the EULA. Blizzard EULA's prohibit reverse engineering their game executables, which this would likely fall under. Haven't read Bethesda's EULA, but I'd be surprised if they did not also have this restriction.

Karma: 0 (0 votes)

I agree. Probably the best option for that is to check the windows registry for TES entries

Karma: 0 (0 votes)

May sound weird, but I have a request.

I always wanted a way to check for existence of assets used in a mod, and it can be done now with script in TES5Edit. The only problem is getting a list of textures from nif file. Scripts can use external dll, but only with some simple type passing like ints and pointers, so direct using of niflib.dll is out of question. Besides there are no header files for pascal.

So I need a niflibhelper.dll that will use niflib.dll and perform only a subset of simple operations (stdcall convention), for now I need (params and names only for example):

int LoadNif(char* aFileName) - will return a handle for loaded nif, -1 if error

void DisposeNif(int hndl)

int TextureCount(int hndl) - a total number of textures used in mesh

void GetTexture(int hndle, int texindex, char* filename) - I will call this function TextureCount times and provide index of texture (from 0 to TextureCount-1) and a membuf where nulll-terminated filename will be put

void SetTexture(...same params...) - not required now, but can be handy later for batch path changing of textures in a plugin

void NifLastError(char *err) - apparently get a last occured error message, only from LoadNif for now

Will be awesome if it can work with meshes for all games, I saw a code in niftexture to grab textures from oblivion, fo3, fnv and skyrim meshes.

Karma: 0 (0 votes)

Zilav, I won't have time until this weekend. If aerisarn hasn't taken care of it by then(and I stop playing dragonborn), I will.

Karma: 0 (0 votes)

Nope, the little time i have in two weeks is dedicated to nifskope

Karma: 0 (0 votes)

Thanks!

Karma: 0 (0 votes)

It just so happens that I've been using TES5Edit to pull all the models, then have been cross referencing in a spreadsheet that has links with the models stats, like all the textures and some other things like triangle counts, vertices, etc. So this would be a neat feature for TES5Edit.

Maybe it would be best to return a "Nif" or "Model" object that has an array of textures, and some other stats, like number of triangles, vertices, and anything else that might be of interest for people. The really awesome benefit of this is that people who are creating new game worlds can do quick look ups of cell stats. I've done some work on finding out what Skyrim stats are like with models and using this as guidelines for Skywind.

Karma: 0 (0 votes)

Hello, im a professional python programmer and huge fan of TES series. I think, my skills not very suitable for converters and other low-level tools, but maybe, you need some GUIs, managers, automation tools...

Sorry, my English level ​enough for manuals, but not for forum posts=(

P.S. If my memory serves me, some TES open source tools written on Python and i can make some modifications.

Karma: 0 (0 votes)

Outside of modelling stuff, I think what we're missing most is an installer... (that would check for morrowind presence and install the esm and basic files)..

Karma: 0 (0 votes)

Hi Averrin, I believe there is a set of python based code around some of the NifTools, but they are an older piece of work and not sure if its really relevant to anything we want to do.

As digital said, we really need an installer that checks for the Morrowind installation of the game, to make sure that the person has a purchased it. It would need to work with various operating systems and version. In the future the installer will have options for how the person wants to install the game, however there have been no decisions as to what this might be yet. So if you want to help this could be a way to get involved.

Otherwise we have a few people who have looked into NifTools for various needs, however its a huge learning process, and would require months of your time to make any head way, so you'd need to be serious about getting involved this way.

Karma: 0 (0 votes)

I have Steam GOTY and Russian 1C cds (Morrowind, Tribunal and Bloodmoon separately). I can try to write script to detect purchased version.

About niftools. I need a bugreport: sources, task, what you do, what you have and what you want to have. Than i can try to fix it.

Karma: 0 (0 votes)

Very basic and dirty, but works.

Source: https://gist.github.com/averrin/5182430

Binary: http://ge.tt/9jF0cMb (run *.exe and check *.log)

Tested: Windows 8 64bit. Steam GOTY and Russian 1C cd versions. (+some patches and nocd)

How it works:

1. Check steam installation by Steam App ID (22320) in registry

2.1. If detect Steam: Go to %SteamPath%/SteamApps/common/Morrowind (TODO: detect custom install path)

2.2. Else get InstalledPath from registry and go there

3. Get sha256 hash and version from exe file. Check it with whitelist

4. If hash not in whitelist check in blacklist

TODO:

  • Need more hashes for white- and blacklists.
  • Check other files (e.g. Text.dll)
  • ???

What did I miss?

Karma: 1 (1 votes)

In less than a day, great! When you talk about "blacklist", you'll put all the no cd or things like that in it ?

Karma: 0 (0 votes)

Im apply two different nocd and include resulting hashes to blacklist. I have no idea, why it can be useful, but i like do things right=))

Karma: 0 (0 votes)

Sorry guys it'll be faster for me to write in russian.

Для инсталлятора потребуется копировать файлы из bsa архивов морры и править их бинарным патчером. Проект состоит из тысяч моделей, большинство из которых мы не имеем права распространять, поэтому их придется доставать из морровинда и патчить на лету.

Сам список файлов что откуда доставать и куда копировать и как патчить лучше бы иметь в xml.

Karma: 0 (0 votes)

>> Sorry guys it'll be faster for me to write in russian.

Если есть консольные утилитки, я могу все это обернуть в инсталлер. Схему, будь она в xml или там json - обработать не проблема. Если нужно что-то откуда-то вытаскивать - мне бы алгоритм или где почитать, или где в исходниках подсмотреть.

Karma: 0 (0 votes)

Попробуй посмотреть этот http://www.daemonology.net/bsdiff/, там вроде даже питон упоминается.

Karma: 0 (0 votes)

Ну я понял направление: взять что-то из оригинала морра, взять тот же объект из skywind, сравнить, создать бинарный патч, а потом наложить на оригинал. Таким образом, требуется список соответствий, а я уж попробую сделать экстрактор патчей и собственно патчер.

Karma: 0 (0 votes)

Все правильно. Кстати по поводу черных списков - я бы не советовал проверять хеши исполняемых файлов. Почти все используют MCP в морровинде, так что проверки реестра будет достаточно.

Karma: 0 (0 votes)

Проверка реестра - это только путь посмотреть, а вот на сколько куплена игра - разве что по бинарику понять можно. Надо посмотреть, MCP в зависимости от набора патчей разный бинарик дает. Если да - действительно, задолбаешься все варианты проверять. Тогда если нужно смотреть на подлинность - надо что-то придумывать. Например проверять не exe, а Text.dll.

На счет патчера - распаковал morrowind.bsa и сравнил текстурки. 1. Переименованы (при том как-то по-разному) 2. Не все отличаются 3. С трудом нашел те, что что-то общее в именах имеют, все таки надо бы иметь схему по которой переименовывали. 

Karma: 0 (0 votes)

Sorry guys this will be easier to write in English :-P

You can purchase the game without Steam. It would be nice for some of our old school players to be able to play the game from their older copies of Morrowind.

Karma: 0 (0 votes)

I bought the Morrowind GOTY set for 50 cents from a thrift store last year.

Karma: 0 (0 votes)

Hey guys!
I am another C++ (Also Java, since I am Android developer) programmer and I really wish to contribute in this project, so I have a few questions:

  • Where can I look at priority tasks, or all of them are abstract an require lots of R&D?
  • Are Project Andoran Converter projects are actual?
Karma: 0 (0 votes)

Hello people of Tamriel,

I'm a computer science student and would really like to contribute Skywind project. I can spare some serious time, canceling my unity3d workout. I'm familiar with c++, c# and x84 asm. Looking forward to hear from you!

Karma: 0 (0 votes)

I'm a computer science student and would really like to contribute Skywind project. I can spare some serious time, canceling my unity3d workout. I'm familiar with c++, c# and x84 asm. Looking forward to hear from you!

Thanks for the offer. In the past we tried to get a set of tools to help with setting up the models for the game, and certainly we had coders come in and help with this. Tools in generally for Skyrim modders will always be nice to have worked on.

But we are far enough down the road now that we don't really need anything. Sure you can dive into the world of NifUtils and add extra functionality, but its got to be something that really interests you.

What were you doing with unity3d?

Karma: 0 (0 votes)

So arlinon, we suddenly need a coder for the installer again. We are looking to make Skywind more of stand alone installation because Skyrim limits what we can do with creatures.

The installer is written in python. Source code link below.

https://github.com/averrin/Skywind_Installer

We are looking at having some options to install to a new directory and copying required Skyrim files from users existing Skyrim install to a new Skywind game.

If the user installs to existing Skyrim install, then we will backup some files that are going to be overwritten so that if the uninstall it will revert the files back.

Simple(ish) stuff, but just have to look through the existing source code a bit to get up-to-speed.

 

 

Karma: 0 (0 votes)

The motto of Bethesda games modding is "override", not "overwrite".

I already said in chat to package all overridden vanilla files in a separate BSA activated by en empty ESP file like HiRes DLC does. Activate ESP when playing Skywind, deactivate when playing anything else, dead simple.

By the way Skyblivion installer already does what you described (copies vanilla files and applies binary difference patches).

Karma: 0 (0 votes)

Wondering if there is any coding task I could help with.

I am currently unemployed but worked previously in the gaming industry as Localization, I have experience with C++, C# and lots of different file formats that might be of help.

Karma: 0 (0 votes)

I'm sure we have some stuff we need doing coding wise like converter automation and stuff like that. ask eloth or happy they might be able to point you in a direction we need you. if not contact me or Ravanna because there might be some stuff that you could help us with..

 

Karma: 0 (0 votes)

I'm available to help. I have some introductory Pascal experience (via Delphi).

I am also experienced with C#, though I don't know where that would be needed on this project, if at all. I have limited C++ experience (a few classes from my CS degree).

Message me if there is anything needed.

Karma: 0 (0 votes)

hi, I'd Like To Help. Do You Still Need Help With The skywind Installer Or Nifutils? Let Me Know What Would Be Helpful. I Know Python, C++, Etc (I Write SW For A Living). - My Phone Is Capitalizing Everything Right Now lol
Karma: 0 (0 votes)

Yes we need the installer to be built. It will require the person to do it to be onboard with the project for the next several years, and be able to work on it almost every week. There is going to be a lot of functionality packed into it. Some of it quite technical.

Karma: 0 (0 votes)

Sure, that would be fine. I can stay active on a weekly basis. I don't know how many hours each week but I won't just disappear on you.

Let's start by determining your Requirements for the installer. Do you have a list of features you need/would like to have?

I will then take those requirements and come up with a set of tasks that I'll work on. You'll be able to track these on github, provide input where needed, and if anyone else ends up joining in it will make it easier for them to help.

I saw that averrin had an existing installer on github. I can try to reuse what's there as a base going forward.

Karma: 0 (0 votes)

I took a closer look at what averrin had going for the existing installer. Looks like he's using Qt for python - I've used Qt a little bit for a few projects before so I think I'd stick with that model. I might use QML actually as I find its a bit easier to maintain and share with others.

Does anyone know what new features are needed for the installer? Or bug-fixes?

I'd like to get a few goals set so I can dig in properly to the design and dust off my Qt knowledge cobwebs.

Karma: 0 (0 votes)

I'm not speaking on behalf of the devs and I'm not entirely sure but of the top of my head I think a way to download and install optional mods and a automatic update feature is wanted.

Karma: 0 (0 votes)