SUBSIM Radio Room Forums



SUBSIM: The Web's #1 resource for all submarine & naval simulations since 1997

Go Back   SUBSIM Radio Room Forums > Silent Hunter 3 - 4 - 5 > SH5 Mods Workshop
Forget password? Reset here

Reply
 
Thread Tools Display Modes
Old 01-05-12, 04:59 AM   #1
DrJones
Samurai Navy
 
Join Date: Jun 2009
Location: Germany, 50 Kilometers away from Kiel
Posts: 576
Downloads: 343
Uploads: 0
Default [WIP] Option Designer for Developer

Hy @ All

I'am still working on an Option Designer for Developers and Users to create and edit options.

These options will be saved in a XML File wich can be easily read out and be edited over an dll file in .ps in SH5.




To Create a new option you have to give an impressive name.




It is possible to add as much values to this option as you like



This is how the XML file is created



The Programm is written in Visual C# Express 2010.

More Information will follow...

Best Regards

DrJones
DrJones is offline   Reply With Quote
Old 01-05-12, 07:11 AM   #2
fromhell
Lieutenant
 
Join Date: Mar 2008
Location: the deep
Posts: 251
Downloads: 217
Uploads: 7
Default

brilliant work.
look forward to it
fromhell is offline   Reply With Quote
Old 01-05-12, 07:21 AM   #3
Jaeger
Chief
 
Join Date: Jul 2005
Posts: 316
Downloads: 28
Uploads: 0
Default

very nice. this could become the new "silent huunter 5 commander". would be nice to see some grafics, too (eye candy). would it be possible to read tdw's optionfiles? (which are a bit confusing some times because of the lack of grafic gui)?

Greeetz, Jaeger
__________________
Everything comes to him who waits
Jaeger is offline   Reply With Quote
Old 01-05-12, 08:25 AM   #4
DrJones
Samurai Navy
 
Join Date: Jun 2009
Location: Germany, 50 Kilometers away from Kiel
Posts: 576
Downloads: 343
Uploads: 0
Default

Quote:
Originally Posted by Jaeger View Post
very nice. this could become the new "silent huunter 5 commander". would be nice to see some grafics, too (eye candy). would it be possible to read tdw's optionfiles? (which are a bit confusing some times because of the lack of grafic gui)?

Greeetz, Jaeger
Thank you....About grafics and eye candy can we talk when the fully function is given.
This project is still in the construction area.

TDW's options can not be read by this application. His Options are held in a script. This one safes the options in a separate file.

in the future...Who knows....

Best Regards

DrJones
DrJones is offline   Reply With Quote
Old 01-05-12, 08:25 AM   #5
DrJones
Samurai Navy
 
Join Date: Jun 2009
Location: Germany, 50 Kilometers away from Kiel
Posts: 576
Downloads: 343
Uploads: 0
Default

Quote:
Originally Posted by fromhell View Post
brilliant work.
look forward to it
Thank you...me Too !!!
DrJones is offline   Reply With Quote
Old 01-05-12, 11:19 AM   #6
TheDarkWraith
Black Magic
 
Join Date: Jun 2007
Posts: 11,962
Downloads: 147
Uploads: 5


Default

Quote:
Originally Posted by DrJones View Post
TDW's options can not be read by this application. His Options are held in a script. This one safes the options in a separate file.
There's a good reason why I put them in .py files too. The version of Python used with the game is not very 'thread' friendly and/or the game wasn't coded 'correctly' to work with user Python code calling out to external DLLs. Calling out to external files is very tricky with this game. You'll find yourself getting CTDs with no explanation if you call out to something and it isn't 'synced' with the game. With everything in .py files you can pretty much eliminate this problem (since the code in the .py files is operating in the same thread as the game).

If you think about the architectural design of the game and the version of Python used they are completely different. The game was made using C++ (unmanaged code, no CLR), the version of Python uses managed code (has CLR). This is where things get tricky when you have unmanaged code running managed code that calls out to managed/unmanaged code

When you import a .py file all the 'items' in it are added to that object's global space. Since they are now in it's global space they can be accessed by it without having to call out to any DLL and thus risking a game crash.

The way you call out to DLLs and the way they respond back to the game has to be in-sync also or you will be in CTD heaven. You'll find out soon enough When you get the error "Silent Hunter 5 has experienced a problem and needs to shutdown" you know you have a DLL sync problem.

