SUBSIM: The Web's #1 resource for all submarine & naval simulations since 1997 |
06-09-09, 07:53 AM | #1 |
The Old Man
|
[REL] KiUB Kriegsmarine Interface for UBm
This mod has been included by Lurker_hlb3 in OMEGU V300 WITH Patch, and OM Plot v402 so make sure to download his latest versions and patches. Optional fixes, enable them with JSGME AFTER all OMEGU mods: - AOB wheel marks remover: http://www.filefront.com/17001559/Ki...s%20remove.zip (This removes the green marks that show up when you turn on the AOB finder wheel). - AOBF and Stadimeter bright buttons: http://www.filefront.com/17001601/Ki...%20buttons.zip (On low resolutions, these buttons can be hard to see. I've made them a bit brighter in the OFF status). Documentation links: http://www.filefront.com/14992013/KiUB-User-Guide.zip/ http://www.filefront.com/15351513/Manual-Targeting.zip/ this is a big one, 28 MB. KiUB (or Kriegsmarine Interface for UBm, or "Cube" for short) is a mod that adds TDC and torpedo panels, miliradian marks and an AOB wheel to the Attack Periscope screen. - it works for any resolution - no optional files for different types of Uboats (only if you play Type 21 and want to see a correct salvo dial) - doesn't affect the American Interface - easy to customise marks and filters (details in the first documentation link) Many thanks to all that helped me and kept me company during the 3 months it took to make. This thread is open for any question regarding the KiUB interface and the SH4 interface in general. If you make modifications to my image files (which I tried to encourage by making the files themselves as easy to change as possible) feel free to post them here and I'll update this main post, with all credit awarded to the respective modder. Since OMEGU is a big mod, it would be best to have small fixes and visual upgrades here instead of spamming Lurker for updates. Unlike in SH3 where we had multiple options of campaigns and interfaces, Operation Monsun is THE mod to have when playing Uboats. Because of the simplicity of changing from RFB/TMO and other american side mods using JSGME, I've decided that making multiple versions of this interface for other super mods would be pointless. However anyone can integrate this into any interface (including vanilla, by using the resource files at the bottom of this page). Making this mod has been difficult and many shortcuts had to be made. The SH4 interface has more hard coded elements and to make a mod that works on any resolution requires a good understanding of the object structure and a bit of planning. My mod should be regarded "as it is", adding new objects or moving/replacing current objects would be very difficult. While I am available for any bug reports, advice and open discussion about using and changing this mod, the main layout is final. The lessons learned are here on this thread and available to all that want to enhance the SH4 interface (and SH5, since they share the same 2d engine). Special thanks: - OLC, Hitman, Makman94, h.sie, Joegrundman and Mikhayl for their work with SH3 and showing us what a Sub sim interface should look like. - again Hitman and Makman94 for their continued support with this mod - Lurker_hlb3 for actually giving me a reason to make it - the Subsim community for it's wealth of information and support for the game - not least, the Ubisoft Romania dev team for making this game as modable as it is Kit for modders: http://www.filefront.com/17110215/KiUB%20Files.zip WARNING: this is NOT the mod itself, don't be fooled by the folder structure. DO NOT enable this in JSGME. The playable mod is already included in OMEGU. These are all the files on which I have worked. Since the mod is integrated into OMEGU, to prevent weird situations, I'll offer them as resources here, separately. You can use, modify, integrate, do whatever you want, as long as you don't charge money (or I'll come to your door and beg for some). There's no need to ask me for permission to use them. Go ahead, have fun. A little credit would be nice, but don't bother too much with that either. Last edited by karamazovnew; 07-18-10 at 05:22 PM. |
06-10-09, 09:06 AM | #2 |
Sea Lord
Join Date: Aug 2008
Location: Stinking drunk in Eindhoven, the Netherlands
Posts: 1,844
Downloads: 28
Uploads: 0
|
I'm working with dials too at the moment, but from what I read you know a lot more about them than I do, so I'm afraid I can't help you.
I hope you can help me out though with a small problem I've got. I need to make a clickable dial accessible from the ConningDeck view. I can get dials to display the things I want, but whatever I do I can't get them to be clickable. Do you know how to do this? for your information, I want to do something similar as you want to do with opening 3d-hatches, but instead on the conning deck.
__________________
|
06-11-09, 09:22 AM | #3 |
The Old Man
|
Well, in the *.dat file get the id of any 3d node. Then go to the *.sim file and make sure the id isn't already used as the Parent ID of a dial node. To make the object a proper dial, just look how the Dial nodes are structured. To make the object clickable there are 2 ways. You can either make the dial itself send a command, or, better, make a new object (there are tons of these dummies on the dials which are invisible but can be clicked) and apply to it a Focusable3Dobj node which can send a command. Again, it's not rocket science, just look how it's already made on the current nodes. The deck should work the same. Let me guess you want to click on the UZO and make it show? When you want to work with a command like that, it's better to see how that command behaves in the commands.ini (or is it cfg?) file. You'll see that these commands that activate cameras also show the proper page of the 2D interface.
|
06-11-09, 04:29 PM | #4 | |
Grey Wolf
Join Date: Dec 2004
Location: Finland
Posts: 758
Downloads: 78
Uploads: 0
|
karamazovnew wrote:
Quote:
I'm not sure if this could help you to move on with you project, but anyway... my hint is free. -RC- |
|
06-15-09, 09:24 AM | #5 |
The Old Man
|
Phew, been gone for a while. Thanks for the tip Rosen, I've been following Dulcimus' progress and he was stuck on the torp problem too. The way he solved it was to comment out all the commands except the Toggle_open_blabla one. It works for the 2D interface ofc, because you click to select a tube, then press Q to open/close it. When you select another tube, the "Close Tube" command is commented out so it doesn't close the last tube. But my problem was with the 3D objects. As I said, it's impossible for me to comment out the Close command so I will actually disable the possibility to see what tubes you have selected. You will have to look at the torpedo selector dial. It's more realistic anyway. Well, I'll put that part on hold for the moment while I iron out the Periscope interface. Comming soon .
|
08-23-09, 07:32 AM | #6 |
The Old Man
|
Well, it's been a while and I have to confess I almost gave up at one point. I actually had to go back to understanding how the SH3 interface worked. After that I had to trimm down my list of features with a sledgehammer. The best I can hope for right now is a 2D interface for the Periscope screens. GWX 4 seems to have fixed a few 3D interior issues, but unless they want to share with me how they fixed it, I'm stuck on that part .
Anyway, here are a few tips I've learned. These were made by my own observations and are personal conclusions. If I'm wrong, please correct me: - it is impossible to add clickable buttons anywhere outside the layout page (or the order bar). - the game makes a specific check for Id's in the Menu_1024_768.ini to decide which to use in the German and which to use in the US interfaces. Moving any of these items from one page to another will result into a CTD. Parenting any item to an item outside the page will result in a "Menuid not found" error. The US side uses different pages for the TDC and PK(torpedo settings) and the Torpedo Panel. The German interface ignores those and uses the ones in the corresponding Periscope Page. Adding items to these "german" menu groups is the only way to ensure the new items will be invisible in the US interface. - Some graphic files, the background for certain, require a hardcoded adress-change. That's why the background item points to the same file for both sides, but then you see different backgrounds. This is not based on the item ID, but on the file adress. This can be usefull if you want to integrate new items in the interface that appear on both sides, but look different. As explained above, these items must be parented to an item that does appear in both interfaces, such as the main periscope page. - The periscope lines are hardcoded (you knew that already) as is the periscope bearing (but this one can be moved). The scaling is decided by the Angular Distance and minimum zoom level so that 1 degree at minimum zoom will always be 1 degree when using the stadimeter. The best course of action is to leave them alone and use them as they are. - The notepad pages for the german side work just as they did in SH3. That means that each periscope page has 1 free show/hide button, but it requires care when used. The Speed/AOB/Range pages and all other items from the notepad can be parented to the main periscope page to break them free from the side movement of the notepad. That is hardcoded to only the main notepad menu group and the movement is equal to the width of the menu group. Working with the menu.ini file is tricky and next to impossible without some tools. The first tip is to break each page you want to mod with comments. That was the first step I did altough it took me a few hours for the AP page . Adding items requires a renumbering tool. I've mad eone myself in Word, a simple macro, PM for it or use the Menu.ini Renumbering Tool here on the subsim forum (it just didn't work for me). Figuring out zone lines can be a chore. I made myself an Excel Spreadsheet that not only calculates the tricky parts, but also generates complete Pos and Zone lines. It's still a lot of manual input but beats calculating each item after you move a menu group. Again, PM for it, but remember that these are made for personal use, meaning that it might be difficult for me to explain how to make them work . And the big goodie in the next post Last edited by karamazovnew; 10-06-09 at 11:38 AM. |
08-23-09, 08:04 AM | #7 |
The Old Man
|
Resolution scaling
Most gave up modding the interfface because of the resolution scaling. For example, how the heck do you add an item in the middle of the screen, that STAYS in the middle of the screen even if you change resolutions and, even more, keeps it's overall screen fill ratio. Here's how it works.
EDIT: Finnaly I've got it, it's so simple.... Let's take the following example. I've added a small image, 300x300 pixels, in the exact center of the screen: [G26 I49] Name=Test Image Type=1030 ItemID=0x261000011 ParentID=0x26000000 Pos=362,-234,300,300 Zone= 362 534 300 300 0(SCALE) 0(PIVOT) 0x26000000 0.5 -0.5 0x261000011 -0.5 0.5 0 0 Materials=1 Display=2 Mat 0=data/menu/gui/test.tga Crop 0=0,0,1,1 MatFlags=0x9 TexFmt=0x0 Please note that for the image to be centered on the screen at 1024/768 resolution, the top left corner must be at X:362 and Y:234. Now, please notice the 2 red numbers. The first one controls how the image is scaled and we will call it SCALE, and the second one controls how the item is positioned and we will call it PIVOT. Relative Dimensions are controlled by the SCALE value: All items have a dimension on screen that is actually controled by the first of the 2 red numbers, based on the resolution of the screen. Let's take our 300/300 pixel image as the example... - for a value of 0, the image will always occupy 300x300 pixels on the screen. Thus, as the resolution is increased, the relative size of the image gets smaller. - for a value of 1, the image is scalled uniformely by the following number Yresolution/768. So, for a resolution of 1920/1200, the image will no longer be 300/300 but 468/468 pixels (1200/768=1.5625, 1.5625*300=468). Notice that it's still a box (height=width) - for a value of 2, the image is scalled unevenly on both axes. The height is multiplied by Yresolution/768, just as before, but the width is multiplied by Xresolution/1024. So, for a resolution of 1920/1200 the box will be 562/468. Note that this is no longer a box, as the width is higher than the height. - for a value of 5, the image is scalled uniformely by the following number Xresolution/1024. So for a resolution of 1920/1200, the box will be 562/562. So again, a box but bigger than the one corresponding to a value of 1. For all 4:3 resolutions(for ex, 1024/768, 1600/1200), then the values of 2 and 5 are redundant and give the same results as a value of 1. A value of 1 ensures that the item always ocuppies the same proportion of the screen, regardless of resolution. A value of 2 is important for all menu groups that must fill the entire space of the screen. They are invisible but important, as you'll see next. Any image would be skewed if used on a non 4:3 resolution. That's why for such resolutions, like 1920/1200, you can choose if the image get's scalled "vertically"(SCALE=1) or "horizontally" (SCALE=5). Most items use a value of 1, but some, like the periscope background, actually all backgrounds, including the images you see at the loading screen, must have a value of 5 to prevent seeing black areas at the side of the screen. But, the upper and lower parts of the images will be cutoff by the screen margins. You can test this easily by switching from 1600/1200 to 1920/1200 and looking ant the periscope background. You'll see what I mean. But what about position? That depends on the parent and it's SCALE value. Why? Remember that each item is positioned relative to it's parent. But if the parent has already been scaled, this will also be visible in the child's position. That means that as the parent is scalled, all of it's children positions will also be scaled to maintain their relative position to the parent's origin (which is always the top left corner). What does this mean for us? Well, take the main Periscope Page group for example. [G26 I1] Name=Page attack periscope Type=1027;Menu page ItemID=0x26000000 ParentID=0x0 Pos=0,0,1024,768 Zone= 0 768 1024 768 2 1 0x0 0.5 -0.5 0x26000000 -0.5 0.5 0 0 LoadingMode=2 It has scale value of 2. That means that at a resolution of 1920/1200, altough it appears to only have 1024/768, it actually is 1920/1200 pixels. All of it's children will have their top left origin scaled. That means that altough my image should be at 362 left, 234 top, it's not. It's actually at (362*1920/1024) left and (234*1200/768) top. It's at 678 left and 365 top. But that creates a problem for us. As we change the SCALE value of our item, it's dimensions change with resolution. In other words, altough it's corner doesn't move, it's center does. That's where the PIVOT is important. - for a value of 0, the pivot of the item is the top left corner. It will not change position depending on resolution, but as the item is scaled with resolution and it's dimensions change, it's center will move. - for a value of 1, the pivot of the item is the center. Ha? That means that the center of the item will not move, but the corner will as the item's dimensions vary with resolution. Last edited by karamazovnew; 02-01-10 at 12:57 PM. |
08-23-09, 03:15 PM | #8 |
The Old Man
|
That's all there is to it. For example i am now finishing my TDC page with 6 dials. I want them to have the same screen dimensions on all resolutions, Even more, I need them to be glued to the left of the screen. What SCALE and PIVOT values should I use? For the dials I will use a SCALE of 1 and a PIVOT of 1. Their group will need to be parented to the Main Page, and glued to the left of the screen. It's Scale will be also 1, but a pivot of 0, so it's corner will not move out of the screen as it increases it's size.
What if I want to do an AOB wheel in the center of the screen that always fills the "hole" of the lens (let's say the id for this item would be 0x261000011)? That's even simpler. I'll parent it to the main periscope page(0x26000000), since it already scales with resolution. I will try to center it on the screen for 1024/768 (that's easy, a zone line of 0x26000000 0.5 -0.5 0x261000011 -0.5 0.5 0 0 will always be at the center of the screen, no mater the size). Then I will put a SCALE of 5, and a PIVOT of 1. So it will look like this: Zone= XXX YYY Width Height 5 1 0x26000000 0.5 -0.5 0x261000011 -0.5 0.5 0 0 While this may sound complicated, it isn't. All you need to do is decide how you want your interface to look at 1024/768, then decide which items scale up with resolution, which you want to remain at their current monitor position, and go from there. You only have a few values to work for, for both PIVOT and SCALE. Now excuse me, I need to go back to work, don't want anyone making a TDC in the periscope screens before me Last edited by karamazovnew; 08-23-09 at 03:32 PM. |
08-23-09, 06:24 PM | #9 |
Hellas
|
hello Karamazovnew,
wonderfull info stuff you showed us here !! i think that sh4's gui moders should start working on these new data you discover ....maybe we will see , at last , the u-jagd tools in sh4 !! good job !
__________________
Knowledge is the only thing that nobody can ever take from you... Mediafire page:http://www.mediafire.com/folder/da50.../Makman94_Mods |
08-23-09, 08:34 PM | #10 | |
The Old Man
|
Quote:
First, Download Mikhayl's AOBF: http://www.mediafire.com/?xbn9xydc2jl his thread is here: http://www.subsim.com/radioroom/showthread.php?t=135184 Use it first as it is to see how it works. I'll tell you because I've already analysed the Menu.ini file. The AOBF is made up of 2 items, the inner and outer dials (0x26030012 and 0x26030013) parrented to the AOB menu group (0x260E0000) which holds the elements from the AOB input dial, and is in turn parented to the AOB page (0x260C0000). This page is hardcoded to appear when you click the AOB text on the notepad. That means that - to make the AOBF appear, you must click on the AOB text - if you close the notepad from it's handle, the AOBF will move to the right, but will not dissapear. - you can use both items at the same time, which allows you to still enter the AOB through the notepad. Please test all of these behaviors. Now, open the Menu_1024_768.ini files and let's make some changes to the G26 page (the attack periscope page). Let me explain what we'll do, you don't need to understand this part, but it would help. You'll probably get it after you make the changes. There is a catch to centering the AOBF on the screen for all resolutions. A simple way would be to parent the 2 items to the main periscope page, but that will make it always visible, and we don't want that. It's parents must remain the same, BUT, as I have said in my post, for an item to be centered in the screen, it must be centered on it's parent which must act as the screen, it must already be centered on the screen and have an aspect ratio of 4:3 (or simpler, it must have 1024/768 for size, and a SCALE of 2 and PIVOT of 1). The AOB menu group (0x260E0000), the primary parent of the AOBF is just an intermediary parent, not needed, but let's ignore that for now. It's the main AOB page that holds all of the items. It's the page that appears when you click the AOB text. This MUST be our "screen". But it's already parented to the notepad. No problem, we can break that link and parent it directly to the screen. So... do a search for the green text and cpopy my red lines over the original text. Got it? [G26 I89] Name=Angle on bow Type=1026;Menu group ItemID=0x260C0000 ParentID=0x26000000 Pos=0,0,1024,768 Zone= 0 768 1024 768 2 1 0x26000000 0.5 -0.5 0x260C0000 -0.5 0.5 0 0 Color=0xFFFFFFFF Now the AOB menu page will fill the entire screen, regardless of resolution. It is invisible, but if you start the game now, you'll see all of the items of that page all around your screen (again, you're not using 1024/768 resolution right?!). However, please note that altough, the page is now parented to the main periscope menu group, it still only appears when you click the AOB text on the notepad. Let's do the same thing to the 0x260E0000 item, that is the direct parent of the AOBF (we could ignore it and change the parent of the AOBF, but...some other time). [G26 I92] Name=AOB Type=1026;Menu group ItemID=0x260E0000 ParentID=0x260C0000 Pos=0,0,1024,768 Zone= 0 768 1024 768 2 1 0x260C0000 0.5 -0.5 0x260E0000 -0.5 0.5 0 0 Color=0xFFFFFFFF As you see, I've put a SCALE of 2 for these items. If you go back to the game, now you'll see the temp AOB dial all screwy too. I guess it's time to move all of these screwy items out of the way. For the following items, simply move them out of the screen by inputing a value of 2000 for their X offset (you could also comment out their Zone lines, but if they are parented in any way, it will cause a CTD, changing the offset is much safer): [G26 I90] [G26 I91] [G26 I93] [G26 I94] [G26 I95] [G26 I96] [G26 I97] for example: [G26 I90] Name=Angle on bow val Type=1029;Static text ItemID=0x260C0053 ParentID=0x260C0000 Pos=190,-212,70,16 Zone= 929 527 70 16 0 1 0x260C0000 0.655172 -0.768116 0x260C0053 0 0 2000 0 Color=0x111111FF Font=5 Text=0 TextFlags=0x6 This will move all of these items out of the screen. Now let's deal with the AOBF itself, it's waaay down at the bottom of the periscope page. Since it will need to always fill up the hole in the background, it must behave like it too. The background item has a SCALE of 5, so we'll use it like that. We also need to center the items on the screen. Also, since Mikhayl didn't imagine that someone would try to mess up with the resolution, he made the outer dial with a display factor of 0. Even if we make the menu group behave right, the image file itself will not be scaled, so let's make sure we correct that too, by giving it a linear display type. [G26 I150] Name=AOBF Inner Disc Type=1031;Stat bmp array ItemID=0x26030012 ParentID=0x260E0000 Pos=231,-103,562,562 Zone= 231 665 562 562 5 1 0x260E0000 0.5 -0.5 0x26030012 -0.5 0.5 0 0 Materials=1 Display=5;Linear&rotation Mat 0=data/menu/OLC/AOBFInnerDisc.tga MatFlags=0x29 TexFmt=0x9 [G26 I151] Name=AOBF Outer Disc Type=1031;Stat bmp array ItemID=0x26030013 ParentID=0x260E0000 Pos=231,-103,562,562 Zone= 231 665 562 562 5 1 0x260E0000 0.5 -0.5 0x26030013 -0.5 0.5 0 0 Materials=1 Display=2 Mat 0=data/menu/OLC/AOBFOuterDisc.tga MatFlags=0x29 TexFmt=0x9 BmpState=1 All done. What you should now have is: - when you click the AOB text on the notepad, the AOBF appears in the center of the screen, scaled, regardless of resolution. GOOD - if you "close" the notepad by clicking on it's handle, while the AOBF is visible, the AOBF stays where it is, in the center of the screen. GOOD. - if you want to close the AOBF, you must click the Cancel or Accept buttons on the notepad, just as before. Again, GOOD - if you want to enter AOB through the notepad, you can't, because we've moved that out of the screen. BAD, but i guess you can live with that. Now again, this was all done mentally, based on my rules. If they are correct, it should work as described. Please test this, as I am unable. Here's the modified file, just in case you have problems, simply copy it over Mikhayl's mod. http://www.filefront.com/14372713/menu_1024_768.ini PS: btw, remember to change resolutions, all should work just fine. And try to enter a US sub. You'll see that it is completely unchanged, since all of the new items have been parented to ID's which are not used in the US interface. And for the love of god, if you reply to this message, pleeeeaaaase don't quote it, it's huge!!!! Last edited by karamazovnew; 08-23-09 at 08:54 PM. |
|
09-06-09, 05:51 PM | #11 |
Hellas
|
hello Karamazovnew,
just a small question : your new interface is building based on OM or in stock 1.5 ?? ps: looking forward to see your mod !
__________________
Knowledge is the only thing that nobody can ever take from you... Mediafire page:http://www.mediafire.com/folder/da50.../Makman94_Mods |
09-06-09, 09:54 PM | #12 |
Admiral
Join Date: Apr 2005
Location: San Diego Calif
Posts: 2,290
Downloads: 187
Uploads: 12
|
None of files used in this mod conflict with OM, however if you add OMEGU then you have major conflicts that would require some serious integration to get it to work.
|
09-07-09, 07:11 AM | #13 | |
Pacific Aces Dev Team
|
This is excellent knowledge
Unfortunately, the modding of it is still too complicated for me. Otherwise I would have already ported my optics mod to SH4, and that is still the main drawback I have about using the U-Boats in SH4, I hate to target without my TDC near the scope and the ability to input all data there Quote:
__________________
One day I will return to sea ... |
|
09-07-09, 07:28 AM | #14 |
The Old Man
|
Yeap, just try it, it only takes a couple of minutes, too bad the periscope object has it's Y axis missplaced. All dials rotate on their Y axis. So you'll have to export the object in MAX, rotate it's pivot and reimport. Then break all children, rotate, and relink all children.
The new interface is coming along well. I'm still working in Maya in my very small free time on my main pc. The dials look superb, but I will have to remake all the 2D dial dds's at 2 times resolution for it to look ok. I guess that in about a week I'll have the first screenshots. Here's the main outline: There will be no indication of TDC autoupdate on/off. Unless someone can show me how to do it, the SH4 limitation is at the moment impossible to break. There will be a TDC Autoupdate switch on the main menu bar on the periscope page, and I'll link it to the Enter button. Also no indication of which torps are selected, no clickable torp Buttons. You will need to use the torp switch dial. Okok, maybe I'll put some small bulbs to light up under the torp number label if the torp is selected. Attack Scope - on the right, the draggable TDC (Up) with 4 dials and AOBF (down). The AOBF will actually be doubled, one will be manual, the other linked to the stadimeter (IF, i can make the proper dial relation). - on the left, all torpedo dials and switches (altough there is absolutely no way to indicate which torps are FAT and which not, but the dials will be there) Obs Scope - on the right, TDC up and Attack disk (with both faces) automated as much as possible, bearing wedge linked to bearing dial, outer dial linked to inverse course etc. - same torps dials Uzo - TDC but no attack disk or AOBF, maybe some chart or small recognition manual as in ACM - same torp dials Screenies coming as soon as I finish the Maya part . |
09-07-09, 07:33 AM | #15 | |
The Old Man
|
Quote:
I will start from the OMEGU files. The integration is easier that it looks, I just need to remove the FLBsales torp dial. I'll take one screen at a time, no need to hurry now... |
|
|
|