Category Archives: Twitch Livestreaming

Ludum Dare 32 coming up: Theme Voting Finale!

This weekend I will be (hopefully) participating on the Ludum Dare 32 – the 48 hour game jam / competition with thousands of participants! I always get a little giddy when it comes to this time, and I enjoy participating in it and just finishing up a small prototype in this limited timeframe.

Currently the Finale Round Theme Voting is running and this is my first chance I got to look at some of the contesting themes and I will try to brainstorm a few ideas… Last time I waited until the topic was announced to come up with an idea, but had a total mental block and gave up midway. I will sit down tomorrow and try to come up with a few specific ideas, preparing myself for the weekend!

If you guys are interested, here are my previous Ludum Dare entries:

30802-shot0.jpg-eq-900-500

  • Planetary Marriage Counseling in August 2014 with the theme “Connected Worlds” ranked #40 out of 2538 entries.

30802-shot0.jpg-eq-900-500 (1)

  • Me & My Metal Detector in April 2014 with the theme “Beneath The Surface” ranked #157 out of 2496 entries.

Just like the last two times, I will be on my Twitch Stream the whole time and answer questions and let my viewers playtest early versions (if possible!), so make sure to say hi!

Update: If you are curious how it went on Ludum Dare 32, go ahead and check out my post about my entry ‘Death Cycle‘,ย which includes a Timelapse and a Post Mortem!

Twitch Plays Chess – Python Script for Twitch Bot

After having some fun letting my Fish Play Piano and then letting Twitch play some Battle Chess with OpenTwitchPlays, I figured, that I would get back into Python and write my own little bot. The NES chess engine of Battle Chess was not very impressive. After a long night and a lot of coffee, I had my bot running thanks to some tutorials and plenty of documentation on Python on the internet.

Twitch Plays Chess Screenshot

I took the scripts from Make your own Twitch-Plays stream by Wituz as a starting point and improved on some functions (like being able to join a different channel than your username) and console output. I then added my features for clicking and dragging to interact with the UI of Lucas Chess (Windows) as well as the required !move command for players to specify coordinates. The script does only emulate player input and can therefore not output and results or give feedback on false input other than the proper use of syntax.

To avoid trolling (by just restarting a running game), I have added a simple voting system, which can be easily modified. You can use this script as a framework for your other games by removing everything related to the chess software and modifying it for your needs. If you need to emulate a longer button press for your game / emulator / tool to react properly, you can add the keyholder.py as outlined by Wituz to your script.

I have run into some problems with Lucas Chess and its very inconsistent UI, so if you intend to run another chess software, maybe check out something that supports hotkeys, so you can ideally avoid the mouse inputs since they are prone to problems. ๐Ÿ™‚ I would love to see someone else having fun with these scripts!

Python Scripts:

  • main.py – This is where you control your bot behavior and add / remove commands
  • twitch.py – You won’t have to modify this script, main.py requires it, though.
  • Software Used:

  • Lucas Chess (or the game that you want to play)
  • Python with PyWin32 (I’ve been running / recommend 2.7 for this)
  • The FANTASTIC Python IDE PyCharm
  • Fish Plays Piano falls short – Twitch Plays Chess instead!

    Sometimes I get this little voice inside me, that wants to do something completely different and just ignore all the things I have to do and take care of. Apparently this time it was to make a fish play music! (Yes, I am an adult!)

    This weekend I did not get to record for my YouTube channel or do anything else that you could call “useful”. Because I was playing around with some concept for a new Twitch channel. My first try to put my fish Stumpy in front of the camera and let him play the piano, worked after roughly 12 hours of work. But due to their inability to play beautiful melodies and lay around a lot of the time, kinda turned out to be … not that interesting. I’d much rather watch a human play the piano on stream ๐Ÿ˜€

    The implementation was surprisingly easy with the help of MATLAB’s image processing features and Arindam’s blog post / template I could work with. I did some minor tweaks to the script, mainly in the form of dividing the screen into a grid and checking the coordinates from the blob with said grid and then sending keystrokes to a online piano tool.

    After I streamed this for a while, I decided I would try out something along the lines of “Twitch Plays Pokemon”, just with a different game: Battle Chess! I spent a few hours trying to set up the system with some Python scripts, with no luck (Getting Python & PyWin32 to run on my system was a headache).

    I then looked a bit further and found an open source tool called OpenTwitchPlay. The implementation was fairly easy and the stream was up and running in half an hour and seems now to run stable. I will have a closer look at the source code and see if I can modify it to fit it the channel; other chess software is also something I am considering, since this would maybe allow more complex commands. Luckily I have a dedicated system for the stream (It’s my German notebook, that I won’t be able to sell here heh)

    The Stream is currently running for 20+ hours and so far Twitch lost 2 times against the (slightly slow) NES AI. Currently it picks up in pace and some dedicated viewers are taking on the challenge of beating the AI. It certainly is going to be tricky, when more player are going to join the stream, but so far it’s been a blast watching them and listening to Nectarine Demoscene Radio. (Haha, please ignore the April Fools Bieber theme)

    Chess is very much like Starcraft 2 for me: I enjoy playing it once in a while, but I don’t have the perseverance to get really, really good at it; Since I love tinkering on stuff like this, I am looking forward to improving TwitchLovesGames!