You are making an on-demand type of interface that will have many callouts and callbacks from it (you say you want to be able to change in real-time). Unless you are a master of multi-threading you will run into problems. Your callbacks cannot directly manipulate a .py file or you risk a crash. You have to connect the callbacks to the game in a soft and synchronized way (when the game is ready to answer your callback).

In my DLLs that change game values I use locks and other multi-threaded techniques to make them thread-safe and thus avoid the crash.

Your best bet is to design the interface in the .py files (and menu editor). That way it's guaranteed to be thread-safe.

Last edited by TheDarkWraith; 01-05-12 at 03:30 PM.
TheDarkWraith is offline   Reply With Quote
Old 01-05-12, 03:32 PM   #7
DrJones
Samurai Navy
 
Join Date: Jun 2009
Location: Germany, 50 Kilometers away from Kiel
Posts: 576
Downloads: 343
Uploads: 0
Default

Quote:
Originally Posted by TheDarkWraith View Post
There's a good reason why I put them in .py files too. The version of Python used with the game is not very 'thread' friendly and/or the game wasn't coded 'correctly' to work with user Python code calling out to external DLLs. Calling out to external files is very tricky with this game. You'll find yourself getting CTDs with no explanation if you call out to something and it isn't 'synced' with the game. With everything in .py files you can pretty much eliminate this problem (since the code in the .py files is operating in the same thread as the game).

If you think about the architectural design of the game and the version of Python used they are completely different. The game was made using C++ (unmanaged code, no CLR), the version of Python uses managed code (has CLR). This is where things get tricky when you have unmanaged code running managed code that calls out to managed/unmanaged code

When you import a .py file all the 'items' in it are added to that object's global space. Since they are now in it's global space they can be accessed by it without having to call out to any DLL and thus risking a game crash.

The way you call out to DLLs and the way they respond back to the game has to be in-sync also or you will be in CTD heaven. You'll find out soon enough When you get the error "Silent Hunter 5 has experienced a problem and needs to shutdown" you know you have a DLL sync problem.

You are making an on-demand type of interface that will have many callouts and callbacks from it (you say you want to be able to change in real-time). Unless you are a master of multi-threading you will run into problems. Your callbacks cannot directly manipulate a .py file or you risk a crash. You have to connect the callbacks to the game in a soft and synchronized way (when the game is ready to answer your callback).

In my DLLs that change game values I use locks and other multi-threaded techniques to make them thread-safe and thus avoid the crash.

ui thank you for that and the hints

it is as you also often say failing is the way to learn. i know it is a lot of trial and error. as you i also had sometimes a very big headache as i began to import the magui interface to that what it is now...(addins and further changes will follow).

The techniques you have used are very well known to me....also to the code of scriptmanagerwrappers and the code of the ironpython.dll....

can you tell me in wich version of framework you compiled you dll's. Version 4 causes Problems. With 3.5 the dll file could be loaded...so far any problem sighted. But i'am sure that there will come some crashes.

Thank you very much

Best Regards

DrJones

Last edited by DrJones; 01-05-12 at 07:59 PM.
DrJones is offline   Reply With Quote
Old 01-05-12, 10:11 PM   #8
TheDarkWraith
Black Magic
 
Join Date: Jun 2007
Posts: 11,962
Downloads: 147
Uploads: 5


Default

Quote:
Originally Posted by DrJones View Post
ui thank you for that and the hints

it is as you also often say failing is the way to learn. i know it is a lot of trial and error. as you i also had sometimes a very big headache as i began to import the magui interface to that what it is now...(addins and further changes will follow).

can you tell me in wich version of framework you compiled you dll's. Version 4 causes Problems. With 3.5 the dll file could be loaded...so far any problem sighted. But i'am sure that there will come some crashes.

Thank you very much

Best Regards

DrJones
Yep, trial and error is the best way to learn I thought I'd give you some pointers so you can avoid some of the major headaches I went through.

I compiled for .NET 3.5. I also saw that trying to compile against .NET 4.0 was problematic

The one thing I find very strange is that Python has a compiler to compile python code. I tried compiling some python code and importing it and the game wouldn't accept it. Very strange
TheDarkWraith is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 09:59 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 1995- 2025 Subsim®
"Subsim" is a registered trademark, all rights reserved.