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.

Messages - Holey Moley

Pages: 1 ... 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 ... 58
181
Devs / Re: EXIT: 25th Anniversary Project
« on: February 01, 2021, 02:51:04 AM »
AMAZING PATCH

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

This patch has two back-to-back enhancements I hadn't anticipated that are some of the best things to happen in a long time.

The first happened a couple days ago, that is the final nail in the do_aa system (in a good sense, not a coffin, a structure) and I've made a topic/thread for it here (http://www.swordofmoonlight.net/bbs2/index.php?topic=324.0) but I don't know if I will have more to add to it. I'll have to wait and see. The day after I was able to look at with fresh eyes and I'm happy with it's current configuration. I don't think I will revisit it until I have a good system for adjusting its settings without rebuilding/restarting the program. I keep thinking I will finally break down and set that up, but I'd really like it to be part of the Exselector system I have had planned for a very long time. It seems like bad luck to force it.

Now the second development came about because I was spending so much time scrutinizing pixels while make subtle movements.

I started to notice a really unpleasant wobble when turning sometimes, depending on the approach and timing. I wasn't sure what it was, so I spent all this morning investigating it. I don't think it was so noticeable before I recently added a system that changes how you drift after circling. To see the problem it was necessary to turn inside and slowly.

This turned out to be one of the situations where I feel like the angels are on SOM's side. Whether or not this is the root of the problem, it was the solution. In a kind of act of desperation I just tried the most harebrained thing I could think of and it actually worked perfectly to make the movement system become suddenly angelic for lack of a better word. It's probably a case that the system is overdesigned, and there's a simpler way that a smarter person could express it, or the math, or whatever.

I'll try to explain it, but know that the result is now the movement system, turning, etc. is so smooth you can't even tell you're changing gaits, which is like changing gears I guess, and that kink is gone, and no doubt there were many kinks like it, but it just happened to easy to notice.

A short primer, in the beginning, the original solution to making SOM be kind of analog was very crazy, but actually kind of worked. At that point reprogramming it's binary was beyond my grasp. So what I did was like, to move at half speed, was to move every other frame. And so on. I was probably able to decouple the visual from the movement, I can't remember, but I can't see why not. So maybe what you saw was pretty smooth, but the underlying movement was kind of jerky like this. But even then I thought this was a good design, because controllers are very erratic, and thumbs don't have as much finesse as you may think. I didn't want a one-to-one connection between thumb or controller to what you see, and I wanted to have fixed speeds, and to potentially be able to assign an animation (a gait) to each speed someday. You can manage that if there's a small enough number of them. Plus I figured this would be more organic (i.e. less robotic.) Plus I think most commercial video games really only offer 3 speeds. So SOM actually offers 7. This is because the controllers are really garbage. Probably SOM is too sensitive as it is. Most games have a huge dead-zone because they know 70% of controllers are defective.

Eventually the system became more refined. Usually always because it had to for this reason or that. Like, this is a prime example. There was an unacceptable wobble, so I had to figure something out.

So one of the first things I did after increasing the resolution (this involved making the speed independent on each axis and modulating it based on the actual moving velocity) was add a spring simulation. It's probably not how you imagine a spring. It's more like a system for shifting gears smoothly. Each time you change your gait the stiffness and target for the spring changes. It's actually kind of weird to think of a spring with a dynamic stiffness.

So I calibrated that so it switches over as smoothly as possible, but you can (or could) still tell when it's switching over, just like a bicycle. The stiffness didn't change instantly. It would evolve at constant time to the new stiffness. So the problem, I guess, depended on the timing. If you approached slowly it would be fine. But if not it might look kinky, and I think whether it did or didn't also dependent on the micro frame rate at the transition point.

So, what the new change does, is it manages the rate of change of the stiffness depending on how far away the target stiffness is. I really felt like making a such a change was piling more derivatives onto an already too out of control situation. So I didn't expect it to work, and I certainly didn't expect it to behave like an optimal solution. I really felt like it was just a moment of grace to be honest.

