Pykoikoi is an implementation of the Koi-Koi hanafuda card game in Python.


The objective of the game is to match cards to complete various scoring combinations (called yaku) to earn points.

On each turn, the player attempts to match the suit of a card in the hand with a card of the same suit on the table.  If two cards match suits, then those two cards go into the players scoring pile.  Next, the player draws a card from the draw stack.  If that card’s suit matches the suit of a card on the table, then those two cards go into the player’s scoring pile.

There are twelve suits in the deck, one for each month of the year.  There is an option to display numbers for the month of the card, since the image on each card is different, sometimes making it difficult to determine the month of the card.  Each suit has four cards, for a total of 48 cards.  Some cards have special properties such as lights, ribbons, and specials.  There are three types of ribbons, which are red ribbons, poetry ribbons, and blue ribbons (which look more purplish).  The difference between a regular red ribbon and a poetry ribbon (which is also red), is that the poetry ribbon has Japanese kana (letters) on it.  The special cards typically have an animal or creature on it.

Once a player has a scoring combination, the player can chose to either keep playing (“koi”) or stop.  If the player chooses to continue, then the opponent scores double points if they make a valid scoring combination.

There are multiple scoring combination, which involve getting a certain number of lights, ribbons, specials, or normal cards.  The sake cup can be paired with the curtain or moon cards to form a score.  The rain man card acts as a light, only in combinations of three other lights.  The deer, boar, and butterfly as a special combination.



Created by LD Smith
Built with: Pygame

Chicken Little

Play online

Chicken Little is my entry for Ludum Dare 46, where the theme was Keep It Alive.

Click the falling apples to prevent them from falling on the chicken’s head.  If an apple hits a chicken, then it is knocked out.  Additional chickens are awarded after clicking a number of apples.  Once all of the chickens are knocked out, the game is over.  Enter your name to store it in the online leaderboard, which tracks who has the longest survival time.

Each level has three waves.  After each level, at random either the gravity is increased or an additional apple drops during each wave.

Created by LD Smith
Built with: Unity

February 2020 Summary

This month I continued to work on SDL Shooter, which is a space shooter written in SDL and C.  This game started as a presentation demo for the December 2019 Knoxville Game Design meeting.  The project source code is available on my GitHub account.  I’m hoping to release it on more platforms when it gets to a point where I feel that it is complete.  Right now I’m just having fun adding new types of enemies.


  • Foxtrot – Moves a few units either vertically or horizontally, pauses, and then moves in a new direction.
  • Golf – Snake type enemy that has a random number of tail links.  Each link of the tail must be damaged before the head can be damaged.  Moves in a sine wave at variable rates.
  • Hotel – Stationary enemy that constantly fires projectiles in a radial fashion.
  • India – Large enemy that explodes into four smaller enemies when damaged.  When the four smaller enemies are damaged they explode into eight even smaller enemies.  I need to make the explosion angles random, instead of the standard 90/180/270 and 45/90,135, etc angles.
  • Juliett – Hopper enemy that jumps in a parabola one to three units horizontally.  One issue is two of these enemies can jump to the same spot and overlap.  This could be solved by adding a target location variable for each enemy, and determine if another enemy has claimed that spot before jumping there.  I would also like to have the enemy attack the player’s ship in some way.  Either charge the player’s ship when it is aligned vertically, or shoot webs at the player’s ship to slow it down like in Zekkou no Tomodachi.
  • Kilo – A random number is displayed on top, and the player must shoot the correct binary sequence to defeat this enemy.  Added the current “attack value” below the target value, which makes completing the binary sequence a little easier.  The enemy has between 3 and 5 bits, so the maximum value for a 3 bit enemy is 7 and the maximum for a 5 bit enemy is 31.
  • Lima – A bat type enemy that starts sleeping, and then awakes and chases the player when the ship is near.  The enemy is only vulnerable when it is not sleeping.  The amount of time that it takes for the enemy to wake up is random.  The second level enemy moves faster and takes more damage to defeat.
  • Mike – Color orb enemy.  Three small orbs revolve around the center, which are either red, green, or blue.  The player must shoot the correct revolving orb to match the center.  If the center is yellow, cyan, or magenta, then it takes the correct two orb combination to defeat the enemy (such as cyan = green and blue).  Shooting an incorrect orb will make the orbs revolve faster for a short period of time and the enemy will shoot at the player’s ship.

I checked my Microsoft developer dashboard today to see if the XBox One Creators Program was still running.  I noticed that Kitty’s Adventure has now passed 50,000 acquisitions between XBox One and Windows Store.  It is by far the most popular game that I’ve released to this day.

Also this month, we had a great turnout for the online Knoxville Game Design Meeting.  This month’s topic was Java Game Development.

I spent some time updating my two college work pages for Georgia Tech and the University of Tennessee.  Links to those two pages are now displayed on the main menu on my site under Education.  I also found more of my old websites, which I uploaded and linked on my wiki page under Historical Pages.  I uploaded the source code for some projects that were missing, such as the Predator database projects.