Tuesday, December 29, 2015

More Control Over Horse Powers

We are approaching 60 total custom horses in the Ultimate Unicorn Mod, which is pretty awesome.  However, as I add new horses, and as I create new powers for horses (like Rainbow Smash's new Rainbow Beam power), I'm beginning to think that I need to add more options for controlling how your horse's powers work.

Naughty Destriers and Config Options

In the Minecraft Forum for the Ultimate Unicorn mod, I've also seen people asking for ways to keep destriers from breaking stuff.  To help with that issue, I added some new configuration options to allow you to make destriers (and other horses) nicer to the environment when they are not being ridden.  It occurs to me now that I should probably do the same with nightmares!

I don't think configuration options are enough, though.  I think when you're riding your horse, you should have a fine-grained control over how her powers work, and that goes beyond just throwing on some Horseshoes of Gentling.

Flame Auras

In particular, I find myself getting a little concerned whenever I see someone make a custom horse with the "Flame Aura" power.  It's an awesome power, but I often wonder if the person ordering knows what he is getting into, because the flame aura can burn up the player if he is not careful!  Sure, you're protected when you are riding your horse, but if you jump off, that aura is going to burn you, too!  (So put Horseshoes of Gentling on your horse before jumping off to turn that Flame Aura power off!)

The Solution - A Better Inventory Screen

The best idea I've come up with to improve the current situation is to modify the Magical Horse Inventory Screen.  I'm looking into adding checkboxes to the inventory screen so you can turn on and off the various powers your horse has.  Dangerous powers like Flame Aura will be turned off by default, and will deactivate if you jump off your horse.

This will take me a little time to put into the mod, but it's high on my priority list.

No one has complained about the Flame Aura yet, but I want to make sure that I'm giving people the best possible experience with my mod.  For those of you playing, I appreciate your support, and I hope you are enjoying the mod!

Please post a comment if you have anything to say about this issue!


Saturday, November 28, 2015

New Minecraft Server Advice

First off, thank you all for your responses to my Minecraft server poll!

Due to the positive responses, I'm looking into what I need to do to run a Minecraft server.  I really want to provide a place for people to play with the Ultimate Unicorn Mod's multiplayer features, such as jousting, air battles,  and some new things I'm working on.

I'm looking into a lot of different options, including server hosts, different server types (such as prison servers, etc), and Forge mods to include alongside the Ultimate Unicorn Mod.

I've found a few interesting things, but I thought I'd start a conversation with the community to get an idea what you guys want.

So, what's your advice?  What kind of server do you want?  In your experience, which Forge Mods are particularly good or useful, especially on a multiplayer server?

If you've run a server, what server host do you like best?

I'll be in the comments, so please let me know what you think!

Sunday, October 18, 2015

Ultimate Unicorn Server Poll

I've been asked to start up a public Minecraft server for the Ultimate Unicorn Mod, so people can more easily play with the multiplayer aspects of it. However, I'd like to check interest level before committing to doing so. Soooooo, here's a question for you!

If I started up a public server, would you play on it?


Friday, October 16, 2015

Alea, Typhon, and Velvet - Three Unique New Horses

Three unique new horses have arrived!

Wings, Horns, and Hooves: the Ultimate Unicorn Mod is proud to present:

Alea, Bringer of Dawn

Alea in flight

Alea is the Bringer of Dawn, the legendary protector of the realm against all evil that lurks in darkness.  She is a living myth, and daughter of the Sun itself.

Powers:

  • Can summon the dawn (turn night to day) by flying high into the sky.
  • Projectile Protection - Alea's aura protects her and nearby creatures (including her rider) from projectile weapons such as arrows, fireballs, etc.
  • 2x Protection Aura power
  • 1x Healing Horn power
  • 2x Power Wing Buffet, but her wing buffet only pushes evil creatures.
  • Can ascend and descend faster than all other winged horses.
  • Immune to Fire


Typhon the Destroyer

Typhon, after busting down a mountain just for fun

Typhon is the product of the deranged experiments of the mad Doctor Ogrebaz.  Although Typhon was initially bred from magical horse stock, the mad doctor's tests have infused Typhon with destructive power and twisted him so that he is almost more monster than horse.  The doctor's experiments knew no bounds, even venturing into the forbidden realm of undeath.

Powers:

  • Cataclysm Charge - When charging with his unicorn horn, Typhon can plow through dirt and stone in his way.
  • Death Wind - Typhon's wing buffet power kills smaller animals (sheep, rabbits, etc.), but not bigger animals like horses.  It also raises zombies to fight for him (and more zombies are drawn to him the more animals he kills).
  • 2x Power Stomp power
  • 2x Power Wing Buffet power
  • Immune to Fire

Velvet, Mystical Healer

Velvet, relaxing among the flowers

Velvet is the mystical healer of the lost forest of Averglen.  For long ages, she has watched over her forest and all of the animals that dwell within it.  Where she walks, flowers bloom and the land is healed, as are any injured animals that seek her assistance.  Over the years, her kind acts have gained her a following of forest animals who love her dearly and help her protect the land.

Powers:

  • Aura of Life - causes grass and flowers to sprout and heals nearby animals and people.
  • Gentle - doesn't hurt others when she rears up. 
  • Velvet's Entourage - Velvet attracts nearby wildlife to follow her, in particular bunnies.
  • 2x Healing Horn power
  • Immune to Fire

Finding Them

Currently, you cannot find these horses in the wild (they do not spawn naturally).  However, you can summon them with a spawn egg, or with the following commands:

/summon Alea
/summon Typhon
/summon Velvet

Cheat codes can affect them, and they can pass on (some) of their traits to their offspring.  Name tags change their names, but do not apply custom unicorn designs (do not change their appearance or powers).

Dedication

These three horses were designed for three special people:

Alea was created for Mackenzie, who shares Alea's protective spirit.

Typhon was created for Colten, a destroyer in his own right!

Velvet was created for Kennedy, who loves baby animals as much as Velvet does.

Special thanks to Necole, who helped get this idea off the ground and provided much encouragement!

Tuesday, October 6, 2015

The Oracle

In an open glade stood a carving,
A horse of oak hidden by daylight's fading
Adorned with hide and hooves and feathers,
It stared at me in silence, as if waiting.

I touched its forehead and saw it hollow'd,
And my pack grew heavy at my side,
Inside was the horn of a beast I'd follow'd,
And slain after yesterday's lonesome ride.

With shame I drew forth the bloodied horn,
And placed it in that hollowed head,
And lo!  It glowed, that piece of unicorn!
And hide and hoof and wings feather'ed!

I stroked it absently from tail to mane,
"What is your name?" I said, as an aside,
Creaked did those sticks, and rippled old wood grain,
"I am the Oracle," it replied.


The Oracle

Along with the Spirit Tree and the Hippocamp, version 1.2.5 of the The Ultimate Unicorn Mod introduced the Oracle.  The Oracle is a wooden horse that can be brought to life.

Creating an Oracle


An Oracle can be created only with the help of a Spirit Tree.  Place a stick in the Spirit Tree's hollow, and wait, and you will be rewarded with an Oracle item.  The Oracle item can be placed like a block.

Using the Oracle


When you right-click an Oracle, you can see its inventory.  It can be used as a chest, and it can also be outfitted like a magical horse.  In its inventory screen, you can see a disabled "Talk" button.  When you insert into the Oracle's equipment slots the four magical components of the magical horse purebreeds, the spirits of those creatures possess the Oracle and it comes alive.  The four magical components are placed as follows:

  • Put a unicorn horn in the horse helm or horn slot.
  • Put a pegasus feather in the wing tip slot.
  • Put a destrier hide in the armor slot.
  • Put a nightmare hoof in the horseshoes slot.


When the Oracle comes alive, you can talk to it, and you will know because the "Talk" button will become active.  It can answer your questions, tell you about the world, and also about the future.

An Activated Oracle
Talking to the Oracle

Friday, October 2, 2015

The Spirit Tree

Another new feature in version 1.2.5 of the Ultimate Unicorn Mod was the addition of the Spirit Tree.

A grown Spirit Tree

Spirit Trees are the home of friendly tree spirits.  There are many names for these creatures across the many dimensions, but they are most commonly known as dryads or kodama.

The Tree Hollow

Every spirit tree has a tree hollow, a hole in which the dryad lives.  It has been said that if a traveler leaves a gift inside one of these tree hollows, the dryad that lives there will exchange it for another gift.  In particular, it is rumored that dryads will fashion sticks left in their tree hollow into magical structures (such as the oracle).

The tree hollow looks like this on the outside:


And this on the inside:

Putting gifts in the Spirit Tree's tree hollow

Finding a Spirit Tree

Spirit Trees grow from Spirit Tree Saplings, which can be acquired in two ways:

  1. Some villagers will sell them to you.
  2. Witches will occasionally drop them when killed.

Also, Spirit Trees can occasionally be found growing alone in a clear area, like on a plain, in the desert, or on the beach.

A planted Spirit Tree sapling

Thursday, October 1, 2015

The Ultimate Unicorns

Anyone who has played the Wings, Horns, and Hooves: Ultimate Unicorn Mod knows about the four main breeds of magical horses in it: Unicorns, Pegasi, Destriers, and Nightmares. However, what you may not know about are the four special mutant breeds, which are called Ultimate Unicorns. These four special breeds can be discovered by mating your magical horses until you find the right set of traits, and a mutation occurs. There's also a fifth breed, but he's not technically an Ultimate Unicorn, and I'll get to him in a minute.

Each of the Ultimate Unicorn mutant breeds is created in a similar way. To get one, you need to breed your horses such that the baby has all of the following traits:

  1. A unicorn horn 
  2. Wings - large pegasus wings or small nightmare wings both work. 
  3. Flaming hooves from a nightmare 
  4. Large size from a destrier

Then, depending on the hide gene of the baby, a mutation may occur, causing the baby to get a new hide gene. The four mutant hide genes are as follows:

Red-Winged Blackbird



The Red-Winged Blackbird is a mutation of the destrier hide gene. Since the destrier hide gene is dominant over all the other normal horse hide genes, this is the easiest mutation to get. To get a different kind of Ultimate Unicorn hide gene, you need to make sure to get rid of those destrier hide genes from your breeding gene pool!

Blue Belle



The Blue Belle hide gene is the next easiest to get, since the pegasus hide gene is dominant over the nightmare and unicorn hide genes. If you want to get a Redrum or Rainbow Smash, make sure to remove all pegasus hide genes from your breeding pool!

Redrum


The Redrum hide gene is the next easiest to get, since the nightmare hide gene is dominant over the unicorn hide gene. Again, if you want to breed a Rainbow Smash, then get rid of those nightmare hide genes.

Rainbow Smash




Rainbow Smash is the most difficult breed to get in the Ultimate Unicorn mod. The unicorn hide gene is recessive to all the other hide genes (except the zebra). If you can create one, you are a true master breeder.


The Zebra




You can breed a zebra by trying to get a magical horse with no special traits - no horn, no wings, no aura, no big size, nothing! If you take the time to breed a zebra, you might even discover another easter egg (at least if you enjoy a certain Disney show featuring a secret agent platypus)....

Can You Get Hippocamp Versions of These Breeds?

Yes!  And here's proof!  Here's a Red-Winged Blackbird Hippocamp!



Cheat Codes

If you want to take a shortcut to get any of these horse breeds, check out the cheat codes on the cheats page.


Monday, September 28, 2015

The Hippocamp!

This past Saturday, Hippocamps arrived for Minecraft 1.7.10 and 1.8 in the latest version of the Ultimate Unicorn Mod (1.2.5).

This is what a hippocamp (or hippocampus) looks like:



The hippocamp is a magical horse breed that has the front quarters of a horse, and a fish-like back end.  It is amphibious, and can be found on the beach and in water biomes.  Even though it can move around on land, it swims better and can go quite fast in the water when it wants to.

Like any magical horse, you can tame a hippocamp and ride it!  Unlike other magical horses, you can ride it just fine in the water, and even dive down into the depths of the ocean with it.  And not only that, but if you're riding a tame one, he'll even keep you from drowning while underwater!  Note that your air supply will drop down to half it's full amount, but it won't go lower than that (the hippocamp can't be expected to give you all his air!)

The hippocamp is able to breed with other magical horses, and can pass on his water breathing and fish tail traits.  It is completely possible to get a magical horse that has a fish tail, horn, wings, flaming hooves, and large size (and even the cool ultimate unicorn hides).  Hippocamps can also be named and given the skins and abilities of the custom unicorns you and others have made!  Like this:




There are other new features in this update, like Spirit Trees and the Oracle.

So, what are you waiting for?  Go get the update!

Friday, August 7, 2015

Tales of the Wooden Oracle: Clade and the Golden Lance - Part 1

And so it was proclaimed: On the 4th day of the 3rd month of the Year of the Napping Ocelot, King Adaron and Queen Elena would marry, and their two kingdoms join hands forevermore. News spread throughout the kingdoms of Bryghuset and Tynaria and soon both lands were awash in great feelings - the nice happy lovey-dovey kind ... and the not-so-nice "ooh, why'd you invite those losers into my country" kind. 

It was on a Sunday morning that the news reached Clade, with a wicked--

Smack!

When he awoke, Clade found the morning news scroll lying beside his head, wrapped around a half-brick. He touched his injured head gingerly and cursed the news witch. Then, he unwrapped the scroll.

And like half the country, he exclaimed:

"The Queen!"

followed by, "Getting married!?"

and finally, "To him!?"

He read on, and discovered that the marriage ceremony would be accompanied by an immense festival in Tynaria's capital, with parades, games, entertainers, pegasus rides, and more! There would even be competitions: horse races, team flag capture, burly brawls (including mounted ones!), jousting, and aerial duels.

This improved Clade's mood considerably. He whistled and his mind spun, though a bit wobbly-like, thanks to the news witch and her half-brick.

"That's it. I gotta go. Just gotta go," he said.

He rubbed his hands together, an idea turning itself over in his head like a shiny gold coin. He definitely, definitely couldn't miss this.

Especially when there so much money to be made.

Thursday, August 6, 2015

Upcoming Ultimate Unicorn Release

I'm planning to put out another release in the next week or less, this one with some features that I'm pretty excited about.

In an earlier post, I mentioned how I thought the Ultimate Unicorn mod already has great potential for player-versus-player games. The upcoming release will expand on that, with a new gameplay feature and a collection of new items to support it.

Other things to look forward to include a couple of bug fixes, a new language translation, and of course, new custom unicorns. I'm also hoping to have a new wand ready to go, as well as a new mob. These last two might not make it into this release, though, but fingers crossed.

Lastly, the new feature that I'm putting in... it's definitely going to have a skill component.  I'll be posting information to help you understand just how you can beat your friends and enemies. 

Knowing how everything works will give you a big advantage.

Saturday, July 25, 2015

Poll: Your Most Requested Feature

What new feature would you like to see most in the Ultimate Unicorn Mod?

If you chose the "Something Else Entirely" option, let us know what you'd like to see in the comments!

Thursday, July 23, 2015

Unicorn News

Wings, Horns, and Hooves: The Ultimate Unicorn Mod passed 4000 downloads just the other day.  It's been out for 1.5 months now, so I consider that a great start.

In that time, we've included some great custom unicorns, fixed a lot of bugs, and added some new features.  You can see the custom unicorns in the Hall of Fame, and I recommend that you make one yourself.  It's a really cool way to get your own unique piece of a Minecraft mod that you can show off to your friends.

Wand of Dropsies

Among those new features is a new wand, the Wand of Dropsies.  This odd wand can be used to knock an item right out of your opponent's hand.  Is your mortal enemy trying to blast you out of the sky with his Wand of Call Lightning?  Target him with the Wand of Dropsies and watch him fumble his wand onto the ground!  Then grab it for yourself!

(For my non-English speaking friends using a translator on this page, "Wand of Dropsies" = "Wand of Dropping").

New Configuration Screen

We added a new configuration screen, so you can modify how often unicorns, pegasi, destriers, and nightmares spawn in your world.  There's also a handy config option to change what these mobs are named, in case you run a lot of mods and have name conflicts.  There's an automatic backup name for each mob type that is used if there is a conflict already, and you can see that in the config screen.

Wednesday, July 8, 2015

Demo at GameStart!

Today I demoed the Ultimate Unicorn Mod at the GameStart game programming school in Ann Arbor.  I've taken the kids to events GameStart has held in the past, and even enrolled my oldest in one of their Minecraft programming classes. It was a ton of fun for him, and a great learning experience.

After mentioning the mod to one of the teachers at GameStart, he invited me to give a demo, which seemed like a fun idea to me.  He even invited my son along, as well.

The Demo

I showed off the big features of the Ultimate Unicorn Mod, including all four horse types, and cross-breeding them to get even cooler magical horses.  One student asked, "Are there alicorns?" and I was happy to be able to say, "Yes there are," and bred one to show her.

Showing off the Pegasus flying was really well received, and the students also enjoyed seeing the Destrier bust down trees and pieces of the landscape.  My son, acting as my assistant, introduced the horses and their abilities, and I could tell he was getting a kick out of his first presentation.

The students also liked seeing the Wand of Call Lightning, especially when I equipped my unicorn with a slotted horse helm, stuck the wand in the horn slot, and commanded the horse to start blasting away.

One big highlight was when a knowledgeable student informed me that he had already seen my mod!  The main mod showcase that I've seen was by ManuCraft, and it's in Spanish, so I really didn't think US people (especially the small sampling of kids in this class!) had had a chance to find out about my mod.  Well, he told me he'd seen it in a YouTube video by a guy named Think Noodles.  I went searching later, and sure enough, the YouTube video exists!

I even received a programming question, which is always awesome.  A student asked me how I made the Pegasus wings look so great.  I answered honestly, and told her I'd copied some of the existing Ender Dragon wing animation code, and then modified it to suit my purposes.  I used my own textures for the wings.

Finally, near the end of the demo, a student asked me what my favorite magical horse was.  That's a tough question.  I could have gone with one of the custom horses, but I decided that I had to choose Rainbow Smash (you can see a picture of him here).  So many of the custom horses look great (and have cool powers to boot), and I like all of the Ultimate Unicorn mutant breeds, but I knew when I was designing Rainbow Smash that he just had something extra special over the other Ultimate Unicorns (sorry guys!).

Giving the demo was a wonderful experience.  Thank you, GameStart (and Jake, Connor, and Nate!), for giving me (and my son) the opportunity!  And thank you to all the GameStart students - I couldn't have asked for a better audience! 

Future Demos Welcome

I'm always happy to give a demo of any software I've worked on, and I'm especially proud of Wings, Horns, and Hooves: the Ultimate Unicorn Mod.  If you have an event you'd like me to talk about the mod, or some of the code that goes into it, contact me here in a comment, through the project site at CurseForge, or through Google Plus. 

Saturday, July 4, 2015

Custom Horses

Since launch, we've had a few Custom Unicorns designed and included in the mod.  You can see the entire list in the Hall of Fame.

I thought it would be cool to show some in-game pictures of some of these new custom designs.  Being able to create your own horse design, including choosing magical powers for it, is one of the coolest features of this mod.

Every time I launch Minecraft with a new set of custom horse designs, I can't help but to check them all out and see how great they look.  I imagine it must be even more fun for the people who have created them, especially knowing that all their friends can also load up that same design, even in multiplayer, even when playing on a server.

Here are a few of the new designs:

Khryseis

Evil Diamond

Shadowmere

And here are a few pictures of the new horse inventory screen, which displays each custom unicorn's magic powers and currently active magic effects.



You can design your own custom unicorn here!

State of the Ultimate Unicorn Contest

The "Find the Ultimate Unicorns" Contest continues, but there are only 2 secret horse breeds remaining to be found. People have found the following:

The contest has ended, as all secret horses have been found! Thanks to all who participated!


  • Zebra - Having no special traits (horn, wings, big size, etc.) causes this mutation to happen.

  • Red-winged Blackbird - Horn, wings (big or tiny), big size, and flaming hooves cause the Destrier hide gene to mutate to the Red-winged Blackbird hide gene.


  • Rainbow Smash - Horn, wings (big or tiny), big size, and flaming hooves cause the Unicorn hide gene to mutate to the Rainbow Smash hide gene.




The remaining two mutant breeds work just like the Red-winged Blackbird and Rainbow Smash breeds - except they mutate the Nightmare and Pegasus hide genes.

That's two more prizes remaining! Good luck!

Friday, July 3, 2015

Ultimate Unicorn Mod 1.1.1, now for 1.7.10!

Finished up and released version 1.1.1 of the Wings, Horns, and Hooves Ultimate Unicorn Mod early this morning.

The big news is that the porting to 1.7.10 is done, so lots of people can use it with their mods for that version.

Changes

There were other minor updates I put in, mostly tweaks to custom horse powers and bug fixes. I also made it so magical horses can breed with normal horses (and anything that subclasses them). In that case, the baby is a magical horse with the same DNA as its magical horse parent. This could be a useful way to clone your cool magical horses.

Update-Checking

I also added an update-checking mechanism, which is super important. Now, when I put out a new version of the mod, anyone who is using that mod can get a subtle notification that there's an update available.

New Custom Unicorns

Some neat new custom unicorns were added in this release as well, most notably the latest winners of the "Find the Ultimate Unicorns Contest". Go check them out in the Hall of Fame!

Get It!

Go get the mod here!

Friday, June 12, 2015

Contest: Find the Ultimate Unicorns!

Are you a master breeder? Can you discover one of the mutant Ultimate Unicorn breeds?

If you can, and can prove it, I'll give you not one, but two FREE decked-out custom unicorns! (As seen, here.) And by decked out, I mean you get to name it, choose the color scheme, get two new magic powers, and get a special winner title "the Highbred" (or one from the list if you prefer).

Give your extra to a friend or use it yourself, it's up to you!

How to Win

Take a screenshot when you discover one of the 5 secret breeds (One breed is not technically an Ultimate Unicorn, but it's a mutant, so I'll award a prize for it). Then, post your screenshot in a comment on the Minecraft Forum, by following this this link.

I will award the prize to each person who is the first to post a picture of a given breed. Also, you can only win once. There will be five different winners. I will congratulate each winner after he or she posts a winning picture, and announce the 5 winners at the end of the contest.

If I feel someone is not following the spirit of the contest (i.e. cheating), I may ask a question to verify if you actually found the Ultimate Unicorn breed using proper horse mating technique. Believe me, there are ways for me to verify if you've cut corners.

Good luck and have fun!

Thursday, June 11, 2015

The Unicorn Battle Royale

I needed to fix my mod (Wings, Horns, and Hooves, the Ultimate Unicorn Mod) to work on the Forge Standalone Server. I worked all that out last night, and to test it, I started up a Forge Server and jumped on to play with my son. What happened next was pretty awesome.

Battle Royale

We needed to test out the different magical horse abilities, as well as the magical items that I introduced into the game. The most important things to test included flying, wing buffet attacks, horn charge attacks, and the two wands. In particular, I wanted to test the Wand of Call Lightning, because I'd had to make some non-trivial changes to how it worked.

It wasn't long until we were shooting each other with magic wands, and blowing up horses that happened to be in the blast zone.

Getting hit with my fifth fireball, I decided to take to the air. I hastily equipped my newly-bred alicorn (pegasus with a unicorn horn) with a Diamond Slotted Horse Helm and a Wand of Call Lightning, jumped on, and flew into the sky.

He did the same, and soon we were dogfighting, whirling through the air and calling lightning down in vicious forks.

Flying in from above, I targeted him and called down a mighty lightning bolt on his head. Unfortunately for me, I crossed overhead a half-second later and was struck by the same bolt!

Wheeling, I got him in my sights again, and made the first airborn kill. I watched as his horse flopped lifelessly in the air, dropping him.

But we were in Creative Mode, so he didn't die ... and was soon back in the air, calling lightning down on my head.

It didn't take long until we ran out of mounts. Poor dead horses, you served us well. *sniff*

But this was no time to cease the battle! And that's when I got creative.

Cheat Codes

Using my calculator and my knowledge of my mod, I devised some cheat codes. I wasn't sure they would work, but I tried one out, and it did! Before long, my son and I had spawned 20 to 30 new zebra-skinned flying unicorns, and the battle was back on!

Eventually, the battle wound down and we had to turn in for the night. However, I thought that I should advertise the cheat codes. I've started posting them on their own page, but decided to leave discovering how to make the cheat codes work be an exercise for the player for now. Don't worry. I plan to explain it all in the near future.

Player-Versus-Player (PVP)

Our battle solidified an idea I'd had while creating my mod. Halfway through development of version 1.0, I'd thought, "Hey, this would probably be great for PVP minigames." Having played out our battle royale, it reinforces to me just how fun the mod is when playing in a PVP fashion.

I'm going ahead with future development with this in mind. Expect cool stuff to fight your friends with (and maybe play other cool minigames).

Edit: I realize our battle wasn't technically a "Battle Royale" - you need 3+ contestants for that. Just consider all the dead horses as contestants that didn't win.

Sunday, June 7, 2015

Wings, Horns, and Hooves, the Ultimate Unicorn Mod (for Minecraft)

My latest project has been to create a Minecraft mod using the handy Minecraft Forge mod toolkit and loader. I sort of started with a scattershot approach, making items, some new block types, and a new dimension.

Then my kid said, "Hey Dad, can you make a Unicorn mod?"

And I said, "You bet I can."

After going for a few weeks, I thought to myself, "Erg, I should check to see if there are unicorn mods out there already." Sure enough, there were.

So I differentiated mine.

Two months later, I have released my mod, and I admit to being proud of it. It's called Wings, Horns, and Hooves, the Ultimate Unicorn Mod and you can get it at CurseForge.

The mod features four new magical horse types (Unicorn, Pegasus, Nightmare, and Destrier) and a bunch of new specialized equipment for them. They have their own behaviors, they can interbreed, and there are a bunch of secrets you can discover. The secrets include one secret magic item, five secret special horse types you can find through the breeding process, and an easter egg or two. Over the next few weeks I'll document all of these secrets, but until then I'll leave them for others to find!

Oh yeah, there is also a cool magical horse customization option.

I haven't quite finished the documentation part of the project, but I'm getting there. You can find out a lot more at the following links:

Monday, April 13, 2015

Getting Your Computer to Make an Awesome New Magic the Gathering Deck

In my last post, I wrote about the Magic: The Gathering article over at Channel Fireball,

Magic Math – A New Way to Determine an Aggregate Deck List: RG Dragons by Frank Karsten.

Although I thought Frank's article was great, I'm not the biggest fan of the idea of building aggregate decks.  It's not that I don't like them as a possible tool for making a better deck, but rather that I don't find them terribly interesting.  They aren't new or different, just refinements on decks that have already been created.

What really excites me is the idea that we can use automation to plow new ground and discover great decks that no one has seen before.

I've done a little thinking on trying to use a computer to make a better deck that is also original. It's a Search Problem: you have many combinations of 60 cards, with the goal to find the optimal set of 60 cards.

Constructing a deck through computer automation is not a difficult problem.

The big problem is evaluating it.

How to evaluate a deck in an automated fashion? The best way is to play it a crap-ton of times against all the best decks currently in the format (including some tier-two decks, to suss out any sort of rock-paper-scissors type relationships between multiple decks). To best do that, you would want a good automated agent ... or to hire millions of MTG players.

To some extent, millions of MTG players are already doing this, which is how we find our tier one decks.  However, I think there are areas in the search space of all possible decks that are not being explored, and are in effect getting missed by our human blind spots.  We see the obvious synergies between certain cards, but there have to be some that we miss.  That's why I think this is so interesting.

No one wants to pay for a million MTG players to test thousands of computer-generated decks, some of which are bound to be losers.  We need an automated way to do it.

Possible Automated Solutions


1.  Find a heuristic or set of heuristics to evaluate the deck

"Heuristic" is just a fancy computer science word that means, "A simple rule to find an answer that is close enough, because doing it the correct, hard way would be too slow."

I love heuristics as much as the next guy, and I think developing a few simple ones could be useful for weeding out bad decks.  I'm thinking of things like checking the mana costs of your cards and comparing them to the land composition in your deck.  However, some of this stuff can just be programmed into your process in the first place.

Ultimately, I believe this approach fails because MTG rules are too complex.  When every card can have its own rules text, heuristics are going to miss too many opportunities for deck synergy.  In effect, I'm saying, "You can't simplify and expect to get a good deck."  Maybe you could get a good basic aggro or control deck, but I don't think you need a computer for that.

Also, you really just don't know how good a deck is unless you play that deck and get an actual win or loss out of it.

2.  Make an automated MTG game-playing agent

Making a good automated Magic player agent would be hard, but do-able.  You could write it to interface with Magic: The Gathering Online (MTGO) or another system.  You could even rig up some fancy learning Artificial Intelligence, or basic game-playing logic.

The hardest part would be coding up all of the game rules, and that would be a big task.  Your early attempts would surely infuriate many players with how badly they sucked (And I don't just mean sucks as in "loses the game," but sucks as in "stops playing altogether when it can't figure out Chains of Mephistopheles."

The second hardest part would be making it good, because MTG strategy ain't easy, especially when the number of different cards available is as large as it is.  This is somewhat mitigated if you choose a format with a reduced card pool, like Standard, but it's still hard.  Also, with so much hidden info, writing a piece of software to guess at card-draw probabilities, know about different deck archetypes (including the possible new territory that it is forging itself!) would be a real pain.

With much work, you could probably get something that approximated a human player, maybe even a pro.

However, even if you went to all that trouble, it's not the best (and by that I mean easiest) solution, even if it would be an interesting and worthwhile project.

3.  Make an automated agent THAT CHEATS!

An automated agent that can see all parts of the game state (thus being a big Cheatyface) would allow us an easier avenue to simulate absoluate perfect play.  Now when I write "all parts of the game state," I mean:

  • Hand contents of both players
  • Composition and ordering of both decks

Furthermore, if you wanted to simulate slightly more realistic play, you could hide some state, such as the deck contents of one or both decks.  This would help make the problem easier to solve (i.e. "tractable" in computer-ese), as opposed to trying to program in knowledge of deck archetypes, or something else that is inherently harder.  You could generate different sets of win-loss data based on how much cheaty knowledge was allowed, and this could enhance your analysis, including possibly informing you how "hard" a deck was to play (the more psychic knowledge it requires to consistently win, the harder it is to play).

And you could play two such agents against each other!

A large part of the effort would be implementing the MTG rules engine, and including the custom rules for all the cards in a given format. This is important, but not because you want the agent to be able to play the game.  It's important because you want the agent to be able to look ahead at future states of the game (life totals, permanents on the board, etc.), and pick the best one (i.e. the one that scores the best, based on optimal play by your opponent, and the resulting possible future game state).  Of course, choosing how to score a game state is another challenge, but not a terribly tough one.

Now, if I can just get Wizards of the Coast to give me programmatic access to their rules engine for Magic: The Gathering Online, I'll be most of the way there!

Hey Wizards, what do you say?!

Sunday, April 12, 2015

Magic: the Gathering and Computer Automation

I am an avid Magic: The Gathering (MTG) player.  A few days ago, a friend pointed me to an interesting article that combines MTG and math, and relatedly computers, which is what really interests me.

The article describes a process for generating a deck list based on all the best deck lists of a given type.  The idea is to use the crowd of the best examples to make a deck that is even better.  Check it out if you're into that sort of thing:

Magic Math – A New Way to Determine an Aggregate Deck List: RG Dragons by Frank Karsten

One cool thing about Frank's process is that it can be automated, and that's the part that really gets me going (and some people in the comments of the article have already done so, in fact).  That's because although I think his process is a neat idea, as with anything new, it can be refined and made better.

Automation can help with this refining.  Once automated, you can play with some of the rules of Frank's process (let's call it Process #1).  One such rule is a rule for breaking ties if you have two cards competing for a spot in the deck.  Frank states in his article that he just picked something easy to break these ties, which is to choose the card that comes first alphabetically.  Changing this rule is a refinement to the process, and creates Process #2.  For example, say you change the tie-break condition to be whichever card has a lower casting cost.  It's an arbitrary rule, and probably not a great one, but possibly better than the alphabetical rule.

And now we have a new process, Process #2, to compare against Process #1.  Since both are automated, we can use them to quickly make many new decks to compare and contrast against each other.  All that's left is to figure out which one is better, admittedly not always an easy task, but still we're one step closer to the best deck in the land (cue evil laugh)!

Automation is so great.

Saturday, January 10, 2015

Life Lessons and Reminders

As part of the Life Lessons series, it's important to be reminded when those life lessons will be needed.  To help with this problem, with the goal of not missing those critical periods in which each life lesson is relevant, I'll need to do the following:

1.  Figure out the earliest age at which each life lesson is relevant.

2.  Calculate the earliest date, using the answer to #1 and my child's birth date.

3.  Set a reminder that will hit me before the date from #2 arrives.

OK, #1 and #2 are pretty easy.  Technology should be able to help me with #3.

I use GMail, and thought it could send me an E-mail at a future specified time out of the box.  That would be the perfect reminder system, considering that I don't figure I'm guaranteed to be using any particular calendaring system.  However, upon further inspection, I'm not seeing an easy solution.  I see plenty of third-party solutions online, but I'm not interested in giving other companies access to my E-mail, or in paying a fee.

I see that there's a script that will integrate with GMail and Google Spreadsheets to give this kind of control.  I'll check into that, and get back with my solution.

Thursday, January 8, 2015

On the Tragedy of Life Lessons

There are many things I want to teach my kids, including life lessons.  Because I am a dad, this should not be surprising.  As I go about my day, it is not unusual for me to think about these life lessons.  However, my kids are still little, and most of the life lessons I think of are beyond their understanding or are otherwise not age-appropriate.

Bummer.

So, I make a mental note to remember to one day tell my kids about how to manage their money, or whatever.  As I do this, a part of my mind screams out.  It says:

"You!  Idiot!  You are going to forget this lesson!  The time will fly by, and the day will pass, and then it will be too late!  If you even remember, your kid will have already been educated by ol' Billy Bonehead, and learned all the wrong things, and good luck unseating all that crap."

And I don't do anything about it, but maybe resolve to really remember.

Double Bummer.  It is tragic, really.

Because I've already forgotten so many of those things.

So, one New Year's Resolution for this year: Write that stuff down.

As I think of them, I'm going to write those life lessons here, mostly to help myself remember them.  It's better than some old notebook, at least.

Tuesday, January 6, 2015

LEGO Mindstorms and the Case for Free Software

Looking back at my broken LEGO Mindstorms creation made me realize how much work I put into that little jerk.  Actually, he doesn't deserve to be called names.  It's LEGO that deserves it. They're the reason I had to jump through so many hoops.

Let me explain:

I inherited these LEGO Mindstorms from a friend who was cleaning house for a long-distance move.  These were the NXT 1.0 set, and NXT 2.0 was already out.  I have a household with two newish Macs, and it turns out that the Mindstorm programming environment for NXT 1.0 only runs on Windows and PowerPC Macs (i.e. old Macs that don't have processors made by Intel).  There's a ton of assorted updates to the software on the LEGO Mindstorms website, but none of them make it work on Intel-based Macs.

And here's the kicker: if you want the 2.0 software that will run on Intel Macs, you need to buy an NXT 2.0 set (or a software disk), which means shelling out a lot more money.  I wasn't about to do that.

I looked around for alternatives, and discovered LeJOS, which is a Java compiler and firmware for the NXT platform.  I am very comfortable with Java, so that was a big plus.

LeJOS required me to flash my Command Brick, but that turned out to be very easy with the provided software.  My key takeaways were:


  • The build files worked well enough, even though they were a little clunky.  The Ant ones worked with some fiddling, but the Maven ones didn't seem to work out of the box.  
  • Transferring my programs to the Command Block was easy.  
  • Support for the various functions of the sensors and motors was good.
  • Documentation was good enough that I had little trouble creating my programs.

All in all, installing LeJOS on my computer and Command Brick was a positive experience, and let me easily and quickly set up a development environment that worked with my LEGO Mindstorms NXT 1.0 set, all in a modern Mac-based computing environment.  That gets a big thumbs up from me.

However, that doesn't negate the fact that LEGO should make their Mindstorms brick-programming software free to download.  Not only could second-hand purchasers of Command Bricks then use it, but people with the older products wouldn't be left with crapware as computing evolved.  It also might just make a pretty cool standalone learning tool for people who didn't already have a LEGO Mindstorms NXT set, and convince some parents to invest in one!

Monday, January 5, 2015

LEGO Mindstorms and a Dead Robot

An old friend visited the other day.  Like me, he has kids, and is interested in exposing them to toys that breed creativity, especially ones with a technological bent.

In the course of talking about things like Minecraft, LEGOs, and the Hour of Code, I remembered that I had some old LEGO Mindstorms.  I pulled them out, including the robot I'd built a few years back.  Man, it's crazy to think how old these things are.

Sadly, my robot no longer works.  After replacing the battery, I found that there's a problem with the Control Brick.  Apparently, a piece of solder inside the Control Brick has cracked and caused the display to no longer function.  Searching Google, I found that this is a common problem with LEGO Mindstorms NXT V1.0, which is what I have.  I didn't have the time, resources, or gumption to fix the brick then and there.  However, I'm looking at it as a near-term project.  It'll be a good excuse to use the soldering iron, and it's not like I can make it much less useful.

It was a pretty cool little robot, too, even if it wasn't that sophisticated.  It used the sonar sensor to detect walls, back up, and change driving direction in the case that it detected an obstacle.  It also had the ability to back up and change direction if its wheels got caught and bound up in an unseen obstacle.  The sonar sensor was mounted on a motorized swivel, to allow for future expansion, with the idea that it might be able to do some primitive mapping.

All in all, he's a silly little robot, but worth saving, even if it's just to reuse his Command Block.

Sunday, January 4, 2015

Bots are Cool

As a software developer, I enjoy most things technology-related.  Lumped in that group are robots.  It's always fun to see a piece of hardware in action, especially one you can program.  And as an inquisitive engineer, I'm always looking for new projects.

How about a Robot?

What would really push my buttons is to create a robot.  However, robots require a money investment: you have to buy the hardware to make them work.  That whole money requirement is a downer.  It's not that I couldn't do it.  I just don't want to.  (In fact, I have done it in the past with Lego Mindstorms and leJOS, but my Master Block is currently borked.)

Software Bots

But software bots on the other hand... now there's something that I could get into.  No money barrier to get past, and a smaller learning curve in that I already have the necessary software background (i.e. no having to learn how to work with new hardware).

So, I know I want to start a project.  Where exactly to go with this?  What's a solid platform with which to interact with a bot?

I see two neat ones off the top of my head:

Blogging
Twitter

I'm not much into Twitter, but interacting with the API sounds like a fun challenge.  Just from a brief search, there appear to be plenty of options for which software tools to use to hook into the Twitter ecosystem.  I'll probably look for something in one of the following language flavors:

Java
Scala
C++

This could be a good excuse to try a new language, too.  I'll just have to look closer at the available tools, and jump off from there.

Stay tuned as I continue my journey to build my first Twitter bot!

Finally, a Use for My iPad - Codea!

I discovered Codea a week ago, and have finally found a use for my iPad.

For those of you who don't know what Codea is, here's the low-down:

Codea is a $10 iPad app made by Two Lives Left that lets you program on the iPad in the LUA programming language.  Codea provides lots of handy features, libraries, and examples to make game programming easy and quick.  You can find out more here: http://twolivesleft.com/Codea/

It's pretty darn cool, and I've been having a lot of fun with it.  Just downloading the app and installing it on my kid's iPad nabbed him a few hours of entertainment playing (and mucking with the code for) the example games.  It's enough to make a dad think that he might just succeed in turning his son into a code slinger.  In fact, a day later he said, "I want to be a coder, like Dad."  Awesome!

I haven't done a whole lot with Codea yet.  I've done my own experimenting with the different example game projects.  I have an idea regarding an example game that came with Codea.  It's an anagram game that involves unscrambling words from a given word list.  My idea is to turn it into a full-fledged spelling game that I can load with my kid's weekly spelling words.  I've taken the first step toward that goal in making the game download new word lists using an HTTP request instead of using a hard-coded list.  Pretty awesome feeling, just making that simple change.

I've also started a simple game project that allows the user to navigate a character around an empty field and shoot at enemies that spawn in random locations.  We'll see where that goes.  Even something as simple as this is enough to entertain my kid for a little bit, though.  And being able to tell him, "I did that today," is pretty cool.

Not sure where this will go, but I'm having fun.  Could it intersect with my bot programming project?  I don't know, but it's definitely a possibility.

Thursday, January 1, 2015

Blog-Hacking Bingo

Ever have your blog hacked?  I haven't, at least as far as I know.  The closest I've come is having one targeted by one (or more?) of those annoying spam comment spewers, and having to install captchas to filter it out.

However, an associate of mine thought hers had been hacked a few days back.  Our back and forth about it got me thinking about how you'd detect such a thing.

The most important thing is knowing your investigative tools:

Analytics

Got Google Analytics installed, or something similar?  If not, you should, and not just to troubleshoot weird behavior.  Hopefully you knew this already.  This is one of your key tools in determining if you've been hacked, or if you're just seeing innocent, yet strange, traffic where you don't expect it.

My associate noticed a spike in hits on an unlikely page of her blog, and that made her worry about a virtual break-in.

Now, let's break for a second.  I doubt her website was being attacked, because it is a low-traffic site.  In general, you're not at high risk if you don't have high traffic, because there's not a whole lot to gain by hacking you.  I suppose that adding your server to a bot net might be nice (or using it as a platform to launch more nefarious activities), but it still seems like a lot of trouble to go through.

There's lots of possible innocent reasons you're getting odd traffic behaviors.  Here's what to find the traffic's cause and reassure yourself.

Which Pages

Which pages are getting hit?  Anything special about those pages?  Got a custom form or custom programming on them?  If so, then this could be a vector for attack, especially if someone's trying to do an SQL-injection or other cross-site scripting attack.  If they're straight-up HTML, or a vanilla blog page like any other, chances are good you're safe.

Traffic Sources

Are these direct hits, or did they come from a referrer link?  If there's a referrer, then you have your explanation.  If not, then people could still be coming to your site via E-mail link, bookmark, or a link disseminated by some other media (e.g. paper).  Maybe an English teacher is using your blog in her classroom as an example of crappy writing, and all her students have come to point and laugh.

Count the Users

Are the hits coming from many multiple users or just one?  Multiple users indicates real people, or in the worst case, a bot net (or you're being targeted by the ANONYMOUS Hacker Collective and their legion of rampaging Guy Fawkes imitators).

Browser Variety

How about browsers?  Is there a nice spread-out distribution of browsers, and not just one (e.g. FireFox 4.0.1, IE 12.5.666, etc)?  If there are many, then it's probably innocent.  One browser could indicate a piece a software masquerading as a browser.  All your users could use one version of browser, but that's really unlikely.

Blog Software Vulnerabilities

Are you hosting your own blog, or using a service?  If you're hosting your own blog, you have a lot more to worry about when it comes to securing your site.  In particular, you should make sure you're using the latest version of whatever blogging software you have installed (e.g. WordPress), and keep an eye out for vulnerability notices on the blog software's website.  Make sure you have a decent admin password as well (not the default!).

Custom Software Vulnerabilities

Lastly, do you have custom scripting on your site that is being accessed repeatedly?  If you do, someone could be trying to find a vulnerability in your code.  In particular, that person could be trying to exploit an SQL-injection vulnerability (or other cross-site-scripting vulnerability) you or one of your developers inadvertently coded in.  To avoid this, follow good security practices when developing custom scripts for your site.  Here are some resources that can help out:


There are certainly many possible innocent reasons that you're seeing a strange traffic pattern. Answering some of the questions above might help you figure out what's actually going on.