The gear shifting analogy is a good one, but another way to think of the situation is as a quantum system (not quantum mechanics) meaning that you have some quantized states that must be translated into an analogue response. I never expected it to be like this. I will say this. It now feels like it has parity with mouse input FPS games. The mouse also feels better, but it's pretty underdeveloped. I may take another look at enabling high resolution mouse input. I already have the code but it wasn't a better experience.

What makes it more viable is I think the input is much closer to a one-to-one mapping. All the more remarkable because it's only working with 7 states.

P.S. I think I mean to write a blog to highlight these back-to-back developments. They're probably the highlight of the year, even in January.

182
Devs / Re: EXIT: 25th Anniversary Project
« on: January 28, 2021, 02:27:22 AM »
I've added a patch (usual URL) that uses the XInput API's buttons report for controllers that are detected as XInput. I hope this solves some troubles people seemed to be having with the button mapping, but I'm pretty skeptical it will. But it will remove one variable.

Background: Windows seems to emulate DirectInput controllers (which SOM uses) for XInput controllers, and I assumed that these virtual controllers always have the same button layout.

Either they do always or they don't always. I can't think of a good reason they wouldn't, so I'm guessing people having this trouble are using a native DirectInput driver for their controller. In that case if it can be detected as an XInput (also) controller, then hopefully it will work with these overridden button mappings. If it's a pure DirectInput controller (like the PS4 controller is) then short of building a database of known controllers (which I'd be fine doing) people just gotta figure out how to use their configuration files.

I'm hopeful this will work for the most part now. When I started writing this the scenario of being able to override it even if it is native DirectInput hadn't occurred to me. I think Sony's PS4 controller is probably an oddball in not having an XInput driver. I think it's trying to not compete against the Xbox on Windows (by using its input system) but still giving developers access to it to use with their workstations (and I imagine many or most games recognize it anyway, but they have to program a DirectInput layer to do so. So smaller games probably don't.)

183
Man I had a pretty bad time with this. The programming went alright, and I thought it would be a good opportunity to experiment with different parameters, but everything I tried essentially is indistinguishable from regular mipmaps.

And to make matters worse I hadn't really considered that I was using an extension that generates a double-wide pixel art texture, so that the first mipmap level was really the real texture.

And actually for the problem I'm trying to solve it mainly just shows the first mipmap. And it wasn't really interesting in this case. I wish I'd realized that from the start. It would've changed my strategy entirely.

At some point I realized what I really wanted was just a point (nearest neighbor) sampled mipmap, and that this new code can't deliver that. But it's actually simple to make a "point" mipmap and it doesn't shimmer like doing point sampling on the GPU does because it's really a mipmap, so it's stable.

Unfortunately it wasn't a eureka moment exactly, since by now I realized the problem wasn't really the mipmap so much as mipmaps/anisotropic filtering may be inadequate... this could even depend on your chipset. I think there is a little bit of the second mipmap blended in... so I switched over to using this point filter strategy, plus it's just as good really (for KF2 at least) and doesn't even require sRGB transformation.

I think it looks slightly better. A box filtered mipmap is naturally duller because it mixes the colors together until likely you get some kind of gray mush. So it helps that problem some to just keep the original colors intact. But it's not by much.

I wish I could think of something clever. I will probably try to increase the relative contrast some on them, I don't know. On the headeater monsters a problem with point-filter showed up, that is it can make stripes. So I added some bare minimum logic to jitter which pixels are chosen so you just get color noise. Not great if you expect more than that.

I will make this an extension at some point, right now I've just made "mipmaps_pixel_art_power_of_two" to use this point filter mode. It may not be a great choice if game depends on very accurate pixel art. But KF is just kind of grainy in this regard, and that's probably what you want anyway. With anisotropic filtering you don't tend to see much of the second level mipmap. Anything lower is going to be viewed at a shear angle.

My problem is it can become a gray film or sheen of mush that's just not attractive. This is mainly limited to the ceilings in the caves. It probably doesn't help they're pretty bright and contrast with the black fog.

P.S. Oh well, maybe this other code will come in handy one day.

184
Today I'm going to finally break ground on that mipmap project. It's hard to find good information on the subject but there does seem to be a general consensus that it's helpful, or can be.

I'm going to adapt this (https://github.com/dwilliamson/GDMagArchive/blob/master/dec01/blow/gdmag_mipmap_1/main.cpp) code that comes from here (http://number-none.com/product/Mipmapping,%20Part%201/index.html) that may be an excerpt from an old magazine called gdmag (maybe it was in physical print, maybe not) (GD stands for game-development but I don't know if the intention was to hear "goddamn" mag or not.) (Edited: https://en.wikipedia.org/wiki/Game_Developer_(magazine))

EDITED: Specifically the build_mipmaps_wide routine with the Kaiser filter.

I worry about the "rings" problem it describes, but this looks like still the state of the art approach. Luckily I've done the bulk of the work already when adding the do_srgb extension a little while back.

Making these mipmaps is pretty compute intensive, so I don't think it's going to be advised to do this at runtime for a normal game, however KF2's textures are pretty small, so I see it as a way to do a test to see if it helps (I hope it helps) with the foggy mipmaps problem, which I'm not necessarily sure that it will. Most mipmaps probably look okay, so if successful, in the future I think what will be called for is a combination of singling out problem textures and computing the mipmaps offline (technically TXR files can store mipmaps, but do_mipmaps ignores them if present and I think even though SOM doesn't directly support full alpha channels that using TXR to store mipmaps wouldn't work well because the alpha channel needs to be full alpha in the mipmaps.)

I think I want to switch to using any image format for textures, and building a cache for mipmaps and alpha masks. The only thing standing in the way of that is time and the hundred or so other projects to prioritize.

EDITED: I should note that this effort to achieve high fidelity isn't for its own sake, it's to try to approximate what the PlayStation looks like completely unfiltered. Ironically it takes extreme high fidelity to replicate extreme low fidelity with high fidelity.

185
If you do hang around you can help a lot by being the first to assist others and if you can write some guides from the beginner's perspective. (I really have difficulty seeing things from a regular user's perspective because my view of SOM is so close up. You'd expect me to know everything about it but the truth is I only see it very piecemeal and every week or even every day is a new project for me, it's always out with the old in with the new and I never retain information, plus I have memory issues I think caused by aphantasia.)

