simple machines forum

Please login or register.

Login with username, password and session length
 

News:

Remember to make your own backup of posts before submitting.

 
 

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Holey Moley

Pages: [1] 2 3 4 5
1
Devs / New BSP system info
« on: November 03, 2023, 03:55:19 AM »
For the record, I've now disabled the "BSP" system that hides chambers that shouldn't be visible by default. It can be turned on with a do_bsp [Option] but it has some problems because I've worked on making it work for layers.

There's a new feature in SOM_MAP on the "checkpoints" screen that lets you right-click to add a "pin" which will make a tile remain visible always.

This is helpful in some places where there are exterior/outdoor tiles, but it's also being used to patch over problem areas in the new BSP system.

The new system automatically fills all empty cells with the equivalent of a dummy tile. This is needed with layers. Unfortunately it sometimes malfunctions. I've turned it on in my KF2 demo and I've just used the "pin" system to fix problem areas.

BSP is off by default for backward compatibility and to not make new developers figure out how to use the new pinning system. The reason for all of this is to improve frame rates. And if you use the BSP system wisely you can cram a lot more monsters into interior/indoor areas. The reason you can is anything that's hidden by the BSP system won't count against the frame rate, i.e. performance.

Edited: There's also an Alt+Alt+B hotkey to enable/disable the BSP system when do_bsp is in use.

2
Devs / Working on shaped/animated shadow textures
« on: September 13, 2023, 02:35:59 AM »
I'm trying to generate shadow textures in x2mdl. I'm planning on packing these into ico (icon) files and putting one image in each RGBA channel. To draw them I think R and A images will need to be identical on subsequent frames. I don't know if they'll be doubled in the ICO file or not, but they'd need to be unpacked that way if not.

The idea is to blend between 4 frames in the shader. Only 2 frames will be needed but the others will still be calculated since they're in the same textures. They're just color channels after all. It'll probably slow down model conversion because the blurring effect has to pull in a bunch of pixels for each pixel, and there will be one of these for each animation frame.

I hope it will be worth it. For the Viper monster a round circle really doesn't make sense.

EDITED: Note, this image is a kraken's from KF2. I got this by doing 2 passes. The first pass just blurs everything by a 4 pixel radius. (It looks like more than 4 pixels because the white pixel 4 pixels from the edge is darkened and the dark pixel 4 pixels inside the edge is also lightened.) It needs to be that big to not look aliased. Antialiasing (multisample) isn't used because a height map is generated to produce some effects like you get if you are directly underneath a light. Unfortunately it's a little strange to be directly under a light all the time, but it's a little better than the fully abstract circle I think.

3
Devs / EXIT: Something old, something new...
« on: August 17, 2023, 06:48:51 PM »
Since last seen I’ve put finishing touches on the new tile icon generation system and the old tile system too. The latter is now accessed by pushing the slider bar in the map editor to the very top. The slider can also now be used to fade out the grid lines and to fade in direction arrows.

There’s many more additions mentioned in a wrap-up address inside the Discussion forum. The advanced profile editing tools can now be left open while working, and the Alt key works with clicking to open a 3D model editor. The parts editor tool now has a UUID system shoehorned into the icon field. This works because the old style icons are secondary to computer generated icons. The art system also uses this icon generation system on everything else so its “shortcut” files display a thumbnail graphic. I want to add that a whole lot of work has gone into all of this. The new map icons fill in the space between the grids and include a 2 pixel border for shadow highlights. Getting everything right took weeks.

In other news I’ve reset the Subversion repository. The first revision is now classic Sword of Moonlight for previewing and comparing to the second revision. I’ve removed all traces of “source code” for work from the web. I’m keeping it private going forward. I have private copies on Github that I hope will outlast me. I’m actively trying to make a turn to commercial outlets. I intend to consult with From Software reps before making this move. I’m going to put a non-commercial version on Archive.org as-soon-as-possible. In the meantime, please stay tuned, use SOM, and support my work!

I've already done a complete write-up for this new release (1.2.5.2) here (https://www.swordofmoonlight.net/bbs2/index.php?topic=373.msg3465#msg3465) and it includes a lot of details because this release took a lot of time and I'm really trying to lay down professional polish. It also has a word on my schizophrenia status :dollsoul:

Edited: You gotta re-checkout the Sword-of-Moonlight SVN repository, or use the direct page to update without SVN (http://www.swordofmoonlight.net/main/single-file-download/)

4
Devs / EXIT: Coming up for air...
« on: June 10, 2023, 09:28:27 PM »
Before I begin I’ve been in the habit of hiding past posts of late. The current most recent post dates back to April last year. I’m sorry. Anyone paying attention to me will have seen me going through a lot of contortions concerning my lifestyle and life course. Right now I have a kind of semi-benign schizophrenia that doesn’t interfere with my ability to think, however it disrupts my life a lot. I’ve been trying to cover my tracks.

I’m currently trying to tie up unpaid work on Sword of Moonlight in order to try to begin publishing a paid “early access” version. I haven’t had success with a Patreon model thus far, but I want everyone reading this to join me at Patreon.com/Swordofmoonlight and a new alternative called SubscribeStar I’m just starting out setting up.



In all these unpublished posts I’ve done some difficult work on order-independent transparency and most recently I’ve completed the new art import system by making icons be generated by default when making use of the art system. A preview is here showing how shading and lines are used to distinguish otherwise identical tile models.



These tiles come from my King’s Field II project. My schizophrenia is slowing me down on it. It also can help, surprisingly, since my brain talks to me and seems capable of programming computers. But it mostly slows me down. I’m having to recast my life/lifestyle, and reconsider if I can hit a 2025 self-imposed deadline or not. I’m trying to sleep less, and I’m out and about a lot more than I’ve been in the past decade since I started working exclusively on Sword of Moonlight. I’m active, and spreading my activities across many different areas of interest. I’m trying to take Sword of Moonlight to the next level in terms of using it to become financially independent. I’m also pursuing disability benefits, but truly I need economic support from everyone. That means you. I know a lot of people are interested in my effort, but don’t support me materially. I want you to really ask yourself if you can do that for me? I’ve put so many years of full-time work into this to arrive at this point. And it’s hard on me to ask myself if I should carry on or not, when my heart says I must, but my outlook says I can’t sustain this forever.

I want to thank everyone who has supported me in the past and present and in the future too! Please join us. For those who do not I want to try to get Sword of Moonlight onto Steam. I just have to figure out if it’s going to be compatible with its launcher. And I’m going to put the current version on Archive.org soon. I intend to add a few more features to it, but in the future I’m going to publish new features based on fundraising goals and sales figures. This is overdue, and I really have no choice at this point. Once set up on Steam I’m going to approach From Software to see if they are interested in collaborating on a physical edition of Sword of Moonlight with a developer license, and program something like SOM_RUN, for the paid version. It’s going to be “early access” for a while, and it’s going to need guides to be written. It will stay there until it has everything a paid product should have.

Here's more information in the main thread: http://www.swordofmoonlight.net/bbs2/index.php?topic=373.0

To update I recommend SVN Update and redownload your theme/language package for a new big map editor mode.

http://www.swordofmoonlight.net/main/single-file-download/ has a direct download link that I must patch up right now.

EDITED: I'm trying to get all my ducks in a row, including putting the King's Field 1 sample back into the package. I've removed the CODE folder and put it on Github instead at https://github.com/m-7761/swordofmoonlight with a Ghidra database too.

5
Devs / SOM_MAP icons: new "art system" progress in 2023
« on: May 26, 2023, 01:41:37 AM »
Here are some pictures of new things I'm working on. They show off generating (very basic at-the-moment) ICO files for SOM_MAP to use. They're embedded in the shortcuts, so you can see them in the MAP/MODEL folders.

Also on display is an alternative layout for SOM_MAP, with a larger display area. I'm trying to make it possible to switch with the min/max buttons.

For the icons I have to play around with some lighting and fog-like effects, and add some sharpening.

6
Projects, demos, and games Information / MOVED: Moratheia
« on: May 20, 2023, 09:53:21 PM »
This topic has been moved to Demos.

http:///bbs2/index.php?topic=154.0

7
Devs / EXIT: Friends in high places
« on: April 21, 2023, 03:36:59 PM »
To anybody visiting or returning to here, I’ve not dropped the ball on Sword of Moonlight and everything else, but I’ve been going through a lot in the past months that’s been spurred on by a “supernatural” string of daily events pushing and pulling me in different directions. I want to say it’s all in my head and I need some kind of medical attention, but the truth is there’s not really a medical solution and it’s not medical seeming at all. I’ve had a day job for less than 2.5 months, that I had to quit because the work environment was surprisingly bad, even though the job itself was a really good fit for me. I’m also trying to fit work on projects into my life. But I’m being regularly encouraged to find friends, and even make a family. But something about the “path” I’m walking is showing me how difficult or impossible that can be in our world today under my circumstances. I think I’m not alone in this. So, I just want everyone to know, that I really need to make friends somehow okay. I know that not everyone has a platform like a website, like this, and a game dev project/system to be able to reach out like I’m doing now. And right now this site has problems, including that email notifications aren’t working, so people (you) can’t even register with it until I can figure out what’s stopped working in the past few months.

You can leave a comment on this post if you want to get in touch so we can register you or help you out with Sword of Moonlight or even hang out.

https://discord.gg/x782kpHQ7E is a permanent Discord invite, where you can contact me on Discord as “m.” in there. #7761 is my full ID if you want to make direct contact, if that’s simpler for you. I’ve tried to find places to meet people in my city and just about every dating app, and it’s not working out for me. I’ve tried using Discord in meetup groups, to some extent, where young people are teenagers. It seems like right now it’s very hard to make contact with anyone if you’re alone, which I think a lot of us probably are now. My city isn’t a big city, I’m thinking of going to swimming pools soon, I mean, cities seem like bigger ghost towns right now than King’s Field’s towns. I wouldn’t have thought it until I really tried to. I was most surprised by dating apps. I mean they don’t work at all, they’re gold digging scams, and it’s almost impossible to meet people through them. So, where I stand is, please, if you believe in this project, let’s talk and be in a loop together. I’m trying to get my act together, but this may be my final front page post for a while.

I’m still working bugs out of the new order-independent transparency feature that’s become my focus of late. I’m aware of some performance problems. A generic transparency system (sorting triangles by screen depth) is a tall order. It’s something that I hope will make Sword of Moonlight standout since it’s something modern games have given up on making work.

Meanwhile my life is pretty weird, and I’m trying to clean up my house and family land.

FYI I'm planning to be adding new release information to this topic/thread going forward. Right now I'm debugging some things. I have every indication I should be sticking with Sword of Moonlight and King's Field, but my life it tumultuous now, and eventually I'm going to have to start looking for a new job to have some spending money. I'm continuing to get less sleep to try to make up the difference. I wish everyone well.

8
Help / Fresh start
« on: March 08, 2023, 03:24:39 AM »
I'm trying to cleanup my act. This board is the new main board. I hope everyone will feel free to use it as much as possible :evil: :evils: :saint:

9
Devs / EXIT: It's just work
« on: February 12, 2023, 04:11:38 AM »
I'm excited to announce, I got a job, I don't got a paycheck, but one should be around the corner. Anyway, I am trying to pick up the pieces of my work here. I'm going to be focusing on my King's Field II project in my off hours, whenever I can. My life has been in upheaval for a while, and this post is just to set the record straight. Those who've followed me the past few months know things have been crazy, crazy, crazy. Okay, okay. I don't know if I can hit that 2025 deadline, but my plans are to work until 2025 at a minimum. I'm working 30hrs a week. I think I can keep my medicaid this way, since the restaurant I'm working at doesn't have health insurance. And that's about all I can say.

I have done a little bit of work on order-independent transparency, since that is what I was working on when I got blindsided. It's one of the hardest problems I've faced, and it kicked my butt back then. But I'm trying to get back on that horse in the meantime. I want to make my demo more well rounded, and I want to make Sword of Moonlight (here) easier to setup. I'm dedicated. If I'm going to pull this off I have to work harder than I was and sleep less.

Update: I found a solution for order-independent transparency (same day!)

BTW, I figured out (on my own) a solution for the transparency problem. It took some trial and error, but pretty much I've made it to use the closet vertex, and all triangles using that vertex are BSP sorted (without cutting) (using the code I'd already set up for this) and it just kind of works, good enough. I've not seen any problems yet. But I need to do a lot of cleanup and fix a few things that need work.

