iWant小部件

收藏人数:1628
点赞次数:3663
下载次数:5783
资源大小:257.63KB

资源介绍

暂无介绍


详细介绍

简单简介

在3DM Mod站下载上古卷轴5:重置版最新的iWant小部件 Mod,由DaemonPrime制作。zp0130在我们的平台上分享了这个免费且高质量的游戏模组,让玩家们可以享受到更加丰富的游戏体验。快来3DM Mod站下载并尝试吧!

详细介绍

Mod作者: DaemonPrime Mod版本: 1.0 Mod大小: 257.63KB 更新时间: 2020-05-26 15:15:29 发布时间: 2020-05-26 15:15:29

详细说明

什么?

一个标准化的,以小部件为中心的库,可简化使用Papyrus进行Skyrim用户界面(UI)的编程使用。允许轻松访问UI中的任意文本和图形显示。提供控制库和Skyrim本机UI元素的功能。删除Adobe Flash作为有效的UI修改的要求。


怎么样?

设计理念

扩展了SkyUI小部件的概念,可以更轻松地将其合并到Skyrim mod中。该库仅使用可供Skyrim特别版所有者免费使用的工具即可使用。


在游戏中

图书馆本身不会产生任何结果。它旨在用作支持库,以允许修改者通过弥合一些其他复杂的技术差距来轻松扩展其功能。


加载顺序

插件可以在任何地方加载。


兼容性

就其本身而言,没有已知的兼容性问题。 SkyUI的小部件总数最多为128。出厂时,此mod消耗了其中的1个斑点,并允许任意数量(非常大)的iWant控制的小部件。


为什么?

因为天际UI模组太难了!真的,真的太难了。对于拥有正确工具和知识的游戏开发者而言,他们并不难,但是它们远远超出了大多数modder的技术和/或财务范围(如开发此mod时他们相对稀缺所证明)。作为爱好者,我想以一种简单的方式来获得有趣的图形。当我一无所获时,我便着手进行逆向工程,以解决现有的那几个小部件,以为我可以找到一种模式,允许自己和社区轻松地在没有Flash的新项目中重用现有的小部件。最初看起来很有希望的东西变成了一个非常深的兔子洞。最终我了解到,由于Scaleform(Flash)的工作方式,将现有SWF文件与新图形一起重用是死路一条,因为它们彼此冲突(我现在知道是因为它们全部都位于一个全局命名空间中)。


自从走上这条路以来,我已经了解到SkyUI(和SKSE)在标准化Skyrim UI访问(尤其是小部件)方面做了一些很棒的事情。 SkyUI中有一个相当健壮的库,可以自我记录。不幸的是,对于大多数人来说,它仍然有些深奥,而且可能更重要的是,它依赖于商业工具。特别是,SkyUI模型要求访问Adobe Flash创建工具,在撰写本文时,这些工具已不再由Adobe出售或免费提供。我相信这个障碍,甚至比复杂性还要严重,阻碍了该领域可能的mod开发。您要么必须是拥有足够使用该工具和知识才能使用该工具的知识的人,要么必须是拥有这些功能的人的参与。这大大提高了将简单的想法转变为简单的mod的工作水平。


当我开始开发我的第一个公共模块iWant RND Widgets时,除了简单的开始,我发现我希望能够轻松地将widget添加到其他东西。起初这似乎可行,并非易事,但可行。我花了很多时间对我可以使用的SWF文件进行反向工程。我能够更改所使用的图形并充分了解编程,以根据我的意愿扩展窗口小部件文件(在限制范围内)。不幸的是,一旦我基于iWant RND窗口小部件中使用的SWF文件构建了第二个窗口小部件模块iWant Frostfall窗口小部件,便遇到了意料之外的问题,尤其是令人讨厌的问题。无论我可以用JPEXS进行什么更改,这两个mod相互交互,即使从外观上看都是唯一的(新文件名,新的ActionScript类名等)。例如,加载两个小部件,改变形状和调整大小(扩展了SkyUI的WidgetBase的小部件的唯一类中的功能)。这发生在多个不同的源窗口小部件上。经过大量的敲打之后,我得出了一个(可能是错误的)结论:SWF编译过程正在将数据嵌入JPEXS不会更改的某个位置,从而使这两个不同的文件在某个地方使用通用代码。


毫不畏惧,现在对机器的胜利感到有些恼怒,我决定看看我能做些什么来改善这种状况。我寻找了一个古老的,仍然密封的盒装Adobe Flash Builder 4副本。可能不是该工作的最佳Flash创建工具(不是,请继续阅读),但是可以使用。在等待它到达的过程中,我在脑海中勾勒出图书馆为将来的改装者更容易解决此问题所需的内容。


我决定必须解决Flash问题。为了解决这个问题,我创建了100个独特构建和编译的SWF文件,每个文件包含10种颜色10个图标。该软件包将为将来的修改者提供我所需的大量原材料,可以轻松地使用JPEXS进行修改。仅此一项,就足以使许多以前被Flash挡在轨道上的改装者前进。我编写了脚本以生成数千个唯一的SWF,并编写了一个库来管理100个SkyUI小部件,每个小部件中有N个小部件。这是一个杂乱无章的解决方案,但效果更好

