My initial reaction is: it's not giving me the piece I want. It's trying to force you to clear individual lines as soon as it is possible to do so. But in real Tetris, you want to clear four lines at a time to get double score, which may mean withholding a line clear when you could have done one.
Consider this replay:
హටເח௨ඞܗТۑටܢݹ௫੬ຽߢ௧ලບঅযلЈǶ
It ends by giving me nothing but S pieces, because it wants me to take the single line clear. It won't stop giving S pieces until I do so. In actuality, any other piece would be preferable; there are available spots for all of them, and I can build up to a Tetris. But with the S piece, my only options are to sacrifice the Tetris for the single line clear, or create a hole in my stack.
It depends on the implementation of course, but clearing 4 lines at once usually brings a huge amount of points. For example, NES version at the first "level" (slowest speed):
It also increases the speed every 10 lines, so you want to plan accordingly for maximum score. You can get above that first level with either 400 points or 3600.
In modern ("guideline") tetris T-spins multiline clears tend to actually be the most point-garnering moves. It's a bit weird that the game named tetris went that way but oh well.
"Tetra" isn't completely unknown in English but perhaps the link is more obvious to Russian-speakers (the original author was Russian)? Is четыре/chetyre a cognate of Greek-derived tetra?
That is fascinating! In particular, base2048 was designed after twitter adjusted the tweet limit to 280 characters, but started counting “heavy” codepoints as double, making the previously used base65536 less efficient in the context of a tweet.
I think the reason is just that it isn't widely used. It's a very niche use-case, anyway. Even link-shorteners don't particularly benefit from something like this, and for all cases where the actual amount of data is concerned, simple base64 is more efficient.
I tried to see if I could stack a tetris. Made a 3 wide well, the game would give me L pieces to fill in the single line. Which made it pretty easy to stack up. At some point it gave me a single I piece, which I put in the middle of the 3 deep well. I would either get more I pieces or an L piece which I put in the well, the game would proceed to give me I pieces.
I think to make this a fun-ish experience would be to have the screen start filled with mostly garbage and holes and then have the the 'AI' lovingly send you the appropriate pieces to clean up the mess... I tried this by purposely messing the board and then going ahead with the game and I found it quite pleasant. Another idea would be to have it 'normal' until you got in trouble and then it would lovetris you back to health.
In a way, I got just as frustrated (well maybe not _as_ frustrated) as playing hatetris, because I couldn't easily make 4 line combos. That is, until I managed to set up endless straight pieces and stack the rest of the board save that one slot.
This version didn't exist until GistNoesis flipped the sign, so no, it's not.
This gets to a larger philosophy of open source: we should encourage people to fork when they want to iterate on someone else's work, however minor that iteration may be. This is open source working as intended.
If you take something that took hours to build and (as is claimed) spend 1 minute modifying it, you absolutely have no right to claim it’s “by” you. I think everyone except you agrees on that.
Well they also changed the name, so this new concept of Lovetris is by the new author, even if the code to make it possible is not. Lots of references to the old work as well, similar distribution (e.g. not paid), etc. If I was the author of Hatetris I'd be happy for this version!
Is that a serious argument? If you write a techno song, and I take it, turn up the BPM and publish it as “by me”, would it help my case that I also changed the name of the song?
But in more seriousness, a song is normally quite distinguishable from another song than a tetris implementation from another tetris implementation. Conceptually, having a normal tetris vs having a tetris give you the worst solution (hatris) is the same jump as having a normal tetris vs having a tetris give you the best solution (lovetris). IMHO it's not the code itself what makes a "new thing new", it's the concept behind it.
I completely disagree. I made a hatetris myself (called Lövetris) once, spent a good 20 hours on it. If someone took it, flipped a sign (or even re-skinned it) and published it as “by” them I’d be furious.
Yes, the product would be different, but 99.9% (literally) of the work would still be mine. The hard part is building the app, not changing a parameter. I wouldn’t even call that a “remix”.
That seems the opposite of open source thinking, which might be why you didn't published it and why you think that way. As an open source author myself I see this as a fair move. Just different opinions :)
"The hard part is building the app, not changing a parameter" that really depends, why didn't you take an open source implementation yourself and built on top of it? Then it wouldn't be "as hard", would it? If you want to go the hard road that's totally fine, but it's not fair to say that because you go that road you deserve something that someone else got easier using pre-existing technology. Also there's literally dozens of famous examples in science and medicine when the hard part is changing a parameter and saving millions of lives.
Also, I’m not saying it’s a problem to tweak someone’s open source project, I only take issue with presenting it as your own, with such a minimal change.
I don’t know if there are open source hatetris available, but in my case it was an assignment so that wasn’t an option.
If i build something from scratch it doesn’t really matter that it “could have been” built on open source. And in any case, it might be perfectly legal and in accordance with the license to do what OP did, I’m just saying it’s bad form. Making a minor tweak doesn’t make it “by you”. It just doesn’t.
And this is not medicine and lovetris doesn’t save any lives, so I’m bot sure it’s relevant.
Good idea! If more thought hypothetically about the consequences of various licenses I think it would be a good thing.
In retrospect some of my projects might have more liberal WTFPL on them where I really don't care if someone else said they did it, but others I would want more recognition and more copy left for their changes. (I think some of my bigger projects side with the copy left and the smaller with the liberal.)
Well, you've been given an example that contradicts your "thinking", so either your "thinking" was unknowingly incorrect, or you now choose to believe something that is patently false.
The TeX license requires you to change the name of you change a single byte.
> All of the methods described in these books are in the public domain; thus anybody can freely use any of the ideas. The only thing I'm retaining control of is the names, TeX and METAFONT: products that go by this name are obliged to conform to the standard. If any changes are made, I won't complain, as long as the changed systems are not called TeX or METAFONT.
I didn't downvote you, but I want to clarify what's going on because I know it sucks to get down voted with explanation.
The reason you're getting so many down votes is because you made strong claims in a harsh tone that turned out to be false in a trivially verifiable manner. The intent there is that you should've verified your claim through and through before attributing a misdeed to someone who simply sought to share something they thought was cool to make with others.
I find it important to identify that yes, a license is required to use someone else’s code - I mean this legally, not morally: you can be sued.
The sibling points about trademark law (which is different) and remix culture (which has some legal protection but not that I’m aware for lines of code) seem to miss this point.
This is a licensed use, it turns out, which is great. If the author here had not identified that before publishing, then they were putting themselves at legal risk.
[on a technicality, the MIT license hasn’t been properly invoked, since the MIT license requires the text of the license to be included in full, but the original author’s consent for use seems now to be clear]
Legally though, just because one person's proprietary work relies upon another person's proprietary work, doesn't mean it suddenly becomes open source or public domain.
Honestly I’m not surprised. The prior work could be argued as being fair use of the Tetris copyright. It certainly isn’t stealing any market from any official licensed Tetris products or services. Morally, I can find it very easily defensible.
This “Lovetris” work is a blatant copying and republishing of someone else’s proprietary work effort with no permission. Morally, I don’t see this as an egregious abuse, but I can see why this community would object to someone not acting in the spirit of open source licensing.
I got two long pieces, laid them down side by side, and was hoping for another one so I could start getting set up for a tetris, but all I got was garbage Z pieces forevermore, which were the absolute worst piece for me to get.
Started a new game. Put the long piece vertically against a side wall. Got an S piece. Whhhhyyyyyyyyyyy?
Yeah, it's weirdly frustrating. It seems to give you the best piece to clear lines right now, even if you want something different to set yourself up for a tetris later. So you have to arrange things up so that the best piece for clearing lines is also the best piece for setting up for a tetris.
What .... That is exactly what happened to my wife when I sent her the link just now. "Here honey, this ought to be relaxing" and boom, two long pieces and then a Z piece army.
I appreciate a free game but is this one of those abusive research projects?
"Undo and redo" shortcut don't seem to work, but the clickable undo and redo button at the top left work.
It's a quick project which arose from curiosity : "what would happen if the hateful AI tried to do the opposite".
This AI does its best to always provide you some outs to the limit of its abilities. You have plenty of freedom to guide the game into interesting landscape while having an AI that always offer you safe ways to recover. But you still have to play your part, the AI can only handle half the job.
Lovetris has some interesting complexities, and touch the subject of collaborative AI whereas Hatetris is an adversarial AI.
Collaborative AI and AI alignment are interestingly hard research subjects which have philosophical and technological components.
With subject as deep as love and working jointly, it's hard to satisfy everybody.
Lovetris with its "exhaustive short horizon exploring strategy with simple terminal heuristics" isn't capable of perceiving long-term intent farther than its tree searching depth. And reciprocally, if you set the horizon too far, the human player is bad at reading the intent of the AI, and doesn't do what the AI suggest.
There are probably better strategies, like monte-carlo tree search with some neural networks which could better solve the intent communication problem between the human and the AI, and provide a better experience, but they take a little more work than just flipping a sign.
Add a little feedback via data collection and such an AI can probably send its player into an hedonistic loop.
All due respect - I wouldn't really consider this to be an example of anything close to approaching the subject of AI alignment - at least not in terms that people talk about in the past few years.
"Exhaustive short horizon exploring strategy with simple terminal heuristics" - is this in reference to the for loop which calculates the future possible states of the game up to a certain depth?
It seems to be a state exploration algorithm. The number of possible game states is well-defined here. Perhaps you're conflating the subject of video game AI with concepts related to machine learning AI?
The AI is optimizing for a different goal than the player :
Like a loving helicopter mom, this AI is trying its best to help you reduce tower height now (to reduce risk) whereas the human player has different objective often related to increasing its score over a certain horizon.
The thing is from the programming point of view there are not a unique way to define what should be a "best move".
Are you responding to someone else? My issue is not with understanding the algorithm's flaws and the difficulty surrounding providing players with an optimal choice considering players have different goals than the heuristics used in the algorithm.
My issue is with you using incorrect terms and conflating machine learning with a relatively simple graph based algorithm with a relatively simple heuristic.
There is no machine learning going on in this codebase whatsoever as far as I can tell, but you seem to be claiming there is. Do you care to respond to that?
>There is no machine learning going on in this codebase whatsoever as far as I can tell, but you seem to be claiming there is. Do you care to respond to that?
Afaik I haven't coined the term "machine learning" in this thread and made no such claim.
To clarify : There is no machine learning going on in this codebase (though the problem is interesting enough that you can replace the simple AI by a more advanced one).
I was just merely pointing that AI alignment problem already affect even simple decision making agents.
I think all that's needed here is a note on the website clarifying that you're getting the best piece to complete a line right now, and that this will frustrate anyone looking to set up for a tetris.
For those wanting to clear tetris's. Trick is leaving that square empty if you try to keep clearing the lines. And if you clear the screen, you can see I saved myself twice using the same starting move with that Z others were complaining about.
There's nothing even slightly interesting about "Tetris which always gives you the best piece". The algorithm is as simple as can be: always give the long piece.
This is doing something different, which can't be described by the given blurb.
The board is ten cells wide so if you always get the long piece then it takes four pieces to make a line. Lovetris gives you two long pieces and then an S[1] which means you can make a line in three pieces. That's the sense in which Lovetris is "better" than your proposed algorithm.
[1] if you lie the two long pieces horizontally next to each other against the left wall
Making a single line is a very bad thing to do in Tetris. You always want to make four lines simultaneously, and there's no easier way to do that than by stacking long pieces.
I'm not trying to argue what is a good or bad thing in Tetris. I'm trying to explain the algorithm. Hatetris tries to maximise the minimum time to removing a line; Lovetris, as explained by its author[1], flips a sign, thus it tries to minimise the minimum time to removing a line.
If that contradicts your notion of "best piece" then either the author is being too imprecise or you are being too literal. Either way I don't think it's an interesting discussion.
> Either way I don't think it's an interesting discussion.
There is a worthwhile observation to make here, which is that even though Hatetris assigns scores to all the pieces and correctly determines, based on those scores, which one is the worst, Lovetris cannot correctly determine which piece is the best by picking "the opposite of what Hatetris does". Good is the opposite of bad, but the metrics for badness are not simultaneously metrics for goodness.
Hmm, it wasn't my understanding that Hatetris did that. I thought it tried to maximise time to completing a single line, but I may be misremembering or may have misunderstood. Moreover, if it did do what you claim it does then I believe that reversing a sign would end up always giving you the long piece.
I love this, this is awesome. If only life was like this. I guess it is sometimes, when you're in the golden flow of everything going good...How to keep that? Maybe just keep grabbing fortune by the forelock 'cause she's bald behind.
I was thinking about trying to make a version that optimized for giving you four lines at once to be a real lovetris but then decided that would probably just almost always give the straight pieces so it wouldn’t be too interesting.
It’s possible but very unlikely. In my experience, people who suffer from OCD almost never say things like “sorry I have an ocd need to do X”, since people who have OCD know the true depth of OCD is not in the compulsions but rather the obsessions and intrusive/distorted thoughts that lead to them. The mainstream view that OCD is primarily characterized by things like “I need to arrange things according to a certain way” is not accurate. (Hence the comment in the first place)
Or use the word “trigger” to mean mere annoyance. It is tragic that people with a hatred of people living with conditions like PTSD and epilepsy have turned that word into a joke. (I guess most people who use that word now are unaware of this history.) I know people who experience actual triggers and it's a very painful thing.
> Or use the word “trigger” to mean mere annoyance
To be clear, the people that took away meaning from this word were the people that added "trigger warnings" to the most trivial of things. "trigger warning: meat eating." "trigger warning: bad words."
> It is tragic that people with a hatred of people living with conditions like PTSD and epilepsy have turned that word into a joke
> To be clear, the people that took away meaning from this word were the people that added "trigger warnings" to the most trivial of things
I would object to this on two grounds.
Firstly, seemingly insignificant things can be triggers. It doesn't have to be something people without PTSD consider a big deal, because by definition it isn't them who are affected. I have seen this first-hand. The source of the trauma and the thing that is the trigger can even be totally disparate. (Nice use of “bad words” to describe racial and other slurs by the way. That isn't trivial for the people affected.)
Secondly, in communities that centred around mocking people who (among other things) used trigger warnings, there was a self-perpetuating cycle of creating fake posts to reinforce collectively held biases. They began by ridiculing real content and ended up ridiculing fake content because they did not understand what was real.
In any case, it is a choice to decide “people I don't like use trigger warnings excessively” means that you can use the entire concept as a joke and ruin it for the vulnerable group it is useful for.
> That's really not what's happening.
I've seen it play out. There are definitely malicious actors, even if not everyone is.
If you were thinking of some other “bad words” then I'm happy to be corrected. My experience led me to think those must be the “bad words” you were speaking of.
I play a lot of NES tetris, so this actually threw my instincts for a loop. What I think is most satisfying is when I pull off a "tetris", i.e. get 4 lines at a time with a long-bar. This implementation seems greedier, as it seems to want to give you the pieces necessary to complete any line at all.
I worked around it until I got a well on the right hand side, at which point all I got was long-bars. This is the cleanest path I could find to an infinite run of tetrises:
ذටරऍƐඥժݹߝɿඍݷ౫ටฅڝ௨పໃܡ௨ඖІݮ௨ഗƊݹɷඝܘܢ௨پܘݓ௨ಮІܦ௨ชІݶΗʈາђடටවݹदඦܘݣ௨ಬໃƎௐڌໃݷಒටԠђௐڊಸݹࠂƣຜࡁரڀฮࡁਓȺಥɜਆ
I think you should add a link to and acknowledge the original on the actual game site. It's not really enough to link to your own github then have the link there.
In case anyone was wondering you can get it to infinitely spawn I pieces by just getting any kind of 3-deep 1-wide well anywhere, and then just keeping that well active, and it'll always give you I pieces:
I think it could have a place in an anxiety program or something. A video game as a safe place with the dopamine hits of Tetris.
edit: a very safe place indeed, I played for 5 minutes and the excitement is kinda low once you figure out how to trick the AI to give you what you want :D.
I'm holding out for annoytris. You get random pieces until the AI detects you're being greedy. If it thinks you're trying to setup a 4-line Tetris, then that's when it starts with the bad pieces.
Best strategy is to clear 1, 2, or even maybe 3 lines at a time. (But don't get in the 3-line habit, you might anger the AI still)
got the fun one - ϢටາחஒටາɕଶϺເஈணಛזஈஐҲʩಱ௨ಇΚঀݣක൨ཧஓڐາஜௐงไऔࢶƣແࡑ௨ٯໃѠஓكƔݹமɨຯɓƐ೯ਗɒƏپІҁமҬҽћகڈງ൩ಳඤΚŦ௧ڄແࡥj൞ແࡑ௧ٯໃקஜsຽߟjඖИݸభටܤݷౚ൜ܔॠਯࡄȹࡨ௭Ӏไঅಳ༦Ͽࠇ৯ɜଖʣۑಲϼɪ३ࡃғݶլඝ૭טञΤһऑƏΣૹࢭ४WЅ൫সబςबਚตٮקߤڞЉݺԥ੯ܘऎஹؿકIظටෂܭݣೱૹॠઽೱϾא౫ටऐԃयప༮ȾಥժVѣԤงลஈஶϥЫɢݣങܗћமȾЈƸ௨ਵІƣدΣܐא౫ටलހਚڀฦӘಥ൞ࡋॿ౫ೱૹऔলට໓෧௧บܘԴ௨ॴໃԓଚපഉݺݳට༬ஈமටເђ௨Вȣݒ௧ϥಸࢠ௨ࠓƔݹ୦قӶɖɷජڛ൫ௐຂໃЋ௧αಭݺɷචՊݹஜsແࢭௐༀІܣ௨ঌໃv௧ʓଈѣלԊฐݒƃඦܪݹಎටƭƷஸ൶ถङஹس૪ॿಎظݕɥࢴقະߢਢഞบࢭশؿനєஓปȥݹகvૹऄরࡄଚࢢடඝૡƼಲʇДܥಳටȶɔѻRϼוϡɇݕƏېงลঅ௧ලล๐শطເוοтଖܡञƢЫݹࢳࡄරʤɶ৩ƫஜலڈฅஅಲڄໃܭҳ൞ෂݠணسວࢼథح๔ݢ൭శາזԫච৴ѰணػৠJथࡄժΜહঋඩसدƥ૮ࠁஐٯฅݶಈ౾Ͻࡁࢴقະॹοաݒկਙนͳܭޜӷ૮ࢭࢴقະࡨ௨ಅไݹಗقໃџɷටບZ௨ටໃݹ௨ටໃݹ௨ටໃݹ௧ƥІݷТsຯܖɾࡕ
You can win: ࠁටໃݶԣலໃݹࠅॴໃݛԥ੯ටஈ௨ඥ೦ݹ௨ඥಸݹ௨ටമ๐௨ൽഉݹݹقາڭ௨ටഫݑСටໃԓ௦૫ໃݹ௨ටໃݹ௨ටໃxħقໃƬݴΟໃKЭइໃC౻ටຯٲಏقแڽ௨ఢƔݹரٯໃԔޛඥДݹߚฃໂɛԥడM൵௨బໞݹҬɦషݸßࡇHܤЪsເלԚؿИݟಳउܔऎ௧ڏܐওடปիୱଛआҟڭߞشຯݶޚปÐϳਫಗ๐ݡல၁ଈݶతಧາঐ௨ಬȣܤ௨s൧ݞసටफऄஜΟරߟԥನȣݐ௨ಀഫݮ௨ॴວݹসඨʅݹࠉටիঅடٯෆݶѻඦݡŦ௧੯ଈݠߜටஃݹذටƾݹதsໂঔ௨ඖໃݸذsະङ௨ೲໃݹ௨ටແ
I decided I would rather have the AI on my side so I forked the site and flipped a sign.
If your life feels like Hatetris, Lovetris will bring you comfort.
Enjoy :)