It really brings me grief that people aren't using SOM and talking about it.

PS: Again, this one was entirely on me, I'm not sure what happened. I'm pretty clumsy, fair warning. I'm not careless, I have blind spots you can drive a mack truck through.

186
EDITED: Hey, please check your %TEMP%/Swordofmoonlight.net folder for DMP crash files. Next time I recommend starting by just explaining what happens and attach the DMP file, unless there isn't one. Although this time I think we're in the clear.

I can generally get an idea from that if any part of the stack trace is inside of the EXE. That tells me where the program is and I can either identify something in the EXE or think about what might be broken in the DLL relative to that part of the program. (I'm still getting used to it, I only added it before publishing my itch.io demo sense I thought it might come in handy. Plus at the time I crashed a couple times without the debugger and the crashes were pretty mysterious so I couldn't reproduce them.)

I really wish SOM had a vibrant community of artists and tech savvy people, I keep hoping if I can make it good enough it will pique more and more people's interest :confused:

187
Beginner and other Nonsense / Re: Unspecified bug, deliberation
« on: January 26, 2021, 12:08:43 AM »
Well, I will get to the problem, but in case you don't know it, you had left the do_log option on, and with the extensive settings in the [Output] section. Just in case you're leaving these on as you work normally, you definitely shouldn't do that, and it's a wonder if you can even get better than 1 fps with those on.

As for the problem, it seems somehow when I thought I uploaded that repaired patch, I either ****ed up, or it didn't make it, or maybe it got corrupted. Not only don't I have time to do proper release/patches, now I guess I have to double check everything I upload in the future :evil: j/k I wish I could manage it and get any work done. I owe you one though, please grin and bear it.