n现状。


Flash Builder 4出现了,我安装了它,并且……迅速了解到它无法生成有用的Skyrim SWF所需的一半数据。事实证明,它实际上是用于处理ActionScript(Flash文件中的代码)的专业集成开发环境(IDE),但是它不具备构建有用的SWF所需的图形构建功能。在点击“立即购买”之前进行研究。回到易趣...


我很幸运,找到了一份要出售的Flash CS4 Professional副本(呜呼!)。这是完成这项工作的正确工具。然后,我花了整整两周的时间进行正向和反向工程,然后逐步进行自学,最终在过程中自学了Flash设计和ActionScript。一路走来,我终于明白了这一点,并且(基本上)了解了实际情况。有了一些实际知识和辛苦的尝试和错误经验,我认为我可以做得比最初的想法更好。


通过更清楚地了解正在发生的事情,我意识到有一种更简单,更强大的方法可以使改装者使用这些功能。我想出的基本上是ActionScript中经过简化和标准化的API。您只需几行纸莎草纸就可以开始将硬盘驱动器上的图像放到屏幕上。再一行或两行,您可以放置以编程方式生成的文本。再添加几行,就可以使一些相当复杂的事情发生。最重要的是,您已经需要支付的所有费用(Skyrim SE)。其他所有内容均可免费获得,即此mod和GIMP。


什么时候?

该项目最初于2020年5月开发。


潜在的改进

测试!我做了很多,但我是一个,你们很多。请测试并记录发现的错误。

反馈!如果您让我知道有效的方法,无效的方法以及您希望存在的无效方法,则有可能将其修复或添加。对于新功能,请尝试解释为什么这里的内容无法正常工作。我对将所有ActionScript映射到Papyrus并不感兴趣,但是我敢肯定有些尚不实用的好东西。

更多图书馆图片。这些花费时间来寻找和制作,主要是因为我必须非常小心所涉及的许可证,以确保我可以免费适当地分发此mod(从这个词的许多意义上来说)。

更多字体。就像图像一样,困难的部分是所有许可和归属。

工作数组传输到ActionScript。即使所有代码都与工作示例匹配,我也无法使InvokeIntA工作。我放弃了,去了一个穷人的数组(在ActionScript中被分解的字符串)。我还没有真正介绍过上下文从Papyrus到ActionScript更改实际花费的时间,但是原则上整数加载应该比相同信息的单个字符串加载更快。就目前而言,在我完成的所有库练习中,字符串加载足够快。

删除库中剩余的比赛条件。在解决字符串负载之前,有一些地方会写一个值,然后推送一个调用。我怀疑在纸莎草纸上发生的事情进展得足够快,但仍然不够理想。

——————————————————————————————————
What?
A standardized, widget-centric library to ease the programmatic use of Skyrim's user interface(UI) using Papyrus. Allows easy access to arbitrary text and graphics display within the UI. Provides functions to control both library and Skyrim native UI elements. Removes Adobe Flash as a requirement for effective UI modification.

How?
Design philosophy
Extend the concept of SkyUI widgets to allow easier incorporation into Skyrim mods. The library is fully functional using only tools freely available to owners of Skyrim Special Edition.

In Game
By itself, the library will produce nothing. It is intended as a support library to allow modders to easily extend their capabilities by bridging some otherwise complex technical gaps.

Load Order
Plugin can be loaded anywhere.

Compatibility
By itself, there are no known compatibility issues. SkyUI has a 128 total widget maximum. As shipped, this mod consumes 1 of those spots and allows for an arbitrary (very large) number of iWant controlled widgets.

Why?
Because Skyrim UI mods were HARD! Like really, way way too hard. For a game developer with the right tools and knowledge, they were not that hard, but they were way beyond most modder's technical and/or financial reach (as evidenced by their relative scarcity when this mod was developed). As a modder doing this as a hobby, I wanted an easy way to have fun graphics. When I found none, I set about reverse engineering those few widgets that existed, thinking I could find the pattern to allow myself and the community to easily reuse existing widgets in new projects without Flash. What looked promising at first turned into a very deep rabbit hole. Eventually I came to understand that due to the way Scaleform (Flash) works, reuse of existing SWF files with new graphics was a dead-end as they conflict with each other (I know now it's because they all live in one global namespace).

Since starting down this road, I've learned that SkyUI (and SKSE) did some great things to standardize Skyrim UI access and widgets in particular. There's a fairly robust library in SkyUI that's pretty self-documenting. Unfortunately, it's still a bit esoteric for most and, probably more importantly, dependent on commercial tools. Specifically the SkyUI model requires access to Adobe Flash creation tools which, at the time of this writing, are no longer sold by Adobe nor have been made freely available. I believe this barrier, even more than the complexity, has stunted possible mod developments in this area. You either have to be someone with access to the tool and knowledge enough to use it or engage someone who has those capabilities. This greatly elevates the level of effort to turn a simple idea into a simple mod.