After that (hopefully in a few days) I'm going to try to make a plain ZIP[1] download for SOM. It's not the recommended way, but a lot of people have begged me to do this for a while. It will have a TortoiseSVN database built into it, but you'll still have to install that if you want to update. I won't be keeping it up-to-date.

[1] Because ZIP isn't good for small files, I may look into other ZIP formats. This may not be easier than just using TortoiseSVN, or I might just use ZIP anyway.

10
Devs / Ordered transparency blending
« on: October 10, 2022, 12:16:16 AM »
I've been begrudgingly writing code to make a mess of everything in order to try to make overlapping transparent polygons blend consistently.

I'm afraid this is going to open up several cans of worms, but it's something I think would further improve the level of quality experienced with SOM. This is one of those things that modern day games can't really do I think, because they try to choke down too many polygons. So it's an area where SOM should be able to shine in theory.

But it poses a lot of problems. I've been trying to work on this for more than a week. I thought I could use my 3D modeling software project as a reference, however I found out that its transparency sorting was botched (not by me) and so I've had to be completely redoing it before I could do SOM.

It uses a BSP (binary space partitioning) approach to this, which I think is the only correct approach. But it causes many problems. For one, it has to split polygons so that they can be sorted. If they're sticking into each other there's no way to blend them consistently.

Traditionally this is done in terms of recursive half-spaces. But that will cause a problem for the do_aa effect (cracks) so at a minimum it will probably want every polygon to be split against every other polygon. Splitting is just against their plane. They're grouped into planes. But planes extend infinitely (and it's probably not practical to limit them, although maybe in simple ways would work) and so this can cause a lot of slicing and splintering.

I expect that this splintering won't be stable since I'm intending to just do this every frame for visible polygons. It's possible to try to precompute splits for everything. Which might be nice because it could just be done once. But it would have to be updated if anything moves, and would cause more fragmentation maybe from things off screen.

This will probably cause temporal artifacts. One way that might solve it is to switch over to per-pixel lighting. I don't know how much that will effect performance if so. But it probably wouldn't look a whole lot better, but long term I figure this is inevitable,  and I don't plan to maintain both vertex lighting and per pixel lighting, so this may be the project that forces that change if so. (Edited: I now have doubts about if per-pixel lighting will really help temporal artifacts. I'm afraid it won't be a final solution. But it might help make it less noticeable.)

The code for doing this is pretty complicated and I don't know how much I'm going to do to try to optimize it. The naive way to do it will just treat the whole scene as one transparent polygon soup. It will probably be better to slice it up into islands, but that involves a lot of complication and risks too. It may not matter much given our low-poly targets. But it will cause extra slicing and the amount of work is nonlinear, so it could balloon and really swamp the CPU, and if so it will depend on how much transparency is on screen. Highly transparent scenes could not be sliced up into islands anyway.

I've already written quite a lot of code for this, but it's a pretty big project. I hope a day or 2 more coding will get me to a point where I can do tests. I'm starting with level geometry, which only my KF2 project is known to be using. It has a big waterfall that suffers from not sorting its polygons. They're currently sorted to the tile, but not to the polygon. It's something I hope to achieve, but it's not fun. Just figuring out where to start was enough to make me want to avoid it until I could no longer delay.

Anyway, I figure I shouldn't just leave this forum in radio silence until I can finish this. And I'll probably have more things to talk about before I'm done. I don't know if this will be a release. I'm afraid I won't be happy with the results and may have to put it on hold.

11
Devs / Exit: Passing between worlds
« on: February 01, 2022, 12:10:08 AM »
An important milestone has (finally) been reached by Sword of Moonlight by realizing the original King’s Field single environment experience of no “loading screens” after hopping into the game. This is something King’s Field fans always gloat about since it was pretty novel back in the day, and even to this day lately I’ve played a little bit of some PlayStation 4 games and am finding myself shocked how much of the time is really just spent on minutes long loading screens. In my opinion I would happily remove the high fidelity visuals in these games for practical seconds long loading screens. Of course, no load screens would be ideal.

I believe From Software published Sword of Moonlight so that it would be carried away by its public. This is a crucial facility no King’s Field Making Tool is complete without. I believe Sword of Moonlight would not have been published in this form except as a challenge to take it up. We should not forget that Sword of Moonlight is modeled on a sword after all.

I wasn't sure whether to make this a release or a demo because I still need to battle test it by building out a full 2 map system using my KF2 project (it's long over due for another map to be added to its demo on itch.io and I've been postponing that until it could properly replicate KF2's no hiccups experience.) Both because I was thinking of making it a demo and I kept shooting myself in the foot with patches to the current release, all the way up to today, I've decided to just write this blog post and refer it to the current patch, which I hope is finally stable. Below are links to the patch files. I'm also going to be posting any future patches to this topic/thread to mark a point of departure.

http://csv.swordofmoonlight.net/SomEx.dll/1.2.3.6.zip
http://www.swordofmoonlight.net/text/日本語/最新.zip (Japanese)
http://www.swordofmoonlight.net/text/English/Neutral.zip