Since it seems like this is a clerical error (we're learning things) I will delete this thread after a little while, if I don't forget to. Ostensibly this entire board is subject to pruning, which is why it's separate. Some will take offense at "Beginner and other Nonsense" but don't take it personally, it's meant in a good way, we'll need both if SOM has a future. Sorry :redface: anyway. The only reason that bug happened is it was something I was working on that I didn't think would be an issue.

P.S. You can associate the SOM file extension with SOM_EX.exe to open your project with the SOM file, and you can make shortcuts directly to each tool, there's actually many things you can do by making shortcuts to SOM_EX.exe. (It can technically open PRT and PRF files too, but it's a little fuzzy which Ex.ini file to use in that case. I think it will generally use the TOOL/SOM_EX.INI file, which I'm a little unsure about future-wise. You can assign it a SOM file or just set the shortcut's directory to your project. There's more advanced stuff, but I don't know if there's a full write-up of everything anywhere.)

I thought I had another tip, but anyway you can also now open save files that way since they're SOM files.

188
Beginner and other Nonsense / Re: Unspecified bug, deliberation
« on: January 25, 2021, 09:19:57 PM »
I might be able to look at this later before bed, but before I forget, you can use a MP3 file now for your BGM (maybe other formats) that should be smaller than 100MB. But it's decompressed into a temporary file at runtime and if the game crashes Windows isn't smart enough to clean up after itself. That file may be 100MB. (Technically the temporary file may be a memory file, but I always find them in my TEMP folder from when I manually terminate in the debugger.)

EDITED: That gives me an idea to add some code where the crash generates a dump (DMP) file, maybe it can also delete temporary files too.

189
Beginner and other Nonsense / Re: Unspecified bug, deliberation
« on: January 25, 2021, 11:36:03 AM »
Today I still don't have access to your Google Drive, but 100mb sounds very odd to me. A new project on my system is 1.2MB unzipped. Find out what files are big and remove them, since they can't be essential.

EDITED: I made this into its on topic since it's 8 posts long and seems likely to grow, and we're not getting anywhere. I hope you didn't have trouble finding it.

P.S. I'm going into town today, including a dentist appointment, so I won't be back until 24hrs. It's pretty rare I get out of the house :crying:

190
Beginner and other Nonsense / Re: Unspecified bug, deliberation
« on: January 24, 2021, 09:32:31 PM »
Okay, I tried to access your Google drive with an old Gmail account, it's pending your approval. How big would your project be zipped? Usually a ZIP is very small if you're using public files.

It doesn't sound like you've neglected to set your start position in SOM_MAP. I'm assuming you downloaded the patch again last night after I replied about the problem I spotted? So I will just wait for your Google drive approval.

P.S. Please don't be dismayed. Kinks will get ironed out. Please when you copy over a "patch" backup your existing SomEx.dll file in case it doesn't work. I can't tell in this case if your project is the problem or the patch. (I will know after I get your files.)

EDITED: About your logs.zip attachment yesterday (http://www.swordofmoonlight.net/bbs2/index.php?action=dlattach;topic=316.0;attach=1418) for me when I open it there's nothing inside. I was wondering myself if your getting the Shader Model 3 mode or Shader Model 2. It's probably 3, and I don't think it's related to this problem, but I was just curious and the logs would've told me which. (2 is substandard, some effects can't be implemented.)

191
Beginner and other Nonsense / Re: Unspecified bug, deliberation
« on: January 24, 2021, 11:44:13 AM »
Please don't do a "clean install" for Christ's sake. If you have a problem that's not a way to solve it (and it won't) but we need to figure out what your problem is, to improve SOM, so please make a new thread/topic if we can't fix it in one or two posts here :eek:

EDITED: If you're using SOM at this time you're going to have to think of yourself as a beta tester and follow through with anything you can turn up. You're not allowed to be a passive, griping user. You should make a topic/thread and upload a copy of your project. It will behave the same on my machine, then I can quickly address any problem you have. (Also in case you didn't my reply to your PM please make use of this http://www.swordofmoonlight.net/bbs2/index.php?topic=179.0 topic/thread if you prefer.)

192
Beginner and other Nonsense / Re: Unspecified bug, deliberation
« on: January 23, 2021, 11:02:06 PM »
Sorry, please try again, I just got a problem too, because empty monster placeholders on maps return a positive result in the loader even though their data is blank, so some new code crashes when it tries to access the model instance and nothing is there :frown:

I was about to edit in a notice, you got here before I could but at least I noticed before heading to bed :redface:

193
Three monsters down so far. Tomorrow I think I'm going to try to find a new mipmap generation filter. The cave texture still turns into a kind of white fog in the distance, which runs counter to the black fog. It doesn't look sufficiently like the emulator.

The filters in general turn everything to mush. I think in the early 2000s when everyone said games looked like brown mush, that mostly to blame for this is mipmaps and filtering. I don't know that SOM is capable of going beyond that phase in general. I think the only thing that changed that perception was games switching over to very high fidelity techniques and maybe some post-processing.

Once I get the monsters in an acceptable state for early demos (I'm going to be polishing this forever I'm afraid) the next task is a huge overhaul of clipping code for NPCs. They're mostly in the same state as vanilla SOM left them. It will be a pretty big project. I'm going to try to give them all the same benefits the PC model currently enjoys and try to put that code under the same roof to the degree I can. So it's a big reorganization project. (The NPCs--monsters included--have lots of issues, it really feels like SOM was left in an unfinished state.)

I'm also going to fix the problem where you can fall between the slats in the bridge (the bridge isn't the problem) I've put that off too long. And the "checkpoint" system needs work, especially for layers, and I want to try to keep monsters from trying to attack the PC from different layers (you can hear them trying to bite you from above or below the ceiling or floor.) And everything else can be interacted with from the wrong level, irrespective of vertical distance. I have my work cut out for me. At some point I hope I can squeeze in time to work on the art side of it again.

