Hello.
I had to learn löve in the space of a weekend for a job application, and I ended up programming this tetris game where you are pitted against an AI who "chooses" which pieces are being handed to you in each turn. I liked the end result so much I've decided to post it here.
Turning the AI off will choose pieces randomly (regular tetris), while setting it to "1" (evil) will give you the worst possible piece for the current board configuration, and setting it to "-1" will give you the best possible piece.
The code is fully commented and although it can be made better, consider this just an alpha build (if I get feedback I may update it) and the code can be tidied up plenty. Included are playing music and having a rudimentary menu, and I've also displayed an "AI thinking process" board on the right that gives insight on how each piece was chosen. You can turn this off if you want to play without waiting.
The algorithm takes in several factors which are weighted and added up. You can easily edit these in the code. So far, there is only ONE case which enables you to "beat" the evil AI (try to figure it out). After fixing that I think it would really be impossible to get but one single line off of it. I've seen some similar games online but they aren't very robust and their AI can be easily beaten.
To make things entertaining, there is the option of switching difficulty in real time, which means you can pit the good AI versus the evil AI (by alternating between the two), or use the good AI to help you when you're in a tight spot.
Please check it out and give me feedback. Thanks!
Google Drive Link: https://docs.google.com/file/d/0B0etIhI ... R3Mkk/edit
EDIT:
Link for löve 0.9.0: https://docs.google.com/file/d/0B0etIhI ... =drive_web
HALtris - A.I. Tetris Offshoot
HALtris - A.I. Tetris Offshoot
Last edited by numandina on Thu Jan 09, 2014 10:14 am, edited 1 time in total.
Re: HALtris - A.I. Tetris Offshoot
Sounds like it's fun! I can't play it, though. Here's the error:
HALtris wrote:Error
maingame.lua: 78: attempt to call method 'setLifeTime' (a nil value)
Traceback
maingame.lua 78: in function 'load'
main.lua 20: in function 'load'
[C]: in function 'xpcall'
GitHub | MLib - Math and shape intersections library | Walt - Animation library | Brady - Camera library with parallax scrolling | Vim-love-docs - Help files and syntax coloring for Vim
- shatterblast
- Party member
- Posts: 136
- Joined: Tue Dec 11, 2012 9:47 pm
- Location: Dallas, Texas, USA
Re: HALtris - A.I. Tetris Offshoot
This works fine in love 0.8.0.
This AI is very impressive ! It will never let you finish a line in mode one. never, not one, not even one line .
This AI is pure evil.
This AI is very impressive ! It will never let you finish a line in mode one. never, not one, not even one line .
This AI is pure evil.
Re: HALtris - A.I. Tetris Offshoot
Hi, I would like to try this too.
However, you could improve a few things maybe:
a) Don't go fullscreen right from start.
b) Take care for other people computers resolutions. It is sadly impossible for me to play, since I see the screen just partially.
c) It uses >600MB of RAM after 10 seconds of calculations. I know it is HAL, but still!
However, you could improve a few things maybe:
a) Don't go fullscreen right from start.
b) Take care for other people computers resolutions. It is sadly impossible for me to play, since I see the screen just partially.
c) It uses >600MB of RAM after 10 seconds of calculations. I know it is HAL, but still!
Re: HALtris - A.I. Tetris Offshoot
Here is a version that works in löve 0.9. I removed the particle system.
Please note that the game starts paused for some reason in 0.9, so press the pause button twice to unpause.
Looking forward to more feedback!
Please note that the game starts paused for some reason in 0.9, so press the pause button twice to unpause.
Looking forward to more feedback!
- Attachments
-
- HALtris.love
- (646.53 KiB) Downloaded 256 times
-
- Party member
- Posts: 712
- Joined: Fri Jun 22, 2012 4:54 pm
- Contact:
Re: HALtris - A.I. Tetris Offshoot
This is really great.
Maybe you should make an AI-mode that's somewhere between 0 and 1, though, because, as XCaptain said, it won't ever let you finish a line in mode 1... so the game's impossible to win.
Great idea, though... and it works really well.
Also liked playing in mode -1 ... probably my best game score ever
Maybe you should make an AI-mode that's somewhere between 0 and 1, though, because, as XCaptain said, it won't ever let you finish a line in mode 1... so the game's impossible to win.
Great idea, though... and it works really well.
Also liked playing in mode -1 ... probably my best game score ever
trAInsported - Write AI to control your trains
Bandana (Dev blog) - Platformer featuring an awesome little ninja by Micha and me
GridCars - Our jam entry for LD31
Germanunkol.de
Bandana (Dev blog) - Platformer featuring an awesome little ninja by Micha and me
GridCars - Our jam entry for LD31
Germanunkol.de
Re: HALtris - A.I. Tetris Offshoot
That's a good idea. Added to the list.
P.S. It is not impossible to win a line in difficulty 1. There is one case, try to find out what it is.
Also if you find the game boring, try switching between difficulties in real time while playing. For example choose difficulty 1 at start, then after half the board is filled choose difficulty -1 to see what happens next.
P.S. It is not impossible to win a line in difficulty 1. There is one case, try to find out what it is.
Also if you find the game boring, try switching between difficulties in real time while playing. For example choose difficulty 1 at start, then after half the board is filled choose difficulty -1 to see what happens next.
- YellowAfterlife
- Prole
- Posts: 29
- Joined: Mon Jan 23, 2012 4:05 pm
- Contact:
Re: HALtris - A.I. Tetris Offshoot
Interesting idea. I did experiment with Tetris "doing player a favour" some time ago, but never thought of turning that around to increase difficulty.
If I'm not mistaken, this is the case when AI gives in - it does not counter "manoeuvring" around blocks:
Also there's a bug being that if you flip a tetriminoe next to a wall, it can get stuck in that in a variety of ways, erasing a piece of wall in process. This can be exploited to score a decade of lines or two, provided that game does not just drop you 20 square blocks in a row. That said, block variety is a problem of both modes -1 and +1. Game will often drop the same block over and over because factors are not changing. Could have a bit of randomness to that.
Without much exploitation, here's the farthest I got at mode+1
If I'm not mistaken, this is the case when AI gives in - it does not counter "manoeuvring" around blocks:
Also there's a bug being that if you flip a tetriminoe next to a wall, it can get stuck in that in a variety of ways, erasing a piece of wall in process. This can be exploited to score a decade of lines or two, provided that game does not just drop you 20 square blocks in a row. That said, block variety is a problem of both modes -1 and +1. Game will often drop the same block over and over because factors are not changing. Could have a bit of randomness to that.
Without much exploitation, here's the farthest I got at mode+1
yal.cc
Contains things I work on. Also gets Love2d examples time to time.
Contains things I work on. Also gets Love2d examples time to time.
Re: HALtris - A.I. Tetris Offshoot
Thanks for the bug report. I could've sworn I tested that intensively. Added to the list.
I (and the AI) did not take into account maneuvering around blocks, which would really complicate the engine. Maybe I should take into account...
The one case I was talking about was a mathematical case, namely this:
Reaching this particular block structure means that any of the blocks will enable you to finish a line, a result of the AI only looking forward one step.
I (and the AI) did not take into account maneuvering around blocks, which would really complicate the engine. Maybe I should take into account...
The one case I was talking about was a mathematical case, namely this:
Reaching this particular block structure means that any of the blocks will enable you to finish a line, a result of the AI only looking forward one step.
Who is online
Users browsing this forum: No registered users and 1 guest