Flash Flash Revolution

Flash Flash Revolution (http://www.flashflashrevolution.com/vbz/index.php)
-   Stepmania (http://www.flashflashrevolution.com/vbz/forumdisplay.php?f=19)
-   -   The Etterna Project (http://www.flashflashrevolution.com/vbz/showthread.php?t=145215)

MinaciousGrace 08-19-2016 05:46 PM

The Etterna Project
 
updates cuz this is what you get if you google etterna (rip emma)

client: https://github.com/etternagame/etterna/releases
official site: https://etternaonline.com/




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
The Etterna project is the newly adopted name for what was formerly known as the "custom build", largely developed by xwidget and myself and with considerable contributions from ixsetf.
The first beta release of the installer is now publicly available at https://github.com/xwidghet/stepmania/releases.

This is an installer release, do not install into the same directory as a pre-existing installation. Currently only the windows platform is installer is available, mac and linux users won't be able to compile until some extra work is done with libs. If you haven't been keeping up with the changes, I urge you to thoroughly read through the release notes. The cliff notes are: difficulty calculator, til death's major features moved internally, default theme changed to til death, advancement towards "configureless" installation, additional general optimization; read the release notes, really! They're pretty comprehensive (though we may have missed a small thing or two).

Now that the project is an officially identifiable entity beyond the nebunomer "custom build" and the considerable work of expanding to a full installer is completed- we are now looking for contributors! If you want to help bring stepmania into the modern age and you feel like you have a the right set of skills to do so, shoot me a pm, post in this thread or contact us via the repository (the latter being the least preferable).

I am specifically looking for:
- Someone versed in theming to aid in development of til death so I can focus on things like calculator development.
- Someone to do some basic graphics such as a new loading splash.
- General/minimalistic orbular/bar noteskins to package with the game in addition to DBZ.
- Files for freely distributable songs to add to the default songs pack. http://www.flashflashrevolution.com/...50#post4494850 for more information.

If you have a general programming/development background and you just want to help out and be a part of the development beyond aimlessly submitting pull requests you should also contact us. We'll be setting up a discord group for contributors and development and a development manifesto as well as planned features and updates will be listed out by priority. I can also direct you to places where my 3 or so months of c++ inexperience inevitably result in probably easily optimizable code.

If you don't have a programming background and you still want to help out, spread the word! About the build! About bugs! Give feedback, and get other people to give feedback too. We do the best we can with internal testing but we don't catch everything. Also we don't try that hard, I mean, most of our time is spent doing development, so your feedback is important. I know it's weird for that to be the case, but it is.

Expect that update and release cycles will be significantly shorter from here on out. Future updates will be install-able into the old ones without any issues, so to use an almost painfully appropriate idiom, you won't miss a beat. As with before all themes that worked on 5.0.12 vanilla are compatible with Etterna. They will require some modification if they wish to take advantage of any of the new features, but nothing will outright break.

Happy smashing.

























** saving original post for posterity's sake **
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
Op
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

Haha I'm not getting married but it's funny you thought that for a second.

So what then is Wife and what does it have to do with stepmania? Is it a new feature that allows you to experience japanese maid slave porn fantasies in real time as you play stepmania??? Well no, it isn't, but I assure you the entire sm5 dev team is currently working on that as we speak. Moving on to things that matter...

Wife is a rewrite of the existing stepmania 5 scoring system as well as the score save/load system designed specifically for kb4k play. The first aspect is a new scoring system. Any veteran kb player has realized for years that the DP scoring system has fairly significant flaws and that both MIGS and whatever else that other one is that nobody uses are both less desirable alternatives for standard play.



There are a few major problems with the DP system and a number of smaller ones but I'll just highlight the major drawbacks here. At some point I might go much more in depth on the subject but for now we'll keep it quick. DP point assignment is based on the successive timings windows on j4, 22.5, 45, 90, 135, 180ms. Any judgments made within that interval have the same point assignment when the end score is calculated. This means that a 46ms great is worth the same number of points as a 90 ms great, or 1 point.

This doesn't make any sense from a logical standpoint, and the problems are only exacerbated as you continue further through the windows. A 91 ms judgment is assigned 0 points, as is a 135 ms, but hit 1ms later and you are now penalized 4 points (-4). Hit a note at 180ms and you are penalized the same amount, but hit it at 181ms (aka a miss) now penalizes you 8 points instead of 4. Essentially the intervals are too large and the change in points too drastic, creating breakpoints at which players can either be significantly more punished or rewarded based on hitting 2ms earlier/later.

The practical reality is that players are rewarded by the scoring system for intentionally half-mashing sections they aren't sure they'll be able to reliably fc. In the off chance the player overwhelmingly gets goods and greats, he comes out much further ahead on average than he would if he missed a couple notes trying to hit it properly. Now because the scoring system does not align with our perceptions of what takes more skill in the game most players have developed their own quick internal algorithm for judging scores.

I could explain this but it's much easier to just show you. Take these two scores:




Despite the dp scoring system indicating that both scores are nearly equivalent the reality is the second score requires a much higher level of play to achieve, and most if not all of you realized that within half a second. The purpose of a scoring system is to indicate to the player how well they performed. If the system in place is unreliable to the degree that players consistently re-evaluate scores based on the distribution of judgments separately from the scoring system, then it clearly fails in that respect. While it's not as useless as avg nps is for determining how hard files are, it's the same concept at play.

So the question becomes, can we come up with a scoring system that more accurately evaluates a player's performance? The answer is yes, it's actually hilariously easy and it's rather sad that it took over a decade to arrive at this point. The solution is just to not group judgments into arbitrary windows and to evaluate them on the base ms deviance values in the first place. Ms deviance is the distance in ms the player hit a note relative to where it was supposed to be hit. It's simple enough to just fit those values through an equation that spits out a point value for each ms value.

So, what does that curve look like? Well let's start with what DP looks like. DP is not the most robust or accurate scoring system however it's generally pretty good.


(The lowest line is the miss weight, not technically assigned to a deviance value)

And now let's add a curve, say, 1-x^2 (scaled) for simplicity's sake.


Lucky us!

We've already asserted that one of the major issues with the current system is that goods aren't punished enough to prevent players from trying to mash things to improve their score. The differential between the miss penalty and the boo penalty is too great, but that's a result of the use of windows to calculate points. Now, intentionally or not the dp system very closely resembles this curve, and if we made the very reasonable (arguably, needed, and for more than a decade) adjustment of moving boo weights to -1 we would actually have something that almost exactly fits the curve.

This actually gives us a lot to work with. Now we don't want to curve out beyond the 180 ms window, because misses don't have attached deviance values. So we want to emulate the curve 1-x2, and want to curve out to 180ms, such that we start at 2 points and end roughly around -8, or the current miss penalty. The latest possible boo will result in the same penalty as a miss. This also assumes we're working with j4, which was not the assumption I was operating on when devising the initial curve. I'll skip past the development process thus far and just show you what I've come up with since this is already becoming way too long a read. It's tentatively called MSS, or, millisecond scoring.

The idea is to as closely emulate DP while negating its shortcomings, so many of these values should be 'familiar'.
CurveBegin = 18 ms; Deviance values below this point are assigned max points (2). Think of this as the new "perf window"
CurveEnd = 150 ms; Deviance values above this point are assigned the max penalty, or miss weight. Since I was designing this to accomodate j5 and anything beyond ~150ms is considered to be a miss.
linFac = 9.5; Linear strength of the curve
expFac = 2; Exponential strength of the curve
MaxPoints = 2; Maximum point value per judgment
MaxPenalty = -7.5; The maximum penalty. This can also be derived by subtracting the linear factor from maximum points.

curve function:
MaxPoints - (linFac * ((x - CurveBegin)/(CurveEnd - CurveBegin)^expFac)

And essentially it looks like this:

And here are the actual values at each integer deviance value:
http://pastebin.com/UAQgifcB

p.s. For those of you who are aware of this system through streams this variant has stricter parameters

p.s.s attaining 100% is much more difficult using MSS relative to DP however for the moment I'll default to the DP system for the "grade" until I figure out something better/different

The goal was roughly to set the midpoint of each interval on the curve more or less to the j5 dp point value/window counterparts, with the exception of goods which are punished much more significantly. Goods aside if you average the same number of judgments in the first half of each interval as the second half you'll see a negligible difference in your resulting score from j5 dp. Misses are punished slightly less severely and the boo penalty is slightly higher than the previous value at the earliest edge of the window, and significantly more severe at the latest ends.

Now that we have a curve for scoring ms deviance values we need to make a distinction between timed judgments and non-timed judgments, where timed judgments are any judgments that have an associated ms value and non-timed judgments, clearly, do not. Non timed judgements are comprised of misses/mine hits/holds and whatever other junk is in the game.

One of the less significant issues with DP scoring that I skipped over earlier is the ridiculous weight placed on freezes. Now perhaps this is a function of the kb4k playing meta or the kb4k charting meta, but it makes very little sense for held freezes to allot a full 6 points to players. Consider that despite having nearly 1800 "taps" the 480 holds of blue planet make up about 45% of the total points for the file. Silly.

Now freeze pattern difficulty in SM is largely a function of how difficult is it to retain a freeze hold while still hitting whatever else is going happening on top of it. In most scenarios, in most charts, there's virtually nothing going on and freezes are used for accenting specific sounds in charts rather than how they affect how charts are played.

It makes very little sense in this system to award points for held freezes rather than for penalizing points for missed freezes, as you end up giving players free points for doing nothing, which reduces the difficulty of the chart to "score" on without reducing the physical demand difficulty of the chart. Think about it like this — imagine if you got 6 points for each mine you didn't hit. Yeah, pretty stupid, I know.

What I would prefer to do is award 0 points for held freezes, and penalize 5 or so points for missing a freeze. They would operate much more like mines and this would correct the nonsensical nature of their involvement in the scoring system, however in the spirit of not changing things too much, these are the current weights for "non timed judgments" I've set:

Held = 2
NG = 0
Mine = -7.5 (same as miss, like DP)

I'm interested in what people think about the proposal of shifting NG to penalties and OKs to 0, personally I think it makes infinitely more sense however if there's enough resistance to change or a very valid rational for not changing it at all I'm not too opposed to these parameters as is.

Anyway, if you've read this far and you're asking "but what about players who want to stay on j4?"
Well we'll get to that shortly, but it's necessary to understand what the other component of the Wife system is first and why it exists. Creating a new scoring system and establishing rough parameters isn't a difficult task, indeed it only took about 5 hours and that was probably 4 longer than it realistically should have. Jerry rigging a secondary scoring system to the existing game to be calculated at the evaluation screen for screenshots is even simpler and that took about an hour as well.

However that isn't exactly the most appealing solution. The non-integration into the game means that scoring system will only exist within screenshots. The score trackers inside the game won't be able to recall it, and furthermore the timing data that was used to calculate the MSS% will be lost unless it is stored somewhere.

Now afaik it's not possible to use lua scripting to insert the timing data into the game's existing stats.xml structure. Granted I didn't try very hard to figure out if there was, because the immediately obvious solution is to save the timing data somewhere else so that it may be retrieved and used to recalculate MSS%'s for scores, if applicable, upon retrieving the said score from the game's highscore list.

Doing this is rather clunky and it achieves only titular status as a scoring system within the game. Not an ideal solution, and I chose not to continue pursuing it after a few hours of work trying. However it realized an opportunity for me. SM5's current save/load system is the closest thing to a functioning abject failure next to US congress, at least for kb4k play. Perhaps it functions adequately in other scenarios.

At any rate, the distinction between timed and non timed judgments as well as the desire to only need to call a single set of information at a given time was enough to warrant a ground up rewrite/reorganization of the existing system specifically with 4k in mind, aka, Wife. Wife operates in tandem with the existing highscore system and will not interfere with it in any way. The most important distinction between it and sm5's is the introduction of the concept of a "chart". Sm5 employs the organizational concepts of song (reality.wav or disregard) and steps (gate openerz heavy, or oni, or perhaps even a 6k chart on heavy, but all for the same song).

Steps are inherently attached to their parent songs; songs are ID'd by their path in your songs folder. The result is obtained scores persist in the high score table even if the chart has fundamentally been altered, whether by adding or removing notes, or changing pattern formations. Conversely, the same songs with the same steps in different directories have their own separate entries in the high score table. Changing a pack name in any way, such as standardizing the midare pack series titles, effectively deletes any score entries you've obtained on the given files. The same applies for files that are contained in wip or pre-release versions of packs, even if the charts are unaltered by time of official release.

Now this isn't particularly relevant if you just play pad once a month for 20 minutes and you don't give a shit about your development, history, or improvement as a player. On the other hand if you do, the consequences of the current organizational structure are at the very least a nuisance and in the long term, can be frustrating or even infuriating. Seeing as the game is something I and many other players leave and come back to over the course of years, a system designed with longevity and reliability in mind is desirable.

A file is nothing more than a set of instructions given to players through the game, with some additional metadata and an audio file playing in the background. A chart in the Wife system is defined as only a unique set of instructions, independent from song", "steps", and any metadata. It is simply the notes you had to play, in the order you had to play them in, and at the points in time you had to play them at. This information is converted into a string and then hashed to produce an ID for a specific chart. Any .sm files with the same chartkey share entries in the Wife structure. For example, imagine copying reality.wav from hsmp1 into nuclear blast 1. Wife will identify that as the same reality.wav in hsmp1 or where-ever else you have it, and all of them will share the same scoretables.

Now imagine that you do the same with disregard, however in the process you delete the disregard mp3, move reality.wav into the disregard folder, and change the music path in the disregard .sm to reality.wav, and then change the folder name to rasbladabingbong. Just because the mp3 is now "reality.wav", and the folder is now "rasbladabingbong", doesn't mean you're not playing disregard. Wife will recognize that and the chart for disregard will again share the same entry as the disregard file in hsmp1.

However replacing disregard.sm with over shiver mountain.sm will produce a different key, in fact, it would produce the key for over shiver mountain, or rather, for the set of instructions from which the relatable chart for over shiver mountain has been constructed. Altering any set of metadata will have no effect on the key generated. Up to a point, altering bpms will also have no effect. Vertex gamma and vertex beta will not share the same key, however the a static bpm file saved with ddream that results in bpm flux and then again somewhere else but instead using the singlebpm option or using a different editor will share the same key. The tolerance level is currently around 1ms, if any notes stray further than that different keys will be produced.

The idea here is: if it plays the same, it is the same. The goal was to produce something robust enough to catch any "real" (read:affecting play on a practical level) changes in a chart but flexible enough to ignore anything else. Given a few days of fairly dedicated testing it seems the hashing system is respectably good in both areas (read: usable). My guess is it's is manipulable to some degree, but almost always at a disadvantage to anyone trying. I.e. it's much easier to make two things that should match, not match, than to make two things that shouldn't match, match.

While this chartkey system is largely only convenient given the current circumstances, it opens up a large number of possibilities for additional features. A built-in bpm flux corrector that ensures the bpm string is only collapsed while the chart key remains the same, and when/if I feel like returning to the MSD project calculation output can be tagged with chart keys and loaded into the game automatically.

So back to your query about MSS and j4 that you forgot about. The second major distinction between Wife and the existing system is that it records your ms deviance record for anything you play along with your judgments and any other standard data output. I know, this isn't exactly revolutionary and honestly it should have been done after we all stopped using pentium IIs, 64mb gfx cards, and floppy disks to store data.

Despite MSS being designed for j5 you can still use it while playing on j4, though it will weigh anything in the 151-180 ms range as a miss (so basically the majority of the boo window). This isn't particularly desirable for players unused to playing on j5 and switching to MSS might be too daunting or even just frustrating. However the entire score calculation system has been rewritten to calculate based on standardized input designed to accommodate ms based scoring. This means that any number of scoring systems are supported whether they emulate MSS or DP in methods of calculation ad infinatum. This means it's trivially easy to support a j4 targeted variant of MSS that looks something like this (eyeballed for now):

CurveBegin = 40 ms
CurveEnd = 180 ms
linFac = 9.5
expFac = 2
MaxPoints = 2
MaxPenalty = -7.5

Behold MSLite, aka "waifu". Now perhaps the image of this comic is flashing at the back of your mind https://xkcd.com/927/

It's not a problem, since the original ms deviance record is being stored and the score calculation is standardized, Wife will calculate and store percent values for each type at the evaluation screen. It will then only display the value for whichever scoring type you have currently selected (along with indicating what that type is). Switching from "waifu" to MSS will simply change which value is displayed. So will switching to and from any combination of DP/MIGS/MSS and so on and so forth.

The judge value under which scores were achieved on are saved as well as the parameters. Wife will check for changes in either; changing from j4 to j5 will recalculate dp/migs/whatevertheotheroneis. Changing the parameters for any of the ms based systems will also invoke a recalc using the new parameters.
Note: haven't actually implemented the conversion detection yet but that's not a priority since everything it needs is already being saved

Obviously, this only applies to scores attained after Wife is operating. Pre-existing scores in the games highscore table are converted into Wife's format, the percent values for each scoretype are calculated with the assumption that they are achieved on j4 (they have to be, since no deviance data exists). Ms based scoring systems will be ignored and nothing will be calculated.

Currently only dance-single type charts are compatible with Wife. It should do nothing if solo/whateverelse steps are selected.

Eventually I'd like to make components of the system seamlessly compatible (as much as that's possible) with other themes however I'm designing/testing/building it in conjunction with what is turning out to be a complete rewrite of my theme and the two are necessarily interconnected.

There's more to say I think, and I'm sure there are questions I forgot to pre-empt, but this about covers all the major points. I'll have a public alpha for download and experimentation linked here in a day or two which will be inside a version of my theme stripped of anything that will alter configurations.

I think it's about time we moved stepmania past 2003

ps. if you're wondering why i named it wife, say MSS 3 times quickly

Dynam0 08-19-2016 05:50 PM

Re: hello allow me to introduce to u my Wife
 
I love you

snoverpk 08-19-2016 05:53 PM

Re: hello allow me to introduce to u my Wife
 
mina is almost a finnish word your Wife is very pretty

ItsOnlyDanO 08-19-2016 05:59 PM

Re: hello allow me to introduce to u my Wife
 
rip dp

inDheart 08-19-2016 06:00 PM

Re: hello allow me to introduce to u my Wife
 
it marries so many wonderful ideas together

Dynam0 08-19-2016 06:15 PM

Re: hello allow me to introduce to u my Wife
 
Somewhat reminds me of spin-it-up scoring in that the judgements are much more gradual. I remember when we chatted on this (specifically those two ToY 1.4x scores) and it looks like you ran with the ideas and then some. The most interesting bit for me was the concept of a single chart ID which is so practical it's silly that this wasn't already a thing.

Freezes should award 0 imo

Pazzaz 08-19-2016 06:21 PM

Re: hello allow me to introduce to u my Wife
 
Nice text post, where's the real deal?

Nano Desu 08-19-2016 06:27 PM

Re: hello allow me to introduce to u my Wife
 
The scoring system to end all lurker dp rants stupid 92.ezes due to stupid cb weights

P3Prod1 08-19-2016 06:29 PM

Re: hello allow me to introduce to u my Wife
 
beautiful

choof 08-19-2016 06:30 PM

Re: hello allow me to introduce to u my Wife
 
I read this post while listening to this

TC_Halogen 08-19-2016 06:34 PM

Re: hello allow me to introduce to u my Wife
 
The premise behind deviance in timing windows is absolutely brilliant, because at the surface, we all see timing windows as chunks, but not as their physical distances in comparison to the central point of timing for a given note.

Using J4 to illustrate the point (even though it's not necessarily relevant data wise, it still is concept wise): if I get a perfect because I missed the note central point by 22.51 milliseconds, that perfect should be basically worth the maximum value that a perfect can be worth compared to someone who missed the note by 44.99 milliseconds, which should be the absolute minimum that a perfect should be worth.

I also like the idea of reducing freeze arrow weight to 0 -- it actually helps to add difficulty to charts that utilize them properly with regards to balance while mitigating the unnecessary advantage of getting extra DP due to micro-freezes whose lengths are trivial. You could initially apply a similar concept to life gain as well (not sure if mentioned).

Solid proposal overall; I could respond to this a bit more in detail tomorrow, perhaps.

choof 08-19-2016 06:34 PM

Re: hello allow me to introduce to u my Wife
 
freezes counting as zero is perfectly fine. it -might- fuck with people from the o2jam community who approach charts with noodles in mind, but who cares about o2jam in 2016.
this looks really neat, but I have a small question. why wouldn't this work out of the box for 6k? I know I'm basically the only person that plays 6k for extended periods of time, but I switch between 6k and 4k within the same session (generally I use 6k to warmup). what issues could I run into?

Dynam0 08-19-2016 06:41 PM

Re: hello allow me to introduce to u my Wife
 
Thoughts on removing chord cohesion?? While we're here in 2016 ya know :)

Staiain 08-19-2016 06:42 PM

Re: hello allow me to introduce to u my Wife
 
oh boy, no time for gurrrls cause stepmania is my wife

damn though it's a nice idea actually

choof 08-19-2016 06:44 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Dynam0 (Post 4466692)
Thoughts on removing chord cohesion?? While we're here in 2016 ya know :)

this is probably hard coded into the game
someone would have to hunt down where it is in source code
but I don't think chord cohesion should be removed. does it even play a big enough part in 4k play to warrant removal?

Staiain 08-19-2016 06:47 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Dynam0 (Post 4466692)
Thoughts on removing chord cohesion?? While we're here in 2016 ya know :)

I already asked devs about this, it's way to deep into the code to simply remove it, it'd take a lot of work but i'd love to see that myself

Dynam0 08-19-2016 06:51 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by choof (Post 4466694)
this is probably hard coded into the game
someone would have to hunt down where it is in source code
but I don't think chord cohesion should be removed. does it even play a big enough part in 4k play to warrant removal?

It does to the point where someone who has an obviously dominant hand (me) can play dense sections flawlessly when in reality the weak hand was all over the place

lurker 08-19-2016 06:56 PM

Re: hello allow me to introduce to u my Wife
 
chord cohesion is a great feature for people who can't play other VSRGs including FFR

shenjoku 08-19-2016 06:58 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Dynam0 (Post 4466692)
Thoughts on removing chord cohesion?? While we're here in 2016 ya know :)

What even is this? Never heard of it.

Flossy97 08-19-2016 06:59 PM

Re: hello allow me to introduce to u my Wife
 
Chord cohesion is that jumps, hands, and quads are all counted as the same judgement. Stepmania does the scoring based on how many of each judgements were hit so singles, jumps, hands, and quads all give the same amount of points despite being different amounts of notes.

shenjoku 08-19-2016 07:11 PM

Re: hello allow me to introduce to u my Wife
 
Wow really? That seems really dumb, and really easy to fix. Though I've looked at the SM codebase before and that shit is naaaaaaaaasty...so you never know. Maybe I'll take a gander this weekend. Haven't looked in a few years.

Untimely Friction 08-19-2016 09:05 PM

Re: hello allow me to introduce to u my Wife
 
wtf mina not only contributed to, but CREATED a quality thread, props on the explanation and time put into this dude. This is a truly magical day.

lofty rhino 08-19-2016 09:57 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Untimely Friction (Post 4466791)
wtf mina not only contributed to, but CREATED a quality thread, props on the explanation and time put into this dude. This is a truly magical day.

You do realize that every Mina post is a quality one, right?

MinaciousGrace 08-21-2016 11:31 AM

Re: hello allow me to introduce to u my Wife
 
Oook update time, there were actually a lot fewer questions than I expected, but I guess pretty much everyone around here has been around long enough that this is beyond overdue.

I guess that's a good thing though I don't feel like spending 6 hours on this post. Despite knowing that a bunch of people won't read any of the fairly detailed and important information below I'm going to go ahead and link a download for your convenience.

https://www.mediafire.com/?fi73n7asoap8pl1

I'm also going to be partially at fault because I'm definitely posting this before writing out the second half of whatever needs to be documented because I'm really tired.

vvvvstuff u should prolly readvvvv

Since there was no riotous outrage at nerfing the shit out of freezes and I received general approval through other channels I'm going to go ahead and set freezes to 0 and set the penalty to -6, for the sake of consistency with dp. There'll be plenty of time to titrate parameters over the next month or so. Also apparently there's a differentiation between missed holds and dropped holds, missed holds I assume being holds that are attached to a note that was missed entirely. For the moment both are set to -6.

I also heard about an inquiry regarding how grades will function, specifically the AAA grade. For the time being my inclination is just to assign that particular grade based on the existing judgment windows and qualifications. It's simple and most importantly requires me to do little to nothing. I also dislike the breakpoint nature of grades and feel that a mathematical representation, as long as it is more "accurate" than the existing systems (it is), is just superior. However grades have their use apart from indicating how well players scored on something. They offer quick visual acknowledgement of a range and can be represented with colors or a small set of letters, making them useful for themeing etc. I wouldn't be opposed to at some point coming up with a set of grades (or if other people have suggestions) and already from what I've seen the 99% point seems like a strong candidate.

As mentioned before the work rewriting my theme and writing what could/should be independent script for most of Wife's functionality concurrently has resulted in a pretty thick layer of interdependence.

For this reason the pref.ini altering script has been removed and the theme should be compatible with any 5.010(+?) version of sm5 without affecting any of your guys' good stuff.

Most of what I haven't documented so far are theme specific changes but I'll run them down quickly:

But first a list of things you probably shouldn't be doing, and won't invoke any pity from me if you do do them and blow your computer up:
Try to play jsnipe or lightboxer or cardcampers or whatever other game modes there are
Use any judge below 4
Intentionally load 20 million songs and faceroll at the songsearch
Delete random lines of code in scripts
Intentionally scroll through doubles and solo packs to try and trip up my poor girl. There's logic written to do nothing unless you have selected a 4k single chart however...
Pretty sure dwi files throw errors because no logic is written to do nothing for them and by errors i mean the game whines and nothing happens
Play single player on 2p. Just don't do it. For that matter don't try to do doubles with your 5 year old sister either.

everything is 4k kb play focused just keep that in mind

so stuff

**apparently the song search restricts you to the matches even after exiting search mode, never caught this bug because i kept playing the songs i was searching for. going into gameplay and exiting fixes it

***important*** The chart hashing script isn't finalized yet. Only when it is and I'm certain the hash keys aren't going to change will there be a github official release. This means for the alpha stage of whatever im doing the hash keys can change possibly during and almost definitely after. So think of this like a closed beta for a game where theres a character wipe at the end of it. Only I'll be nice and go out of my way to let your export your characters. If you really really want to save the recorded data for certain scores you get during this time you can pm me here or otherwise get in touch with me and send me a rar/zip of the wife folder and i'll do my best to convert the entries into the final hashing setup for you and send them back. If you want very specific high priority entries saved you should let me know as well. The wife data is saved to your root stepmania 5 directory for the moment and is not unique to profile. It will be eventually.

The theme converts all of your existing scores to the new database/format as you scroll through songs as well as running the hashing script. Without a reasonably high quality any time loss is negligible. I ran a few tests with my old disk drive and while it's visibly slower to scroll through packs it's not, at least, to me, a big deal. The conversion of existing scores is only done once and all generated chart keys are stored in memory until the end of the session (or possibly if you return to the menu screen). Basically, the dip in scroll speed is not persistent.

Mss is the default scoring system in the theme. It can be changed in the theme options like a standard option. The default fallback score type is currently just set to DP, you can find either (somewhere in the scripts for the latter) and change them if you wish. The j4 version of mss isn't added yet, however you can adjust the parameters for MSS in scripts/Wife if you -really want to-, feel free to play around with them.

Since scores are rate separated in the scoring hierarchy, at music select the theme will pull your best non fail score for your currently selected rate for your currently selected scoring type. Rate can be changed by using shift effectup/down still and eventually they'll have unique bindings. If it doesn't find a score for the given rate you're on it'll begun recursively checking through all rates with scores logged and prioritize highest rate non-fails on your default scoring type and then your fallback scoring type. If it still doesn't find anything it'll display your best fail on whatever rate for your fallback scoretype. The logic still needs a little work but it mostly does what it should. The displayed score will indicate what scoring type it was achieved under, as well as which rate, and through (), indicate whether or not that is your currently selected rate. Everything being displayed from song meta to score information is being pulled from the Wife table.

That's only for the primary score display however. Ca25nada's pre-existing scoreboard is untouched apart from defaulting to the fallback scoretype and it can be selected and viewed and used as normal. The same concept applies to the evaluation screen. For the moment the primary (the bigger number guys) % display is whatever your default scoring type is (MSS unless you change it) and the smaller number above is the fallback type (actually not sure if i disabled that and just left the scoreboard or it broke or what). The scoreboard to the right again remains unaltered.

Rudimentary song search is in the game and accessible through pressing insert.... its pretty idiotproof there shouldn't need to be any more said on that subject. Well except that the things don't go well if you open the avatar switch thing while song search is active. You'll probably have to restart your game. Also it only supports alphanumeric, no swagdollas.

eval screen I havent really done much with yet, pretty sure im missing some things but I think i hit the important stuff
im not particularly looking for feedback however its always appreciated, i'll clean up the non-drivel in this and move it to the main post later

e: forgot to mention but i left the diagnostic output of the chart key script that dumps the key into the song folder as a txt on, so you can go and find things in the wife folder using that

Arcorann 08-24-2016 10:07 PM

Re: hello allow me to introduce to u my Wife
 
So I've been wondering what a millisecond-based scoring system would look like since I discovered that SM5 had the inbuilt ability to record and save these times (SaveReplay), but no-one knew of it or used it. This seems like a good attempt (though I personally prefer the less harsh penalties of percent score). I was briefly puzzled by my calculations not matching your Pastebin file until I realised that the text file had CurveBegin = 15ms.

At any rate, I went through testing a song, only to find that there were no results on the results screen (I'm using 5.0.12) and the scoreboard afterward only had DP, so I can't judge how good this system is in practice.

MinaciousGrace 08-25-2016 11:29 PM

Re: hello allow me to introduce to u my Wife
 
oops almost not making my own self assigned deadline (haha i did by 5 minutes but you'll never know based on the post time)

public alpha 0.33
https://www.mediafire.com/?1fv8zouwu5atvij

too many changes to do a detailed list in a reasonable amount of time, i'll just list out the major ones

- numerous bug fixes most notably the eval screen bombing bug which the above poster experienced, player config system is now unborked for the first time since feb as well
- point tables will now scale to your current judge value, the dp calculated under my system will still vary from dp calculated by the existing scoreboard system by up to as much as 0.1% due to rounding, HOWEVER
- the ms data is now being saved out to 4 digits (after conversion to MS, so, 180.1424 ms, etc) rather than rounded to nearest integer, such that there are multiple redundant ways with which to resolve the above discrepancies, if people care, which they shouldnt. Also it's just nice to preserve the original datasets with only inconsequential losses of resolution.
- went through and resolved various miscellaneous theme errors
- waifu ms curve variant added
- continued to undo damage i did in the original version of transcendence
- continued to gut bloat and other features in various areas
- nearly everything related to animating judgment text, combo label and combo number has been completely trashed. So if you want to make your judgment text give the middle finger to the combo label as it moons the combo number while getting a reacharound from a 3d noteskin, use a different theme.

** Things are not set up to be easily customizable yet.. u were warned....**
- rewrote nearly all of the gameplay screen scripts ranging from fully to mostly to better optimize them for performance. Old scripts are still there they just aren't loaded by screengameplay overlay/default.lua (same thing for underlay), a couple of them are still in use as I haven't finished writing my own implementations yet. You cant really mix and match yet since a few of my scripts are interdependent at the moment and need reorganization (*** TURNING OFF THE ERROR BAR WILL BREAK THE OFFSET SAVING SYSTEM AND THE JUDGECOUNT. YES I KNOW THIS IS DUMB.***). Newbpmdisplay is dependent on newprogressbar. The scoretracking system used to calculate +- offsets from AA are still the old system and the old scoretracking script is still enabled, which taxes performance significantly. Left them enabled becasue I assume most people want it and the performance issue versus how long it'll take me to finish my own implementation is not significant, however if it is a concern you can disable it a the cost of losing the indicator.
- fixed the bug with the chart key script that breaks when reading .ssc files. It'll now default to .sm files, this is because the logic in the pattern matching used in the file parser for .sm files breaks when reading .ssc files. You know, the file format that remains nearly completely unchanged from .sm files only somehow manages to fuck up this because they felt like moving shit around willy nilly. Real good.

Bottom line is pretty much everything that was updating and doing calculations every frame now only does so when it actually needs to update. The previous system allowed for higher levels of independence for features however negatively impacted performance significantly. Avg fps for me using d3d and xwidgets custom build increased by about 100 with nearly the exact same features enabled displaying the same information. Not sure what it will be like on opengl.

InTheoryNo 08-25-2016 11:35 PM

Re: hello allow me to introduce to u my Wife
 
Minaaaaa, my *****, I'm finally above 200FPS so thanks for that. But I've noticed that if you turn off Error Bar it is still there.

EDIT: I also do not see my accuracy/percentage or w/e anywhere on screen during gameplay. My res is 1440x1080 (4:3).

EDIT2: All the information including amount of notes/best score under "General" is missing. I assume this is intentional, but I'm just making sure.

MinaciousGrace 08-26-2016 12:00 AM

Re: hello allow me to introduce to u my Wife
 
yeah the error bar script isnt meant to be turned off at the moment since there are dependencies on it, refer below (or above i guess i still use the backwards ffr forum viewing bs)
however you can turn off the bars themselves by going to bganimations/screengameplay overlay/errorbar.lua and doing this




this won't actually disable the actors if you're looking to further improve performance but you can do that relatively easily if you're somewhat savvy with lua, otherwise i'd just wait until the next update since it'll be even more performance oriented and customizable anyway

also oops the judgecounter is slightly misplaced






i think i'll have an update where all of that's resolved within a few days that will be compatible with the existing 5.0.10 builds before making xwidget fork exclusive releases

as for the score tracking you have to enable that in the player options, avg will show you your percent score on what you've played and ghost will show you offset from a target

not sure about notes/best score stuff missing under general that shouldnt happen

keep in mind that I'm very much in the "oh shit i better just rewrite everything myself" phase rn


@Arcorann yeah the eval bug screen was a silly oversight on my part, it's been fixed. As for your other concern, the vast majority of the time (90%+ for files without <-significant-> influence from hold dp) your score will look nearly identical to what it would be on MAX DP. The rest of the time it isn't necessarily that it's more strict than percent scoring. In certain situations it's less strict (lots of flubby misses, or, if you just happen to get a TON of greats on the very inner edge of the great window), and in others it's more strict (you mash something to combo it and get a bunch of boos). Even so the variance tends to be rather small for files outside of the consideration of hold influence (1% for anything but extreme outliers). Although this is for the j5 variant, I have -not- tested the j4 variant in any capacity.

That being said what exists now was the result of the minimum amount of effort required to come up with something that isn't based on arbitrary groupings at arbitrary intervals. My 2nd tier priorities at the moment are to implement and test alternative methods that have been suggested by others as well as revisit more complex methods that I considered before deciding the superstructure to allow all of this to work is completed first. The end goal is to create a system that players can look at the results of and say "yeah, that pretty much sums up how well I played" to the extent possible with the information provided. That doesn't necessarily stop with a curve function designed and tested in the span of under 6 hours, and indeed we may never get there collectively as a community. However we aren't ever going to cross that finish line if we just sit down and stop moving (aka the last decade).

Since the timing data/replay data is being saved to absurd levels of accuracy when I've played enough stuff I can go ahead and make use of my actual programming skills and do some larger scale analysis of many different methods applied to the same set of offsets given varying situations. The important thing is to dissociate how you are scored by the current system with how you should be scored. If you want everything to match what DP would give you the best option is to just stick with DP. The current systems remain in place, unchanged, and are accessible for people who may want to use the other features of Wife without committing to a new scoring system.

well rather than editing my previous post I might as well finish what i was going to say in there, here

my current priority list goes more or less like this (not fully complete, when I really reach a good stopping place to sit down and consider everything I'll update this and write it out in more detail)

tier 1 (stuff im actually gonna do)
- Fix song search so it isn't somehow causing tidal waves in alabama or whatever its doing right now. Not because i particularly care about having this feature. Not because it's important to any other development, and indeed it's quite possibly the most independent feature of anything I'm considering. But because I want to show that someone with 0 game design or development experience prior to about a sum 2 weeks of doing applied scripting in lua while learning it can write a fast, efficient, fully integrated while also independent search functionality into a game that hasn't had it in the official build for almost 15 fucking years now. It's honestly just a disgrace at this point.
- finish writing new implementations of the existing gameplay screen features. The unfinished ones are currently the nps display/graph and the percent/target tracker. Reorganize them in a way that isn't clearly cobbled together after 25 hours of continuous programming. Further optimize those that are mostly completed, and make sure they're customizable and independent from one another to a degree that's reasonable for the amount of time that i want to spend on that.
- Finish the final integral component of the wife system which is to recalculate existing scores in the database depending on whether or not the parameters for ms based system or judge for standard systems have been changed. So essentially, if you change from j4 to justice, you can see what your scores would have been had you played on justice instead. Obviously this doesn't consider that you'd have probably failed almost anything playing on justice before you finished it, but that's not important. And again, obviously, conversion can't be done for any scores that don't have replaydata saved.

tier 2 (stuff ill probably do before i run out of steam in this project)
- implement and devise alternative systems to the current curve. My major issue with the current curve is it's slightly too harsh at the tail end and not quite harsh enough towards the beginning. Resolving these issues using the current system would require different intervals to have different curves applied to them but then we're kind-of-not-really heading back where we came from. Better alternative is to use something based on normal distributions.
- various small qol implementations regarding commonish situations. Mostly stuff like oneshotmirror mode that will make any mirror selection set in player options automatically turn off after selecting a different song (so you can quit out and move to another song, mirror will turn off, or complete the song, mirror will turn off, but not if you want multiple attempts using mirror and don't select something else). Also an alwaysusemirror option that's specific to the chart key so that the chart in question is always automatically played with mirror enabled without altering the actual notedata or .sm files. This is mostly for me honestly and I could give shitall whether anyone else finds them useful.

tier 3 (da pipe dreamz)
- various miscellaneous features including built-in lightweight difficulty calculator, kind of like osu's star rating, only if they knew what they were doing
- very rough pattern/file type detection that can classify files with one or more tags of stream/jumpstream/jack/handstream etc.
- sorting system that allows you to sort cross sort between file type and estimated difficulty. Basically what everyone has always wanted forever but nobody has the balls or brains to do, and sadly I don't think I'll be able to do anything beyond a cursory implementation of this before getting disgusted or bored.
- Built in bpm collapser for dem ddream files that uses the chart key hashing system to make sure it doesn't make any edits that fundamentally change the file. You guys are all really stupid for not asking me to run my flux fixer on your stuff the performance difference is incredible. But I guess I could possibly reward that stupidity by eventually doing it for you.

InTheoryNo 08-26-2016 12:07 AM

Re: hello allow me to introduce to u my Wife
 
Ah, my bad on being too lazy to read the whole post. Sorry about that~

MinaciousGrace 08-28-2016 08:04 AM

Re: hello allow me to introduce to u my Wife
 
https://www.mediafire.com/?ofa19t6zn81e08t



song search is back and i think mostly debugged. It can be activated by pressing left down right at the same time, hold them down together for half a second for best responsiveness

most of the bugs/quirks have been ironed out in more or less barbaric ways


all major gameplay screen features and elements have been rewritten for max performance now except for npscalc/graph and the bugs should be pretty much all ironed out

they're also all independent now and options are available to turn on/off individual elements, more detailed options will follow later

pretty much expect average fps to double during gameplay compared to the old theme, seriously the game runs like a dream i can't believe i didn't get around to doing this sooner

the last remaining tier 1 priority feature should be a 5 minute 3 liner but im tired and want to make sure it works as intended before putting it in

tier 2 priorities will basically be promoted to tier 1 after that's finished

k im too tired to write in any more detail

edit: this version is still compatible with the official 5.0.10 builds the next release *probably* wont be and will require xwidgets custom build which you should be using anyway because lol 60fps otherwise

MarcusHawkins 08-28-2016 12:13 PM

Re: hello allow me to introduce to u my Wife
 
Sweet! When will xwidget's custom build be made available as a public download?

Walrusizer 08-28-2016 12:16 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by MarcusHawkins (Post 4469495)
Sweet! When will xwidget's custom build be made available as a public download?

2 days ago
http://www.flashflashrevolution.com/...d.php?t=145337

Cataclysm- 08-28-2016 12:29 PM

Re: hello allow me to introduce to u my Wife
 
This alongside widgets build runs so well it is crazy.

also I LOVE that mini progress bar

MinaciousGrace 08-29-2016 08:46 PM

Re: hello allow me to introduce to u my Wife
 
hello my nignogs

in a little under 20 hours i taught myself enough c++ to wiggle my way around the tangled shitweb of dried weeb splooge linking tattered remnants of furiously spanked body pillows and vainglorious self praise in making tiny insignificant portions of base code slightly more efficient while failing to do the five or so things that would triple framerates

however thankfully also in that 20 hours i managed to root out what those things were and actually fix them: behold



running at 1920x1080 with gratuitous amounts of screen elements enabled on a file intentionally picked for ddream changes that I never fixed, pretty much could add 20 nps graphs at that point and it wouldnt functionally matter





seriously it actually took me one day of 0 experience with c++ to do this what the devs have been doing for 7 fucking years now i dont even know

once i confirm with widget that im not blowing anything up with the changes they'll get pushed to his build's repo

ps. speaking of nps graphs that sounds like fun to write tomorrow

Cataclysm- 08-29-2016 08:53 PM

Re: hello allow me to introduce to u my Wife
 
lmao dude this is ridiculous the devs must not give a shit

Dynam0 08-29-2016 08:58 PM

Re: hello allow me to introduce to u my Wife
 
mina = jesus

blanky! 08-29-2016 08:59 PM

Re: hello allow me to introduce to u my Wife
 
If there are any classes on work ethic and perseverance taught by you, count me in...

MarioNintendo 08-29-2016 09:32 PM

Re: hello allow me to introduce to u my Wife
 
mina, I'd really like to hang out with you, pay you a beer, stuff like that

lofty rhino 08-29-2016 09:35 PM

Re: hello allow me to introduce to u my Wife
 
She's pretty hot

Still can't believe you tied the knot

lofty rhino 08-29-2016 09:36 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by MarioNintendo (Post 4470340)
mina, I'd really like to hang out with you, pay you a beer, stuff like that

Dr. Pepper is the way to his heart

Gruzzly_Bear 08-31-2016 01:32 AM

Re: hello allow me to introduce to u my Wife
 
this scoring system is better than an actual wife

Kyzentun 09-1-2016 07:24 PM

Re: hello allow me to introduce to u my Wife
 
If you want to call my code shit, then prove you mean it. Go through and remove all code I wrote from your stepmania fork.

Dinglesberry 09-1-2016 07:27 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Kyzentun (Post 4471253)
If you want to call my code shit, then prove you mean it. Go through and remove all code I wrote from your stepmania fork.

https://github.com/kyzentun/consensu...15975a81d52ed4

no worries bro ur codes nice calm pls

MinaciousGrace 09-1-2016 09:32 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Kyzentun (Post 4471253)
If you want to call my code shit, then prove you mean it. Go through and remove all code I wrote from your stepmania fork.

isn't that what i'm doing?

Sidek 09-2-2016 12:07 AM

Re: hello allow me to introduce to u my Wife
 
that's what i call a real stepmania build and not like the bullshits got released in the past the stepmania 5 developers.
Good Job Mina :)

blazziken 09-2-2016 12:09 AM

Re: hello allow me to introduce to u my Wife
 
OMG Mina that was pretty Useful Thnks!!!!

Dynam0 09-2-2016 06:27 AM

Re: hello allow me to introduce to u my Wife
 
shiny front ends appeal to the casual masses, but we here at ffr are all about dat ass

Jousway 09-2-2016 06:50 AM

Re: hello allow me to introduce to u my Wife
 
I actually wonder what mina changed to make sm5 go "faster"

Gruzzly_Bear 09-2-2016 07:22 AM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Sidek (Post 4471380)
that's what i call a real stepmania build and not like the bullshits got released in the past the stepmania 5 developers.
Good Job Mina :)

sm5 isn't bad, I just don't understand how xwidghet/mina have made so many improvements to the code in a relatively short amount of time?

MarioNintendo 09-2-2016 09:12 AM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Jousway (Post 4471398)
I actually wonder what mina changed to make sm5 go "faster"

He removed all code Kyzentun wrote from his stepmania fork

Jousway 09-2-2016 10:34 AM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by MarioNintendo (Post 4471404)
He removed all code Kyzentun wrote from his stepmania fork

aside from a ton of code that kyzentun wrote is still there so??????

Skwid1 09-2-2016 01:52 PM

Re: hello allow me to introduce to u my Wife
 
<-- this is a twitch emote

Cataclysm- 09-2-2016 03:57 PM

Re: hello allow me to introduce to u my Wife
 
Man no wonder stepmania is in its current state. The devs can't take criticism.

MinaciousGrace 09-3-2016 01:02 AM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by MarioNintendo (Post 4471404)
He removed all code Kyzentun wrote from his stepmania fork

Well, the statement was made mockingly. Even if I do arrive there eventually that's not how it is now. All I'm doing now is using basic performance analysis tools to find out what areas of the code take the longest to execute. Deconstructing those segments of code to figure out what they're doing, why they're doing it, and how they're doing it, independent of the original author. Then I determine whether or not what's happening is fucking stupid.

For example, the ragevcolor function was doing almost as much if not more work during the gameplay screen than the entire 3d rendering engine. All this function does is take 0:1 float values and convert them to unsigned characters to represent the 255 rgb values which are then fed into said rendering engine. A little more digging revealed that this was because of an lrintf call inside the color function.

Essentially they were doing this, value*256 - 0.5. Basic math right. Then they passed it to lrintf, pretty straightforward. What does lrintf do? It rounds. Very slowly. As far as I can tell with 20 minutes of research lrintf and the standard library lround accomplish the exact same thing, except that lrintf will round towards the current rounding mode (apparently you can set the rounding mode to always round towards 0, or away, and so on and so forth) and lround will always round using standard convention.

I think to myself, gee, there must be a really fucking good reason why they're using lrintf to round rather than lround which is 10x faster. They must have a round mode set somewhere in the game. So I looked. Nope, not that I could find. I mean, I wouldn't put it passed them to have done it in a way that intentionally obscures that its happening, but I doubt that. It's just a case of pure fucking ignorance, laziness, and probably the fact that none of the devs have ever run performance analysis on the game despite being told it runs like shit.

So the solution? Replace lrintf with lround. All the colors look the same. Fps doubles.

FPS DOUBLES.

FPS DOUBLES.

FPS DOUBLES.

You see then I thought to myself hold on, wait, wait, wait. Do we even need to round? They're subtracting 0.5 and rounding, isn't that more or less (apparently the details of this get pretty messy) like using floor, or even better, directly converting to integer?

Here is the original comment regarding the function: "lfintf is much faster than C casts. We don't care which way negative values are rounded, since we'll clamp them to zero below. Be sure to truncate (not round) positive values. The highest value that should be converted to 1 is roughly (1/256 - 0.00001); if we don't truncate, values up to (1/256 + 0.5) will be converted to 1, which is wrong".

I don't see why or how (1/256 - 0.00001) should be converted to 1 when (1/256 + 0.5) shouldn't be. You also probably shouldn't be mistyping the function you're calling in the comment about it. What's lfintf?. The fucking irony. Anyway, if you don't care about negative values, and you are only going to truncate positive values, WHY THE FUCK ARE YOU ROUNDING? Just truncate it, aka, class to int and drop the decimal points. Now, now, hold up. It turns out that technically rounding and truncation do NOT provide the same results. Here is the comment message I left: "Casting as int results in 128 out of the 10million possible values converted to be one shade different compared to using lround. This is not a level of precision I care about. However if we want to be nitpicky about 1/256 not being rounded up to 1 we can very well do that. - Mina"

We turn :

int ret = lrintf(a*256.f - 0.5f);
if( ret<0 ) return 0;
else if( ret>255 ) return 255;
else return (unsigned char) ret;

into:

int ret = static_cast<int>(a*256.f - 1/128000);
CLAMP(ret, 0, 255);
return static_cast<unsigned char>(ret);

Now the practical reality of any colors displaying incorrectly on the screen is 0 (incorrect according to the original function, at least, whose correctness I dare not guess at), and even if it happened the 1 shade difference would go unnoticed to any human observer. Oh, right, and FPS is just about tripled during gameplay. But here's the thing. I don't give a shit about rainbow diffusing things in my theme. I don't care about them changing colors all the time, so I don't have much that actually changes colors. Now I don't know this for sure because it was irrelevant after changing the function, but, even with the pre-existing inefficient function there's no way that it should be hogging that much processing power while calculating new colors whenever an actor changes color. So the only conclusion is that actors recalculate their color each time they update whether or not they actually change their color.

Basically that means your "red" note travelling up the screen, like a fundamental homophobic christian who walks into a mens bathrooms and sucks off strangers to see whether or not he magically turned gay last night, needs to recalculate its "redness" to make sure that actually is still "red" every 1/120th of a second (or whatever your refresh rate is, probably once every 2 seconds for whatever cereal box kyz is playing on). Nice.

edit: in fact now that I'm looking at this again I'm pretty sure I misinterpreted the original comment and that 1/256 should be rounded up whereas 1/256 - 0.00001 should not be, what threw me off was the fact that what they're currently using doesn't do that anyway. Either that or "up to" means "up to and including" and they want 1/256 + 0.00001 to be rounded up while 1/256 isn't. Except that isn't what's typed. Also the qualifier of "roughly" -0.00001 isn't helping me here either. I actually have no goddamn clue what they precisely want, all I know is that functionally I could add a random value between -0.01 and 0.01 every time color is calculated and nobody would notice. So I'm just going to go ahead and change it back to a pure integer cast until jousway comes in here and tells me that because I incorrectly rendered a colored pixel a non-widescreen kawaii-quarkwave was generated that literally destroyed the entire universe of xAnime245 where particles only exist in 1:0.

So @jellowave and @klowntunez. I don't have anything to prove. If you want to intentionally avoid reading through my commits and what I changed and why, and then come in here and make snide comments assuming nothing has changed and that we're all in a collective hysteria, then fine. You can do that. It doesn't functionally matter to me or anyone else in this community. I'm going to keep doing what I'm doing and if what I'm doing works people are going to use what I give them. Maybe not everything I changed is for the better, but it's you who have something to prove, not me. It's you who have something to explain. You want to prove that your code isn't shit? Then don't implement any of the changes I've made, or will make in the future.

Gauntlet thrown, bitches.

Tarrik 09-3-2016 03:21 AM

Re: hello allow me to introduce to u my Wife
 
Yeah, that was a nice read.

EtienneSM 09-3-2016 06:45 AM

Re: hello allow me to introduce to u my Wife
 
Oh shit.

Dinglesberry 09-3-2016 07:48 AM

Re: hello allow me to introduce to u my Wife
 
L0l definitely a good read.. They probably have a bubble sort to sort the song list or something too lolz

Dynam0 09-3-2016 08:14 AM

Re: hello allow me to introduce to u my Wife
 
im red-blue colour blind anyway so..

Gruzzly_Bear 09-3-2016 08:22 AM

Re: hello allow me to introduce to u my Wife
 
*grabs popcorn*

Guilhermeziat 09-3-2016 12:46 PM

Re: hello allow me to introduce to u my Wife
 
cOOL.

Guilhermeziat 09-3-2016 01:00 PM

Re: hello allow me to introduce to u my Wife
 
Uh, Mina, about the NG holds giving -6 and missed holds aswell, I think that these punishments are too high for what a perfectly hit single note gives you (which is 2, if I'm not mistaken?).

What I was thinking was, why not make NG holds give -2, so that it would basically nullify a perfect hit (and still give penalties for non-perfect hits + NG)? I think that would make a bit more sense, since half of the note is the press and the other helf is the hold, right? Of course a held note would still give 0 though. About missed holds, I think it's better to disregard them, either by setting them to 0 or making the game understand that you only missed the note and there wasnt actually a hold there to be missed with it (no idea how that would be done), because missing the note will make you inevitably miss the hold, which would make you lose 13.5 points for a miss instead of the normal 7.5. This sounds a lot like the opposite of what happens on the DP system, which is hitting the note and inevitably completing the hold because the system is so lenient gives you 8 points instead of the normal 2 for a single arrow.

I hope I was clear enough with this suggestion and thanks in advance for making this!

MinaciousGrace 09-4-2016 04:47 PM

Re: hello allow me to introduce to u my Wife
 
yeah both the curve and how holds are dealt with need some (a lot?) of work

im wrapping up the last few major changes im making to the base code and then making a few more changes to the theme and hopefully within a day or two have a more stable release than whats out now

one of the major changes is that the chart key system is written entirely into c++, it's faster, more robust, done on load and cached with a bunch of other data; basically you do it each time you load a chart for the first time and you have seamless music select from that point forward

after that that the next priority is to go over the scoring system itself

SpaceGorilla 09-4-2016 11:56 PM

Re: hello allow me to introduce to u my Wife
 
can we not shit on sm devs even though they're worse programmers than children who've just been introduced to html

they don't deserve it tbh

Jousway 09-5-2016 07:13 PM

Re: hello allow me to introduce to u my Wife
 
to bad kyz will never read mina's post because he blocked ffr in his host file lawl

Dinglesberry 09-5-2016 07:20 PM

Re: hello allow me to introduce to u my Wife
 
Lol why is it always about calling x shit or y garbage or whatever

Doesn't anyone just care about fixing the game? Hell if I was one of the devs for stepmania I'd be able to understand Minas style and be happy the game is going to get better but eh what do I know

Leo137 09-5-2016 09:46 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Jousway (Post 4472362)
to bad kyz will never read mina's post because he blocked ffr in his host file lawl

didn't he had blocked before that and unblocked it just to see his newer posts?

...

MinaciousGrace 09-5-2016 11:27 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Jousway (Post 4472362)
to bad kyz will never read mina's post because he blocked ffr in his host file lawl

It's pretty amazing both of your capacities for infinite shamelessness and bullshit. You each owe the this community a massive apology and you know it.

This was never about making you guys look like shit. This was about making the game play up to the reasonable standards I was pretty sure it could. You made yourselves look like shit. I could have plastered all the flaws and hilarious inefficiencies in specifically kyz's code on reddit with his real name all over it, but I didn't, because that wasn't the point.

You guys wanna come here and start shit then you better be fucking sure you can handle a single jab.

ps. both you and I know he read that post get outta here LOL

Jousway 09-6-2016 12:59 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by MinaciousGrace (Post 4472468)
It's pretty amazing both of your capacities for infinite shamelessness and bullshit. You each owe the this community a massive apology and you know it.

you're pulling me in the drama between you and kyz becasue???? wtf did I ever do to you mate, also apology to this comunity, I never said anything negative, I was always on you guys side, I dont like kyz nor did I like what he said

not cool mang
Quote:

Originally Posted by MinaciousGrace (Post 4472468)
This was never about making you guys look like shit. This was about making the game play up to the reasonable standards I was pretty sure it could. You made yourselves look like shit. I could have plastered all the flaws and hilarious inefficiencies in specifically kyz's code on reddit with his real name all over it, but I didn't, because that wasn't the point.

in real shaming in the first place isnt cool so I agree with that, also ya didnt make me look like shit, just kyz the only code from me in sm5 is for noteskins and I dont think I did anything wrong there :V

Quote:

Originally Posted by MinaciousGrace (Post 4472468)
You guys wanna come here and start shit then you better be fucking sure you can handle a single jab.

ps. both you and I know he read that post get outta here LOL

I didnt start shit nor will I, also I'm sure he hasnt read it cuz everytime I tried to talk to him about your post he keeps saying he hasnt and wont so yeah :V

MinaciousGrace 09-6-2016 09:43 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by Jousway (Post 4472601)
you're pulling me in the drama between you and kyz becasue???? wtf did I ever do to you mate, also apology to this comunity, I never said anything negative, I was always on you guys side, I dont like kyz nor did I like what he said

not cool mang

in real shaming in the first place isnt cool so I agree with that, also ya didnt make me look like shit, just kyz the only code from me in sm5 is for noteskins and I dont think I did anything wrong there :V


I didnt start shit nor will I, also I'm sure he hasnt read it cuz everytime I tried to talk to him about your post he keeps saying he hasnt and wont so yeah :V

oop well if that's the case my bad i've had both of you mixed together in my head for a while now and that's unfair. To be honest I would much rather be actively working with devs rather than clashing and having to do/figure out everything on my own. But we can't always have nice things.

in other news preview of fpsmanias???




clearly 2500 fps is gratuitous however the aim was to make the game lightweight enough that you could stream it while alt tabbed out of overcrysiswatch4ever with no noticeable impact on performance

in my experience an average framerate of 1000 gives you plenty enough leeway to protect against any would be spikes and this further extra margin opens up pretty much a hedonistic level of possible features/overlays, even for people who aren't running 1080s

in fact i'm pretty sure this game now runs better than any 3.95 build ever did and even those with modest to pathetic (i don't mean that in a derogatory sense i just mean your pc sucks shit and therefore you do) rigs should be able to stream without it adversely affecting gameplay, or also, not-stream without it adversely affecting gameplay

the edits to the base code at least on my part are pretty much done for this cycle of development and all that's left is for me to test it a bit to make sure its stable

the changes will be pushed momentarily and hopefully by sometime tomorrow the next alpha release of the build will be available

i've done some-but-not-very-many updates to the theme itself and the current working alpha version of it will also be released when the build is and IMPORTANT: you must be using the new build in order for the theme to function

i mean you dont need to be if you're savvy enough to find out where the build dependencies are and modify them but shit why wouldnt you cmonBruh

assuming there are no major bugs in either the build or the theme the project is more or less ready to exit alpha phase into early stable release phase where updates can be added without fundamentally changing things so now that i'm not spending every waking hour poking at c++ code bug reporting would actually be appreciated!!!

tl;dr nice things coming 4u guys retroactively put yourselves on the nice list ok

edit: while initially it was my intent to savagely shred apart everything in the code i found useless or didn't like I didn't end up doing that; any functionality in the 5.0.12 build this was forked from should be retained though enough has changed that I wouldn't be surprised if there were bugs (particularly concerning mod maps). Any themes that functioned on the aforementioned build should also work so you dont have to use mine if its 2 cool 4 u.

shakesoda 09-7-2016 12:41 PM

Re: hello allow me to introduce to u my Wife
 
what's with the dramaposting

it's obvious that something is wrong here with the devs vs community situation, and apparently the devs vs other devs situation, but we don't seem to get wind of anything until people have already gone off on explosive rants on their respective random communities.

most things about the game have reasoning behind them or are perhaps just a legacy and should be fixed, and optimizations that don't cause breakage in the stable branch are welcome.

we take criticism if you give it to us, but hardly anyone comes around to tell us actual problems in any actionable way (sometimes we get people just calling us horrible people [thanks, appreciate it] or throwing context-free crash logs at us, which we can't do anything about).

please just talk to us normally on github/irc. if you don't want to deal with kyz, deal with me instead.

p.s. high framerates are cool but things like that 1ms thread sleep do exist for a reason (taking all resources makes everything else on the system lag), if you need it disabled I'd accept a PR for a preference.

rushyrulz 09-7-2016 01:03 PM

Re: hello allow me to introduce to u my Wife
 
shakesoda has spoken

MarioNintendo 09-7-2016 01:03 PM

Re: hello allow me to introduce to u my Wife
 
Hey, this shakesoda guy is pretty cool! :)






Now ehm maybe this is not the right place (maybe I deserve to make a fool of myself with a completely new thread), but here goes da big question:
Mina. I'm a complete stepmania 5 noob. I want to download your work and make my sm run at 1000 fps. Do I have to redownload stepmania as a whole, or only part of the code (and if so, where do I put the updated code)?
Also, while we're at it, I want to include the graph which shows average taps-per-second and the marvelous-perfect-etc. count. This has nothing to do with what Mina worked on, but... help? ¯\_(ツ)_/¯

MinaciousGrace 09-7-2016 08:32 PM

Re: hello allow me to introduce to u my Wife
 
Quote:

Originally Posted by shakesoda (Post 4472850)
what's with the dramaposting

it's obvious that something is wrong here with the devs vs community situation, and apparently the devs vs other devs situation, but we don't seem to get wind of anything until people have already gone off on explosive rants on their respective random communities.

most things about the game have reasoning behind them or are perhaps just a legacy and should be fixed, and optimizations that don't cause breakage in the stable branch are welcome.

we take criticism if you give it to us, but hardly anyone comes around to tell us actual problems in any actionable way (sometimes we get people just calling us horrible people [thanks, appreciate it] or throwing context-free crash logs at us, which we can't do anything about).

please just talk to us normally on github/irc. if you don't want to deal with kyz, deal with me instead.

p.s. high framerates are cool but things like that 1ms thread sleep do exist for a reason (taking all resources makes everything else on the system lag), if you need it disabled I'd accept a PR for a preference.

Unfortunately I think there's a fundamental divide between the game that the development team wishes to produce and the game that the 4k kb community wishes to be playing. I won't go into detail about my personal experiences in 2008~2009 of trying to get into contact with the development team to see the changes I wanted in the game. We'll just say it was unfruitful, insulting, and ultimately soured any hope I had that game could or would change in ways I thought were for the better.

That being said I'm not going to let past prejudices get in the way if you are actually interested in listening to what I or xwidget have to say, so we'll find you on IRC.

@marionintendo: I'm working on tidying everything up and then I'll write up relevant changes/what you need to do/what you should expect and all that! Just don't hate me if it takes me all night and isn't ready in the morning.

MarioNintendo 09-7-2016 08:58 PM

Re: hello allow me to introduce to u my Wife
 
Dude I can wait, that's no issue at all ;) Take all the time you need

MarioNintendo 09-7-2016 08:58 PM

Re: hello allow me to introduce to u my Wife
 
I mean I've been waiting 3 years for vgmp4, I have plenty on my plate as it is

SpaceGorilla 09-7-2016 09:29 PM

Re: hello allow me to introduce to u my Wife
 
is this the first advance towards the long awaited peace between players and developers?

find out next time on FFR Z


All times are GMT -5. The time now is 06:36 PM.

Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright FlashFlashRevolution