Code Monkey home page Code Monkey logo

modelmod's People

Contributors

forki avatar jmquigs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

modelmod's Issues

Poor performance in high-detail scenes

This happens whether or not a mod is actually being displayed, so its probably something in the d3d interceptor (hopefully not the hash check for mods; will need to profile it).

OpenGL and Vulkan

Well, since a huge number of game developers prefer to work on macOS and some specific people are interested in a Linux version (me ;D) - is this here the official issue about the implementation of OpenGL.

User Guide is out of date

I'm having trouble following the User guide pointed to in the readme and setting up MM with Guild Wars 2.
here: https://github.com/jmquigs/ModelMod/blob/master/Docs/userguide/README.md

Set up steps completed:

  • Created a profile and pointed it at Gw2-64.exe
  • add the d3d9.dll found in ModelMod-1.1.0.4/bin/modelmod_64 to the bin64 folder in guild wars 2
  • Setup Blender and run the setup script
  • follow the Start instructions and launch the game

Issues:

  • No UI displays ingame for texture selection
  • the "Launch Time" config mentioned in the UserGuide is no where to be found in the MM desktop application's UI
  • Error in log:
    ThreadId(2): Snap confile does not exist: "C:\snapconfig.yaml"
    ThreadId(2): Using defaults
  • No snapshots being saved to what is suggested to be the Documents directory of MM: "C:\Users\R\Documents\ModelMod"

Are there any known issues with having the game on a different drive from MM?
My install is on D drive but MM is on C drive
Can anyone offer any guidance for using this tool with Gw2?

Suggestion: automatic mod to disable legendary trinket effects in GW2

Hi. First of all thanks for your tool.

As you may be aware, the most requested thing on the GW2 forums is an option to disable legendary trinket effects. Anet is not against it but they say it's too difficult to do (lol).

Since you already showed how yo disable the Aegis effect, I'm sure it would be possible to also disable the legendary trinket effect (that they claim to be based on a boon too).

I'm pretty sure most people would gladly download the pre-made mod and this would also probably raise awareness on the subject.

full reload + async load can cause model load failure

Triggering a full (code + data) reload with F10, then another F10 while that load is in progress, will cause the app domain to get unloaded and the load thread will be terminated. Subsequent reloads will fail because the native code appears to remember that the first load is still in progress.

Transform floating point parse fails on non-english locale

Snippet from log:

[M:Snapshot]: Applying transforms: [SnapshotProfile: Profile1; pos: ["rot x 90"; "rot y 180"; "scale 0.1"]; uv: ["flip y"]]
[M:Snapshot]: disposing stream 0 vb
[ERROR-M:Snapshot]: System.FormatException: Le format de la chaîne d'entrée est incorrect.

à System.Number.ParseSingle(String value, NumberStyles options, NumberFormatInfo numfmt)

à System.Convert.ToSingle(String value)

à ModelMod.MeshTransform.parseVec3XformFunc(Boolean isNormal, Mesh mesh, String xname)

à [email protected](String xname)