I've been working on this since the last weeks of December, last year. Although in that month I mainly did preliminary work (some studying/planning) by adding layer elements to events that take map coordinates. Technically I think it was possible to just refer to the base layer and set its elevation setting to coincide with a desired layer's elevation. I've tried to cover layers fully in the event system in this patch/quasi-release/project/task. This also includes new elevation limits and a rotation option for action based events and trip zone events. Note, I think in terms of activating things everything is now covered so that activation doesn't span "infinitely" above and below. IOW the default range is now limited to the object or character model bound to the event. (Also there's a "breaking-change" for the circle trip zone which had added its radius to said object's radius, which is no longer done. I've added an option to re-enable this, however I have a feeling the restriction to the object's base/height is more likely to break old games. I had a thought today to roll all of that together.)

One new event "module" (I think I'm calling these modules now, even though I have another plan for literal C# modules for SOM, but that will offer a plugin system for events too, so they will technically be modules too) was added, filling out the last remaining slot in the list (before it requires a scroll-bar) as if fated to fill in this slot (why was a slot left unfilled?) much like the layer system filled in the spaces left by the layer system From Software ripped out prior to publishing. Anyway, this event module/command/operation/instruction (call it what you want) sets a secondary map to start loading in the background. This requires a multi-core CPU. They've been standard for many years now and current Windows systems require them to function, so unless there is demand it will just be a minimum requirement from now on to use this. I did some timing tests and I think that a single-core CPU just won't be practical given how slow Windows is to access files (I'm a little surprised it can stream the BGM file, and this may be a bottleneck) at 60+ frames per second, so if demand arises the only likely thing I can do is add a way to disable this so that loading screens come back.

As a starting point this system functions just like the King's Field games would have functioned (I think all of them do so this way anyway) by connecting two maps at a time. Technically more than two "maps" (i.e. levels) will stay in memory for a few minutes, but two maps will remain in memory. Memory just means they're not on your disk drive. I'm pretty sure from what I've seen online that KF2 duplicates parts of its maps that intersect on the threshold. Currently this duplication is required with this existing system. I am interested in pushing it further down the road to actually display the other map against the current map. Logistically there is only one active map. Things like events only run on one map's events at a time. Under the current system the maps switch out instantaneously. If a more literal stitching system combined their images however, there would still just be one set of events. I do plan to try to carryover monsters, however presently, any monsters visible on map change will just blink out. This version isn't fully complete. To avoid that you can set up doorways (gates) like you will find in most KF games' inter-map corridors.

Edited: To get this new style transition working the new "relative" setting has to be checked on the map change event module. Technically this makes it so the "event" can cover every tile inside its trip zone, but it's also doubling as a "new mode" switch, since the old mode is limited to a single tile, almost like a teleportation booth. (I've thought about upgrading the old mode but it's not clear-cut that the new semantics can work with it without losing something in the process.) One other small thing is you need to rebuild the MPX file (compile/prepare it) since MapComp needs  to add some new information to it. (What tile/layer things belong too. This is information it used to emit but was disabled.) Note, it now defaults to "relative" mode.

The fog and sky and BGM is smoothly transitioned, however there's a larger flaw in this version than monsters blinking out, that is there's no provision for transitioning lighting. I have a plan for this, but it's going to have to wait until later this year, and will be a big project. In the meantime there are some creative workarounds for this if someone is really keen on using this in the next few months. What can be done is map geometry can have its diffuse lighting component overpowered either by maximizing the "emissive" component or using the new per-tile ambient system my KF2 demo is using to overpower the ambient component. At that point you will be stuck with having to fake lights by baking any lighting into your textures. But this approach can create a liminal corridor which both maps (with different global lighting) can agree on.

