Forums » Songs » The Eden Project - Kairos (MODS UP THE ASS)



SM5 only. Download

Works with one player as well, should clarify that.

This was made using that mod reader thing I made a video about a little while ago, something I worked on concurrently with Move Your Body, though the first song didn't work out so well. Couldn't come up with too many good ideas for it.

The reader is updated, and the code (.moon) is in the simfile itself for you to snoop around. A few key features I've added in since then are easier, more concise lua mods, and mod repetition. I figure I'll probably make an update video about it some point. Poke me if I forget.

I'm aware some parts of the song are garbage, but it was made to be challenging, so... good luck I guess? lol

Last edited: 30 January 2015 6:14pm

Reply
You should add this mod to your reader.
< cybik> til Kyzentun fixes bugs for breakfast
--
< maxvg1> shakesoda: then why do i still play lol
<@shakesoda> because you're an ITG player. And thus, a masochist
--
<@shakesoda> Kyzentun: I think you might need to put down the meshes for a bit
Reply
The way it works, it relies pretty much entirely on user defined mods in the form of tables. Something like this:

luaMod = {
init = function(self)
doStuffOnSongBeginning()
end,

-- 'self' is the lua mod itself
-- allows you to set mod-specific variables and such
start = function(self)
doStuffOnModStart()
end,

-- 'mod' is the mod table as defined
-- 'pos' is a number, 0-1, how far into the mod we are
update = function(self, mod, pos)
doStuffWhileModIsInEffect()
end,

finish = function(self)
doStuffWhenModEnds()
end,
}


And the mod would be something like:

-- start on beat 4
-- end on beat 8
-- use our lua mod
{ start = 4, finish = 8, lua = luaMod }


In other words, that's something you'd add yourself, or steal from someone who's already done it.
Reply
lol, I know that, I'm just messing with you because I'm bored and you used the lame string based functions I wish I was allowed to get rid of.
Side note: I wouldn't need to copy code from someone else in this area, I know how to write code.
< cybik> til Kyzentun fixes bugs for breakfast
--
< maxvg1> shakesoda: then why do i still play lol
<@shakesoda> because you're an ITG player. And thus, a masochist
--
<@shakesoda> Kyzentun: I think you might need to put down the meshes for a bit
Reply
you used the lame string based functions I wish I was allowed to get rid of.
I used them because they make a convenient format for scripting mods, that which many people, including myself, are already familiar with. It's more than just for legacy reasons, it's because it's an easier built-in system to work with than calling mod functions on the player options object.
Reply
It's actually pretty trivial to set up something similar for the player options object. Just requires knowing how to use lua, how member function calls work.


local mods= {
{"Boost", 1, .5},
{"Brake", 2, 4}
}


local curr_mod_info= mods[current_mod]
player_options[curr_mod_info[1]](player_options, curr_mod_info[2], curr_mod_info[3])


Do that, and you can work directly with numbers, instead of being forced to concatenate them into strings and add symbols so the parser knows what the parts are.

Last edited: 31 January 2015 12:14am

< cybik> til Kyzentun fixes bugs for breakfast
--
< maxvg1> shakesoda: then why do i still play lol
<@shakesoda> because you're an ITG player. And thus, a masochist
--
<@shakesoda> Kyzentun: I think you might need to put down the meshes for a bit
Reply
I thought about that, but in practice, it doesn't work out all that great. As an example, I've taken one of the mod strings from the file and converted it into the proposed format. That is, that which wouldn't require any sort of string matching / concatenation of any kind.

-- before:
{ start: 0, finish: 110, mods: '*.08 50% drunk, *.05 30% tipsy, 20% dizzy' }
-- after:
{ start: 0, finish: 110, mods: {{'Drunk',.5,.08},{'Tipsy',.3,.05},{'Dizzy',.2}}}

And not only is it less concise and explicit, it's also ugly as fuck. So I'm just going to steer clear of that and just continue to use mod strings. Of course, I don't mean to say that one solution is better than the other, this is just what I prefer to do. And it works nicely.

Last edited: 31 January 2015 12:47am

Reply
And then you go to add some feature like adjusting for music rate, and you have to write a bunch of extra code to take the string apart, change the numbers, and put the string back together.
Numbers are better because you can use them as numbers, add them together, divide them, multiply them, you know, math.
< cybik> til Kyzentun fixes bugs for breakfast
--
< maxvg1> shakesoda: then why do i still play lol
<@shakesoda> because you're an ITG player. And thus, a masochist
--
<@shakesoda> Kyzentun: I think you might need to put down the meshes for a bit
Reply