I'm going to upload a new demo with mobile monsters, and I want to include better mipmaps in it, assuming they can be improved... I'm hopeful they can.

For some reasons the monster sound effects seem too quiet. I'm not sure what to do about it. I've turned the volume up to max and reduced the volume of everything to compensate. The only other option is to edit their waveforms in their files. That would make them impure, so I'm trying to avoid it. I wonder if the PlayStation amplifies them. Or it seems likely too that 3D attenuation is to blame. I may have to set something up for the giant kraken to make sure its cries carry far enough to be heard beyond its grasp.

So far only the slimes seem to have an idling sound effect. I can hear the occasional cries from other animals and I wonder if those are ambient or are actually monsters. I really thought attaching the idling sound to the slimes would make them play incessantly in SOM but for whatever reason they're not overwhelming. They're probably less frequent than in the original, so far.

I've set up a trick system for slimes so they can move without rotating. To do it I let them move normally but don't assign their rotation to their model data structure. Right now I'm using the #3 slot in the new turn table system for this, but I feel like it's probably not a long term way to mark the behavior, but I don't know yet. #3 shares the #1 slot since it's fused together for diagonal movement, so it doesn't need its own. I just feel like it's too obscure to be used for this purpose.

194
Devs / Re: EXIT: 25th Anniversary Project
« on: January 23, 2021, 08:54:57 PM »
Patch

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

Fair warning I just uploaded a patch in response to FlameScion getting stuck on how project preview behaves when SOM_SYS doesn't nominate a starting map. I guess it makes sense to try to find a map in that case since you have to choose the New Game option to get to this point.

Also I found fairly recent problems with do_start and the default behavior without a [Window] section (or an Ex.ini file?) while looking at basic starting projects.

Finally, following up on Reply #10 (previous post) there was a glitch with crouch activation introduced because the new path I described wasn't set up to include unanimated container objects.

I'm crossing my fingers I'm not introducing new problems by patching in live code I'm in the middle of working on.

EDITED: SOMETHING ELSE I wanted to post about recently: I noticed in SOM_PRM the setting that determines how likely a monster is to become aggressive unprovoked (or "recognize" you) is not implemented  in a meaningful way because it's evaluated every single frame. So I've changed the behavior to be evaluated when animations cycle or change instead.

Why it didn't make sense? Consider a setting like 50%, if you do that every frame about say 33 ms that's 100%, or two frames at 60 fps. And if you use 1% instead, well, in one second that's 60%. So, this isn't really helpful or intelligible. Anyway, this change is included in this patch as well.

195
Today I added headeaters sounds that vary pitch based on their size (which KF2 does) and recently have added lateral movement. I actually can't tell if KF2 really has lateral movement or if monsters are just rubbing against invisible barriers. It's really hard to reason about how KF2 behaves. It seems random.

I think I want to add the rest of the sounds ASAP.

Pages: 1 ... 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 ... 58