The solution I have planned involves more per-tile settings for most of SOM_MAP's settings. Even ones you wouldn't expect like the fog and names and music. This system should allow for little pocket regions within the maps themselves. (Edited: There will be an option to set the sky model on a per-tile basis, but it will most likely only apply to the current tile/layer and so anytime the sky is swapped out will have to be obscured from view somehow. The sky transition system blends two skies, and if it were possible to blend per-tile skies there would be a "combinatorial explosion" and tiles are square, so it would be tricky to smooth out jagged diagonals between tiles. That said I won't completely rule out tackling this one day.)

Oh, one more small limitation is you should stick to WAV files for music. The transcoding system I set up a while back isn't super efficient, but it will no doubt incur a hiccup if you try to mix it with a new nonstop map transfer. I need to roll that into the new art system cache x2mdl.dll is using so that the conversion to WAV is done one time and saved until the cache is emptied. I will do that when I add sound effects to the art system.

Another little something worth mentioning is I've tweaked the opening movies to load the first map in the background so that the game will load faster, even if players just try to cancel it ASAP... it only needs a second or two, which it can take to do the fade out effect. I'm also going to add this to the Continue screen, but I haven't yet. It will need to start loading while its Yes/No menu is shown. Also if you use do_start/start_mode=1 ("KF1" style) it will load the first map as soon as the title screens begin. Ideally SOM can be a no loading experience like the old 16-bit consoles which used ROM cartridges :713:

Edited: For the record, I want to take some time off to work on art for my KF2 project. So I'm not going to be working on SOM features for a while, and when I return to it I plan to focus on a few things that will make a new KF2 demo shine. One other odd thing that made it into this patch is a new way to turn off the menu system on the item pickup screen. This is how most of From Software's games actually work. SOM works differently IOW. But this new system still feels a little bit unfinished. Obviously it needs animation, but I wonder if it needs something else. (A sound perhaps?) Anyway, you can try it by setting it to Off in the Options menu, or pressing one of the auxiliary face buttons on the pickup screen. Even in an unfinished state it's actually good to get rid of the old Options setting, since it was totally nonsensical (and implemented completely wrong I found out) and so would otherwise be interpreted as the mark of unprofessional product.

https://www.youtube.com/watch?v=TgQUZcwd-JQ

12
Devs / EXIT: Long time no update! (Sorry about that)
« on: December 14, 2021, 03:57:22 AM »
I’m pleased to announce I’ve completed the most grueling round of work I’ve ever done on Sword of Moonlight and all the new files are online for the taking.

I did two long release cycles back-to-back except the first was not published because it didn’t have anything to offer to the general public. What it was instead was a big task to bolt on an OpenGL based alternative mode for SOM because new VR peripherals for PC don’t work with Direct3D 9. I chose OpenGL because I’ve used it plenty in the past and the newer systems like Vulkan and Direct3D 11 or 12 are completely different in terms of their design and are much more complicated, so it would be an even bigger effort to write code for those and it would be very alien to my past experience.

Once I completed that task the OpenGL performance wasn’t good enough, so I wanted to experiment with the dynamic vertex buffers, since SOM only uses dynamic buffers, which OpenGL is not good for. But to do that it’s necessary to rebuild all of the model files, like the MDO files, and remove the MDL files, so I realized that the time had finally come to do a project I’ve long been considering to unify SOM’s model files and build an art system into SOM to make it aware of the art development process.

SOM’s animated model files inherited a lot of quirks from the PlayStation’s design and the model format used by Sony’s SDK. These were unsuited for PC. SOM has a better format called MDO but it’s not animated, so you can say that its team were relying on this Sony style format as a crutch that shouldn’t have been published to an unsuited system. As a result this format has to be converted into a MDO like layout when the game loads, which is bad for performance, and both formats had used very small vertex chunks, which seem to be almost a clerical error, that would make them 32 times smaller than the target vertex buffer, which always remained until now only 1/32nd full, the rest going to disuse.

Working on this ended up being the culmination of all of my time working on the model conversion tools since I originally started working on SOM. These tools were the first things users at the time asked for, however I developed them and their reception was lukewarm at best, so don’t give people what they ask for I guess is the moral of this story, or don’t expect them to be grateful. I never know what to expect in terms of details when I start a programming task, it’s hard to predict, but this project turned into a never-ending slog very fast, to the point for the first time in my career I did what video game developers call “crunch” for weeks on end. I didn’t do this because I had to hit a deadline. I did it because if I hadn’t I would grow crazy forever pushing this rock up a proverbial Sisyphean ramp… and at least if you focus singularly on a task it tends to help to distract from the difficulty and monotony of the task. That was my thinking anyway. In the end it took hundreds of hours and add that to the hundreds of hours that I’ve already poured into the conversion tools, which had to be entirely battle tested for this effort, which itself proved to be a big part of the work.

In practical terms how to think about this development is SOM now will act as if it works directly with your art files, but in fact what it does is monitor changes to your art files and when they change it rebuilds its proprietary runtime files to reflect your changes. This can take a little bit of time, so it will be experienced as a pause with a busy cursor, or the splash screen taking longer to lower.

To make all of SOM’s components comply with this change it was necessary to upgrade its level editor. I had to rewrite all of that tool’s graphics from scratch. But this is good because it finally brought it up to the same standard as the rest of SOM, where before it had been noticeably lacking; another thing I long wanted to address. Its mouse input model has also been upgraded, and the screens that use gray and white squares has been upgraded to show an impression of the tiles underneath them so that they’re not so disorienting as before.

In addition I had to do forensics on all of SOM’s built-in models to reverse them back to the state of art files and archive them in an MM3D format I’m using for my King’s Field II project. You can download pretty competent 3D modeling software from my Github to work with them. I made some corrections to them where I found major non-cosmetic issues, however I haven’t yet made the effort to fix their many blemishes, although this work has moved that goal within reach. I will try to speak to more details in the forum post attached to this blog post.

Note, for this update it's very important to use SVN Update to refresh all of your files because that's the main part of the change. I usually post a link to a new SomEx.dll file like this (http://csv.swordofmoonlight.net/SomEx.dll/1.2.3.6.zip) one, but this file will be updated with the rest (although you'll still be prompted to upgrade it, which you should in case it's patched.)

For English readers, there are new buttons in the language package here (http://www.swordofmoonlight.net/text/English/Neutral.zip) which aren't extremely essential, but they offer a "Convert" feature in SOM_PRM and SOM_MAP which enables you to manually convert all of your art files in bulk. In SOM_MAP this is useful for making demos since you can tell it to generate data folders with just the runtime files that you need for a set of maps and nothing more, and use that as the basis for your game demo without including art files. (Edited: There's also some new error messages in them.)

This manual conversion system is a little bit different in that it also copies over runtime files where it doesn't find art files, so it's not strictly the same as rebuilding your cache to avoid running into load hiccups/waits, but if all of your models are represented by art files then it will be the same thing. All but a few weird MDL files that my x2mdl tool couldn't faithfully recreate--because they look like solid control points to it--are converted to art files, although I've not yet gotten to the level geometry files. The game never sees level files (it sees the compiled MPX files) so technically they're not part of the runtime file set, but I only neglected them now because I couldn't take anymore (delay) before publishing, and I hope I get them done in time for the next release.

The Convert button in SOM_PRM is supposed to let you select a subset of items on each screen, however it doesn't yet have a multi-selection model, so it just has to convert everything on said screen until I can get around to it. As for SOM_MAP I think it should generate everything. At first I thought it might be lacking, but I realized it was simple to also include SOM_SYS's starting inventory in its output, and also some odd models like the arm and shadow and gold coin. So it should build out a complete demo. In SOM_MAP this button is in the compile window called Prepare in the English language package.

For the new MM3D models you can use the program here (https://github.com/mick-p1982/mm3d/releases) called portable-mm3d.zip. I updated it last night but intend to do a little more work soon to improve the appearance of the texture model mode with respect to lighting and selection because with SOM's models its lighting is overpowered to the point that it may as well not exist. I've put a lot of work into this modeling software, but I didn't develop it from scratch. The original version was called Misfit Model 3D. I found a newer version (fork) called Maverick Model 3D. I'm calling my version (fork) Multimedia 3D. The others aren't compatible with these files.

The art system can work with any format in theory, but I'm not sure if other exchange formats are able to fully represent SOM's feature set, even though it's relatively simplistic. 3D file formats are just weird and nonstandard... to this day there's no standard thinking in terms of how to encode animations. The main page to watch for these things is this (http://www.swordofmoonlight.net/bbs2/index.php?topic=319.0) one. The x2mdl tool that I've developed originally as a tool for making MDL files is based on Assimp. It's an older version of Assimp but I don't think it's changed that much in the meantime. In theory what formats it accepts should be viable art formats. At one point I spent a good amount of time rewriting Assimp from scratch. That code lives in a code/Daedalus folder in the code downloaded with SOM. Unfortunately I never switched fully over to it, but I hope to one day because the x2mdl code (code/x2mdl) is very messy even by my own standards. I just can't commit to that right now, and what I didn't port much of to the rewrite was the actual importer code. That said I don't stand by the importers other than the main ones I've worked with and developed myself. I recommend the MM3D path if you can stand it, but if someone wants to work with a different format I will do all I can to make that work. I chose MM3D for SOM because I'm fully in control of it and it's a very close fit.

Something all of Assimp's loaders lack is support for soft animations. That's one reason I forked it since there was no movement happening in that direction. I've only implemented soft animation paths for the import code I've written myself. Another reason I forked it is I strongly disagree with how its importers work since they throw away connectivity data and don't work efficiently the way most proprietary formats work. (Not only are they inefficient for performance they're not good for writing maintainable/legible/brief code reflecting the structure of a target format.)

EDITED: I'm going to take a much needed break of sorts for a while. I hoped I could do another release before New Years but this one spiraled far into December, so I'm not expecting that to happen. I really want to pick up my King's Field II project so the next goal I have in mind is to implement level streaming, a la KFII and KFIII, that is always on everyone's lips when talking about King's Field but From Software neglected to include in SOM. Their team implemented very little more than the bare necessities to make a half passable PC version of the original King's Field (1994) that they only published in Japan. I'm not sure what will be required to implement streaming, but it feels like the right time to do it. I hope it's much simpler than this project turned out to be. Because it will deal a lot with level data it should be an opportune time to try to finish this art system with respect to level geometry. Level files also include the MHM clipping format which I intend to extend to static objects at the same time, hopefully included in the next release. For animated models my plan is to put clipping data in the MDL format. BTW, I forgot to say that how the new system unifies the model format is to combine MDO and MDL so that what you get is a hybrid where everything is a MDO file except there's animation data inside the MDL file, so neither has been discarded IOW.

13
Devs / EXIT: Anti-aliasing announcement
« on: March 20, 2021, 07:06:09 PM »
Something of note occurred a while ago. Briefly, for a long time now Sword of Moonlight has had a unique anti-aliasing technique for which I’ve continued to develop complementary 3D image-based graphical effects. This line of work has matured and now has reached a conclusion. It started when I had an idea I thought could address its main weakness: that is it takes more than one image frame to create a double exposure image, which means it can’t anti-alias a single image by itself, or put another way: when a picture is moving it can’t do its job.

This is an economical solution because it doesn’t require any resources or time on the computer to compute its results. When a picture is moving it can be hard to make out its edges, so anti-aliasing isn’t as important. So it mostly washes out, except it’s still a legitimate mark against this technique. To solve this problem (with an equally no resources solution) (as well as it can be solved) the new complementary technique works to remove contrast on moving edges. This looks like an unfocused image on the moving edge.

Shortly after developing this it made sense to implement supersampling for Sword of Moonlight because this anti-aliasing system seems finished, and to supersample an anti-aliasing technique is a common final step, although it does significantly increase the hardware budget to enable supersampling. Supersampling doesn’t automatically buy you much, especially considering its cost. It requires an anti-aliasing strategy to justify its cost, such as the one Sword of Moonlight has. So, long story short, combining these developments produces a very high quality image.

A third thing happened around the same time that’s worth including here: in short, intense scrutiny of the edge contrast technique made apparent deficiencies in the analog control system. A thorough investigation followed, in which not a fix, but a change was made that seemed miraculous in how it produced a much higher quality experience in terms of how movements are transferred from the analog game controller onto the screen. Without going too deep into a description how Sword of Moonlight actually works in this regard is to translate the sensor data from the controller into a very limited digital signal, and then convert that back into the movements you see on your screen. There are benefits to this process versus using the sensor data unprocessed but all that you need to know is the last conversion step is where the major leap occurred.

Finally, in the forum post attached to this blog item I’m going to be publishing previews of the next release, which will also include any patches in the meantime. I will explain the focus of the new release inside.

I've been meaning to sit down and write this blog post for a while now. I've written about this subject elsewhere but I want to commemorate it properly in the timeline.

I think the next release (I'm going to miss "1.2.3.4" :razz:) may be a longer wait than usual. But I'm going to make it available in this topic/thread well before it's officially published. Its focus is on upgrading the magic and weapon buttons similar to the extensive additions to the action button over the years. I may decide to include my planned upgrade to the menu button at the same time to complete the set.

I want to share the new features and may publish them in an incomplete form in my KF2 demo as well as in here in preview form. The difference between the final release version and the preview is only that the preview won't be in the updater menu, so it must be downloaded from this forum thread when it appears. The preview will be 1.2.3.5 and the final version will be 1.2.3.6. I'm also halting patches on the current release, if I can help it. If I feel any "quality of life" changes are worth sharing I'll patch this preview release from hereon out. (If I stumble on a serious bug I will try to patch the current release if my conscience gets to me.)

Work on the shield system is going well. It's pretty labor intensive and time consuming. The work that led up to it actually happened a year or even two years ago. So it's been an ongoing project. The new work I've done this year is already dozens of hours.  I couldn't tell you precisely, I just watch the days melt away. I decided I wanted to resume work on this because I was amped by this anti-aliasing/supersampling development, I wanted to treat myself to something I've withheld from myself since I first picked up Sword of Moonlight more than ten years ago.

Yesterday I was going to write this blog post but the day was consumed by first working on refining an effect where the shield must be pushed back when pushing against a wall (because there isn't room for it between the character and the wall and it creates strange optical illusions because it doesn't poke through the wall) by having the shield only push back when the said wall is in front of it. Usually push effects are 360 degrees because there's no sense of a "front" in a full 360 degree game (which most games aren't) however a shield is definitely in the front. It gets more complicated when turning a corner like this since cornering can be very iffy. The effect has to be stable rounding a corner, and also react to dashing (high speed) into a wall or other obstacle. But the worst of yesterday came later, that was a struggle with the walking effect that arises because the shield needs to be not synchronized with the walking effect (so the arm doesn't appeared glued to your head) but at the same time it's very close up and so any sudden movement in the effect is amplified by having the shield as a point of reference. This really put the walking effect code to the test. I got very close to burning out on it. The nastiest problem was since I've so far decided to let the "hop" input work with the shield raised. Hopping is inputted by poking the direction pad and tapping the action button simultaneously, which results in pretty high frequency input into the walking effect system that's followed up by a leap. That's probably the hardest test, i.e. to not glitch too badly, or ideally at all. I mostly got it working. Good enough for now. (This easily becomes a full day of work.)

For the record, right now the shield is pretty high quality in terms of button presses and movements. I've also improved my animation to the point it's presentable. I still have a number of aspects to address. I haven't decided how everything works. For regular jumping so far the shield is just forced to be lowered. That may not make sense if lugging a shield by your side is unbalanced for jumping. But as general rule most kinds of inputs force the shield to be lowered unless there's a reason not to do so. So far regular running doesn't lower it. Dashing and crouching doesn't. Most other things do. It comes back automatically if you're holding down the button.

May 12 Update:

http://csv.swordofmoonlight.net/SomEx.dll/1.2.3.5.zip

https://swordofmoonlight.itch.io/k/devlog/252682/shield-and-counterheavy-attack-demo

Attached is a DATA/MY folder that shows how to set this up. ItemEdit is needed to make Move Set profiles that just need to assign the number of these files to the first slot. It currently only supports the first slot. If left blank it uses the equipment type number, which is what the 2 and 5 files are. These are also used by the Nothing equipment. Note, to use the Nothing equipment you have to leave at least 2 item slots open. I've actually reserved 5 for later on.

14
Help / x2mdl/x2mm3d download (2021)
« on: December 25, 2020, 06:08:58 PM »
It's Christmas 2020, today I'm just making a link for a post where I will publish a new version of x2mdl I've been working on all year long. I would do it now, except I'm about to publish a new version of MM3D that drastically changes the way animations are stored in the mm3d files, so I need a few days to update x2mdl to be compatible. I think everyone can wait a little longer so to not have a too bumpy debut. It will probably be up before 2021, but the subject line for this topic/thread says 2021, so please check back a few days from now.

2022: http://csv.swordofmoonlight.net/x2mdl.dll/

http://www.swordofmoonlight.net/holy/x2mdl.zip

http://www.swordofmoonlight.net/holy/KF2-DATA-BACKUP.zip

https://github.com/mick-p1982/mm3d/releases

Reply#3 has some instructions.

Updates

*3/28/2021: Fix for inputting MDL files that have no deltas on the first frame of the first animation (now inherits data from the bind frame that's not outputted) and a fix that normalizes rotations around the Y axis so they can be upscaled to 60 frames per second in the player (notes in Reply #6.)

*4/14/2021: Critical memory corruption bug fix. Edited: Also added mdl2x program. This program is less tested, more experimental. It converts files to Microsoft's X format compatible with SOM's conversion tools. This may be the first time it's been published (notes in Reply #7.)

*5/9/2021: More fixes, incl. I bungled mdl2x last time because I added material names to improve it but didn't think to fix the corresponding parts of the file that reference the materials by their names. That's the kind of thing I do all the time (notes in Reply #8.)

*5/22/2021: Slight fix for first frame when inputting MDL files (more for diagnostic use) and adding "Original_MDL_viewer.exe" tool (notes in Reply #9.)

*7/15/2021: I've attached some source code to this post for safe keeping. You don't need to download it. It's not stored in the official repository with the x2mdl source code because it's code added to Assimp, that's used to read files.

12/17/2021: That code (strike-out) is now available with the rest of it (http://svn.swordofmoonlight.net/Sword-of-Moonlight/code/x2mdl/) (x2mdl is now built into SOM and extremely vetted.) The ZIP file is updated with new x2mdl.exe and Original_MDL_viewer.exe and a new viewer called Modern_MDL_viewer.exe that does the same modifications as x2mdl.exe. You probably want to use the latter if you make use these programs. The former (original) is for looking at old MDL files without any changes to their skeletal animation hierarchy and key frame data. Otherwise they're both just quick viewers for MDL and MDO and MSM model files. Also note, there's now a few command-line options for x2mdl.

4/9/2022: KF2-DATA-BACKUP.zip is art from my KF2 project for anyone who's asked for KF2 models in the past. Unfortunately the textures are quite dim. This is how they are on the game disc. You'll just have to increase lighting in your software or process them with image editing software one by one to your need.

15
Devs / EXIT: 25th Anniversary Project
« on: November 02, 2020, 07:05:51 PM »
At https://swordofmoonlight.itch.io/k I’ve published an early demo of my King’s Field II project that’s haunted me for the past half year. At the speed I was able to work I’ve only produced a beginning that comprises my goals for the second demo I promised almost two years ago, to the day. Most the lost time was bound up in developing tools for working with the 3D models and ensuring compatibility with the existing models. This included developing a cross-platform UI system and 3D art package and utilities.



The demo is using a new update to Sword of Moonlight that’s also the subject of this announcement. It includes a number of features that aren’t yet readily accessible to projects, since they’re not fully developed and integrated into the basic tools. In the final month before publishing I found myself working furiously on the control system since it made some interesting leaps at the last moment and I wanted to take it as a sign I should ride that wave in order to use its public visibility to showcase the control system.

Also included is a significant graphical enhancement that grew out of needing to reproduce the PlayStation’s unfiltered colors, that has the effect of reducing ghosting and moire like artifacts. It works by converting the pixel values into physical units and blending before converting back. Most games do this for lighting calculations today but it doesn’t work very well for low-poly models so I’m limiting its use to blending alone.

http://csv.swordofmoonlight.net/SomEx.dll/1.2.3.4.zip is the new SomEx.dll file.

I'm trying to relax for a while after an extended period of focusing on publishing this demo before the end of the year. It's just the beginning of November, so I might have a little bit more in me yet, but I don't want to be in a hard-nosed mindset for the last months of 2020. I have a number of projects I've been neglecting, but too I think I will say I'm probably interested in, slowly and aimlessly, picking at the problem of how to make SOM's monster's behave like KF2's.

I should probably try to include a list of additions to this update here. I'm not sure I can do that very exhaustively this time. I'll try to over time.

As for the third paragraph, this is called "sRGB" that is kind of a misleading term, but it just means (I think) a standard for interpreting pixels in images. I don't know if VESA standards adhered to this interpretation, but graphics features started to appear to do conversions automatically. One of these converts pixel values in GPU shaders into wavelength values (CIEXYZ?) that is more correct for blending colors. Like blending red and green makes yellow instead of brown. I'd not considered using this with SOM because I didn't think about using it selectively just for blending colors. If it's used for lighting it wouldn't look good with SOM because in real life light is much harsher than in old school video games. You can't represent harsh light unless your model is very detailed and you use per-pixel lighting instead of per-vertex lighting. I tend to think this harsh light doesn't look very good. But it looks blemished with low-poly data, even if you use per-pixel lighting you can't approximate the surface correctly with low-poly data. So I had to think out of the box to see its use, and KFII forced me to, since there was no other way to match what its color looks like on the PlayStation. The reason that is-is the PlayStation does no blending whatsoever, no filtering, and so it doesn't even have this problem. Your eyes just see what they see.

Just off the top of my head there are a few things in the control system that excited me a lot. I will list those now.

1) I got lucky in finding a way to walk down stairs that doesn't stumble down them as if falling off platforms. I didn't think this was possible (without special stair detection/behavior) but I had to solve a problem with falling off short platforms feeling very bad. By this I mean something that's in between a ledge and a stair. The first thing I found that worked happen to work for walking down stairs. Before this to not stumble down stairs it was necessary to slowdown with the analog input. That's kind of neat too since you have to do that in real life, but I didn't think that was a long term solution since gamers don't want to have to remember to do that to avoid stumbling. Very steep stairs still require slowing down, but these are the stairs of nightmares that wouldn't exist for pedestrian building codes.

2) There's technically a sitting system now, so the PC can behave like the NPCs and sit down on things. One of my goals is to unify the PC and NPC models so that it feels like it's just another NPC it its world. This system is basically free because it's identical to the squatting system. It comes from a new ability to climb onto platforms by bending over them so that when you summit you end up in a squatting pose instead of a standing pose. For shorter platforms this results in your head being lower than when you started climbing so it's as if taking a seat. The height difference between squatting in a seat and sitting upright is about as tall as your ankle, so in video game terms you can't really tell a difference.

3) The bending over system that lets you look down very far and even backward is refined. I had to simplify it somewhat to make it stable. But it wouldn't feel right sweeping over arbitrary objects of different heights and sizes anyway. I had a difficult time keeping it from clipping through geometry. Especially when dashing immediately into walls. Of course you wouldn't normally do that kind of thing but it still requires special logic. crouching was another hard case because it can technically lean out even further than normal because the bending over ability is attenuated when leaning into walls and obstacles but not when leaning out in a crouch, but nevertheless it abuts walls and obstacles. I worked on this when tightening up regular clipping.

4) I've tweaked every aspect of the control system, and a lot of that may have ended up in the previous release's final patch. I will try to recount all of that one day. The last thing I want to touch on today is the "wall-grab" system is tightened up so you don't go as far when pulling backward (this tends to look exaggerated and I've lessened jumping backward for the same reason) so that it can work interchangeably for pulling open doors. This can be done to levers or other things if you want too. And it's now possible to activate objects by crouching or grabbing them and letting go. (I'm currently considering having pressing all three buttons while not moving do a wall-grab in thin air so it can be done anywhere without crouching or having a wall and even while sneaking with the action button held down.)

A problem with pulling doors is it's not obvious if doors are push or pull depending on the side you're on. I may make an exception for them so you don't have to let go of the action button. I'm also interested in letting doors be closed manually. Another new KF2 support feature is doors are held open until you navigate away from them. For that reason you might want to close them behind yourself ... for no reason other than I find if I want to do something and the game doesn't facilitate it I'm reminded I'm playing a game. For me the magic of King's Field is when it casts a spell that lulls me into a trance until I forget where I am in the real world. In that moment nothing matters and time could continue to pass by and I wouldn't know it. This can be seen as a destructive quality of video games, but I find this doesn't happen so easily and when it does it's very therapeutic if games aren't set up to be addictive never ending activities.

These new additions to the control system may seem frivolous but there are more practical additions and polish. I've already written about them but I will include what I can here again in omnibus fashion, another time. (For the record, for me the "frivolous" ones are the best part. They lend SOM a meditative quality. But I'd even like them for Armored Core's more arcade style format. Ultimately I'd like SOM to encompass everything so the controls aren't substantially different, so I don't have to think about them differently when I play them.)

Pages: [1] 2 3 4 5