As I began to develop my first public mod, iWant RND Widgets, beyond it's simple beginnings, I found that I wanted to be able to easily add widgets to other things. This seemed doable at first, not easy but doable. I spent quite a bit of time reverse engineering SWF files I'd been granted use of. I was able to change the graphics used and understood the programming well enough to extend the widget file as I saw fit (within limits). Unfortunately, once I built out a second widget mod, iWant Frostfall Widgets, based on the SWF file used in iWant RND Widgets, I hit an unexpected and particularly annoying problem. No matter what alterations I could perform with JPEXS, the two mods interacted with each other even though from all outward appearances they were unique (new filenames, new ActionScript class names, etc.) For example, having the two widgets load, broke shape changing and resizing (functions in the unique class of the widget that extended SkyUI's WidgetBase). This happened with multiple different source widgets. After much head banging, I reached the (possibly wrong) conclusion that the SWF compiling process is embedding data somewhere that JPEXS isn't altering that keeps these two distinct files using common code somewhere.

Undaunted, and now a bit annoyed that the machines were winning, I decided to see what I could do to improve the situation. I hunted down an ancient, still sealed, boxed copy of Adobe Flash Builder 4. Possibly not the best Flash creation tool for the job (it's not, keep reading) but it was available. While waiting for it to arrive I mentally mapped out what a library would need to solve this problem more easily for future modders.

I decided the Flash issue had to go. To deal with it I created 100 uniquely built and compiled SWF files each containing 10 icons with 10 colors. This package would give a future modder in my position plenty of raw material to easily modify with JPEXS. That alone would have probably been enough for a lot of modders, previously stopped in their tracks by Flash, to be able to move forward. I wrote scripts to generate thousands of unique SWFs and a library to manage 100 SkyUI widgets with N number of widgets in each. It was a messy, hacky solution but it was way better than the status quo.

Flash Builder 4 showed up, I installed it and ... promptly learned that it cannot generate half of the data needed for a useful Skyrim SWF. It turns out that it's actually a professional integrated development environment (IDE) for working with ActionScript (the code in Flash files), but it doesn't have the graphics building capabilities necessary to get a useful SWF built. Do your research before clicking "Buy It Now." Back to eBay...

I got very lucky and found a copy of Flash CS4 Professional for sale (woohoo!). This IS the right tool for the job. I then spent a solid two weeks forward and reverse engineering what was going on, eventually teaching myself Flash design and ActionScript in the process. Along the way, I reached that moment of clarity where I finally got it and (mostly) understood what was actually going on. With some actual knowledge and hard earned trial and error experience, I thought I could do better than the original idea.

With a much clearer picture of what was going on, I realized there was a much simpler and more powerful method to get modders access to these features. What I came up with is essentially a simplified and normalized API into ActionScript. You can start putting images from your hard drive on your screen in just a couple of lines of Papyrus. Another line or two and you can place programmaticly generated text. Add a few more lines and you can make some fairly complex things happen. Best of all, everything you need to pay for (Skyrim SE) you already have. Everything else is available for free, namely this mod and GIMP.

When?
The project was originally developed in May 2020.

Potential Improvements

Testing! I’ve done a fair amount, but I am one and you are many. Please test and log bugs you find.

Feedback! If you let me know what works, what doesn't, and what you wish was there that isn't, there's chance it might get fixed or added. For new features, please try to explain why what's here doesn't do the job. I'm not interested in mapping all of ActionScript to Papyrus but I'm sure there are some cool and useful things that aren't here yet.

More library images. These take time to find and make, mostly because I have to be very careful about the licenses involved to ensure I can appropriately distribute this mod for free (in the many senses of that word).

More fonts. Like images, the hard part is all the licensing and attribution.

Working array transfers to ActionScript. I couldn't get InvokeIntA working even though all the code matched working samples. I gave up and went to a poor man's array (a string that gets broken down in ActionScript). I haven't really profiled how long the context changes from Papyrus to ActionScript actually take, but in principle integer loads should be faster than individual string loads of the same information. As it stands, the string loads are plenty fast enough in all the library exercising I've done.

Remove remaining race conditions in the library. There are places, written before I settled on the string loads, where a value is pushed then a call is made. I doubt things are happening fast enough in Papyrus to matter, but it's still less than ideal.


文件说明

暂无介绍

Mod截图

相关作品

真三国无双7 with 猛将传 白色旗袍貂蝉 | 巫师3:狂猎 全版本0.01负重MOD | 《上古卷轴5:天际》雪满城添加附魔台MOD | 上古卷轴5:天际 溪木镇捕鱼小屋MOD | 上古卷轴5:天际重制版 鹰巢的传说MOD | 侠客风云传 v1.0.2.7暴力独孤九剑MOD |

zp0130的其他作品

  • 真三国无双7 with 猛将传 白色旗袍貂蝉
  • 巫师3:狂猎 全版本0.01负重MOD
  • 《上古卷轴5:天际》雪满城添加附魔台MOD
  • 上古卷轴5:天际 溪木镇捕鱼小屋MOD
  • 上古卷轴5:天际重制版 鹰巢的传说MOD
  • 侠客风云传 v1.0.2.7暴力独孤九剑MOD