à Microsoft.FSharp.Primitives.Basics.List.mapToFreshConsTail[a,b](FSharpList1 cons, FSharpFunc2 f, FSharpList`1 x)

à Microsoft.FSharp.Primitives.Basics.List.map[T,TResult](FSharpFunc2 mapping, FSharpList1 x)

à ModelMod.MeshTransform.applyMeshTransformsInternal(FSharpList1 xforms, FSharpFunc2 invokeBuilder, Mesh mesh)

à ModelMod.Snapshot.take(IntPtr device, SnapshotData sd)

Injecting on pre-launched games

Model Mod should support injecting it's .dll into pre-launched games. Games that require a launcher cannot be properly utilized by model mod.

Injector crash and other unrelated modding topics

ExePath targets Gw2-64.exe with d3d9.dll 64 bit in the same directory. Launcher will log in but then crash when attempting to launch the game. The crash sometimes produces an "Install cannot be completed" error message but other times will crash with no message. I wasn't able to determine what causes the different outcomes. The ModelMod log doesn't report anything beyond the initialization message.
ModelMod.Gw2-64.log
Removing d3d9.dll from the game directory allows it to launch as normal again.

I tried using the 32bit dll as well but MM would not initialize at all when trying this.

Blender script installation fails

Says the following when pressing install and accepting overwrites:
"
Unable to locate suitable addon path:

Stdout:
MMPATH: E:\Ohjelmat\Blender 2.78c\2.78c\scripts\addons
MMPATH: E:\Ohjelmat\Blender 2.78c\2.78\scripts\addons_contrib
Read new prefs: C:\Users\b\Appdata\Roaming\Blender
Foundation\Blender\2.78\config\userpref.blend
found bunbled pytho E:\Ohjelmat\blender 2.78c\2.78\python

Blender quit

Stderr:
"

As seen, I do not have Blender in default folder but I manually located the blender.exe file 3 times. Once with 2.78a version from manually installed location, once from Steam's install location and once again from manually installed 2.78c version.

Edit: Got it manually working. Installing the scripts found in ModelMod's folder through Blender didn't work either as they go to C: drive which isn't my Blender's default folder. I manually pasted the scripts to my Blender scripts folder in E: and it seems to work.

Support 64 bit

More games are using 64 bit. Its probably worth looking at.

  • Some parts of the injector will certainly need to change
  • There are some places in the code where I track pointers (e.g. texture pointers) and I'll need to make sure those data structures are 64 bit wide
  • Any place where a pointer is passed over interop will need to be checked
  • Do I need to use a 64 bit CLR too?
  • Does D3D9 even support 64 bit? If not, this may be gated on #8

Anti-cheat workaround?

Many games have anticheat which detect d3d9.dll and this makes the mod unusable. Is there any way to work around this?

To add some more info: The anticheat is simply looking through the game folder and sees d3d9.dll which shouldn't be there. If there was a more global injection method, this would perhaps be better.

Support DX11

This is more common than DX10 so its probably the first alternate renderer that should be implemented.

Injector: support games that are installed in a non user writable directory

If a game is installed in a read-only directory (e.g "Program Files"), ModelMod will fail to init because it runs as a non-admin user and therefore can't copy ModelModCLRAppDomain.dll into the game directory.

One fix is to have an option to run MMLoader as an administrator. This option could be exposed in the Game Profile section of the MMlauncher UI.

Another fix is to remove the annoying requirement that ModelModCLRAppDomain.dll be copied in to the game directory. That probably requires porting to the CoreCLR, which could be a tricky undertaking, but may also add support for additional games that are not supported right now.

Reported in #4

Question / Appreciation Post

Sorry for submitting this as an issue. Just didn't find any other way to post my thoughts.

Hey @jmquigs! I wanted to send my appreciation for this! I've always wanted to mod Guild Wars 2 like I have FFXIV. While modding this way is a bit more limited, i've been able to make a few mods that i'm happy with.

Any chance someone has fixed the binormals/tangents issue? That's the only thing that I think is keeping the mods from looking absolutely perfect.

And to share some of what i was able to make:

  • Added a weapon from Final Fantasy XIV
  • Kitbashed an outfit from Heavy and Medium armors
  • Resized and replaced a weapon model with another.

gw041
gw043
gw044

Investigate CoreCLR support

Certain games fail to init the CLR with "unexpected error". From some prototyping, I think the CoreCLR may allow this issue to be avoided or fixed. I suspect this error may result from SecuROM or other DRM software interference, but I'm not sure.

Adding support for CLR would add support for more games, and allow better solutions for some problems (#6)

See #4 for an example game (Borderlands) that is affected by this issue. Mass effect is also affected by same issue.

Building MM and Debugging ModDBInterop

I've spent some time familiarising myself with VS and F#. If I can get MM to build successfully, I can move on to debugging the issues I brought up earlier.

I'm using VS Community 2022. When I attempt to open and build the MMDotNet solution, I get notifications that I'm missing specific versions of the .NETFramework reference assemblies (4.0, 4.5 etc.). But when I try to install these, the installer says they're already part of my OS and won't proceed. The reference manager says the targetted assemblies were not found.

Is there a way to solve the missing references using Paket or the Github build options you mentioned before? Apologies for the elementary questions. Once this is solved there shouldn't be any more barriers to debugging.

On a side note, I've made a Blender script to generate a akeleton for imported MM meshes. Bone positions are approximated using the weighted mean position of all the vertices in a given vertex group, where mean weights come from the vertex weights. If you are interested, I can share it with you, though I'm not really sure how to do so via Github. I also want to make a partner script that can use this skeleton to symmetrize the vertex groups for more convenient weight painting.

Porting the IO scripts to the 3.0+ Blender API

I've taken an interest in this project again since I've been considering getting back into GW2 recently. I'm in the process of porting the IO scripts to the 3.0+ API so that they're usable in modern versions of Blender.

Most of the API changes I've encountered so far have been minor syntax or function changes, but there is a more difficult problem in that the 2.8+ API cannot access Blender's internal rendering engine. This completely breaks any mmobj functionality related to materials.

I wanted to ask, what exactly are the differences between the stock obj IO and mmobj? If I knew the specific differences it would probably be easier to copy the majority of the code (specifically the material handling classes) over from the current obj scripts and tweak them for mmobj.

Support "New World" (DX11)?

Hi mate, I absolutely love your tool and been using it for GW1 and GW2 ! wanted to know if you plan on doing the same thing in order to be compatible with New World from Amazon games ? Would be soo appreciated !!

Still able to be used?

Saw this program was mainly for DX9 and was wondering if it still works for DX11 and if it is able to change gear assets etc? A little new to how this works with Guild Wars 2

Injector: support games that require a custom launcher

ModelMod launcher currently assumes that it can exec the game executable directly, and if the game uses its own launcher, the game will start it. Later MMLoader will reattach to the game once the game's launcher spawns it.

However, some games just outright fail when the game executable is launched directly, with a message to reinstall the game, or various other kinds of dialog boxes etc. Likely these games require some command line flag or other state to be passed by the launcher to initialize properly.

One way to solve this is to add another path for a game launcher to the MMLauncher Game Profile section. ModelMod can then start this launcher, but still watch for the main game exectuable with MMLoader to perform the injection.

Reported in #4

This is not an issue, its a thank you

Hi mate, didn't know which way to reach you, so I'm doing this here, just wanted to say thank you, Either it's for GW1 or GW2, your tool works like a charm. I absolutely love it! I was able to do some stuff I didn't know would of been possible!
Here's a link to my reddit post, if you'd like to, I can give you credit for your tool , just wanted to ask before.
Here's what I made, hope you'll like the result

Thanks again bud, keep updating MM please, it's a masterpiece!

https://www.reddit.com/r/GuildWars/comments/pewpkx/fow_ra_armor/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.