Getting Started With Monkey-X

If you have been reading any of the previous posts in this blog, you know that I have been creating games over the last couple years using a programming language called Monkey-X. It is a nice straightforward language based on Basic. Today we will go through some of the strengths Monkey-X offers and how to get Monkey-X setup on your computer so you can start creating games with it too.

Why Use Monkey-X

One of the main reasons I use Monkey-X is that I have found that for some reason I am a little extra productive in it. I don’t know if it is the simple language syntax or the ease of creating a build of the game and testing it for fast feedback. It’s probably a combination of the two and a few other things.

Additionally there is a great little community built around what is referred to as the Blitz Basic family of programming languages (the language Monkey-X came from). Guides, how to’s, a forum, and at least 1 Youtube playlist to help you get started and help you when you get stuck.

This community has also developed plugins and libraries to help you take care of some of the more routine functions and tasks that you will be performing as you create games. We will discuss these later on.

One of the more powerful reasons I even looked into using Monkey-X at all is that it builds to tons of platforms. All the major desktops (Windows, OSX, Linux), HTML5 for web, mobile (Android and iOS), even XNA so it can run on an XBox, as well as PSM for the Playstation Vita.

The final reason it is good to get started making games with Monkey-X is the cost. It is completely free to download and make games for the HTML5 target which is perfect for a beginner. And when you are ready to upgrade to build to more platforms, the Pro version is fairly inexpensive (~$40 USD at the time of this writing). If you want a little more, there is a fancier IDE and some other addons you can purchase as well.

Installing Monkey-X

Monkey-X runs on pretty much any desktop OS. Whether you are using Windows, OSX, or Linux you should be able to install Monkey-X and start making games.

Installing Monkey-X On Windows

  1. Visit the Monkey-X website and create a free account. You will need this to get the download.
  2. Sign in and visit the Monkey-X download page and download the free version of Monkey-X (or the pro version if you have purchased it). Hint: the free download is at the bottom of the page.
  3. Unzip the downloaded folder and put the files wherever you want.
  4. (Optional) Right-click the Monkey-X executable file and create a shortcut to your desktop to make accessing it easier

Installing Monkey-X On OSX/Mac

  1. Visit the Monkey-X website and create a free account. You will need this to get the download.
  2. Sign in and visit the Monkey-X download page and download the free version of Monkey-X (or the pro version if you have purchased it). Hint: the free download is at the bottom of the page.
  3. When the file has finished downloading, open in Finder and drag it to the Application folder. NOTE: You may need to change your systems security settings to allow apps from anywhere to be installed in order for it to work.

Installing Monkey-X On Ubuntu

For now I am just going to leave a link to this post someone in the Monkey-X community created for installing on Linux. If I get enough requests, I will do a walkthrough myself on setting up Monkey-X on a fresh Ubuntu install. If you would like that, shoot me an email.

Where To Look If You Get Stuck

If you have any trouble a few good places to look for help are the Monkey-X forums and sites like Stack Overflow. Also, you can email me and I will try to help you get up and running with Monkey-X.

Tutorial Part 2

Secret of Success: Get Enough Sleep

This past week I traveled for work and somewhat disrupted my regular sleep and work schedule. I ended up staying up a little later but still getting up at the same time.

To cap it off, Friday I stayed up until about 1 A.M. and then got up at 6 A.M. to drive home. On Monday when it was time to go back to work, I was feeling exhausted all day and had significant trouble getting work done for my job and got zero writing and programming done for myself.

Thankfully by Tuesday, I was feeling much more rested (in spite of getting up at 5:15 A.M.).

Some People Don’t Do Well Because They Don’t Feel Well

If you are tired and not feeling 100%, you usually do not do your best work.

You probably do not feeling like working either.

It is hard to be creative and solve problems if you are exhausted.

Sleep Tips

Here are a few tips that are likely to be relevant to you, especially if you are into programming and/or video games like me.
You might already know some of these, but a reminder is always good.

  • Exercise: Getting some exercise in everyday will help you sleep better at night.
  • Get Sunlight: Going outside and allowing your eyes to have natural lighting will help you sleep better at night. In some places and for some professions that don’t get sunlight much, a special kind of light for therapy is often used to help.
  • Avoid Screen Time Near Bed Time: Many studies have shown that we have trouble falling asleep and getting good quality of sleep if we are using screens that shine light directly into our eyes before we try to sleep.
  • Mind the Caffeine: Personally I usually try to avoid caffeine because I can be a little sensitive to its effects and I am not a big fan of the crash that comes a day or two later. Even if you only start the day with coffee or some other caffeinated beverage, it can still effect your sleep that evening.
  • Cool It Down: Cooling the temperature in the room will help your body relax and fall asleep easier.

How Do You Feel?

One of the key indicators for whether or not you are getting enough high quality sleep is how you feel in the morning.

Do you wake up ready to get out of bed or are you hitting the snooze button 7 times?

If its the later, try some of the tips above and even search for other ways to get the sleep you need.

Success Is Difficult If You Don’t Have The Energy

Fear

As I sit to write this post, I feel small twinges of exactly what I am writing about. Fear that it is pointless to write this and that it is a waste of time. But it needs to be written because Fear is exactly what will keep you from making a great game or doing anything great.

Another Name

Another name for Fear that has been given is the Resistance. Most of the people I have heard use this term reference a book called The War of Art by Steven Pressfield. I have written a little about this Resistance before, but I think it is such a major factor in holding people back, myself included, that it needs to be readdressed occasionally.

Common Fears

In one of the classic books on success titled Think and Grow Rich, the author list 6 categories of fear that most fears can be grouped under.

  1. Fear of Poverty
  2. Fear of Criticism
  3. Fear of Ill Health
  4. Fear of Loss of Love
  5. Fear of Old Age
  6. Fear of Death

Today we will look at the fears of poverty and criticism because they seem to be the most likely culprits in keeping creative people from doing great things.

Poverty

Fear of poverty is characterized by things that keep you poor such as worry, doubt, indecision, and procrastination. It makes you overcautious and unwilling to take the risks which you need to take to become richer. And often the risks are not really risky at all. It turns out it is usually more risky to keep the status quo than to make the changes necessary to achieve success.

Criticism

For writing and making games especially this is a big one. I think it is the one that keeps me from wanting to hit the publish button every time I write a post and that keeps me from wanting to show someone a rough version of a game.

You are not likely to become poor from writing for free on the Internet or from showing people the games you are making. However, you are likely to receive some criticism, especially if you have any sort of audience. It is impossible to make everybody happy. But often the criticism comes from people whose opinion of us does not matter. As far as games are concerned, criticism is exactly what we need. We need fresh eyes to take a critical look at our games and we need the criticism and insight that they offer.

There is a fairly well known quote from Theodore Roosevelt that says

It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat.

What Do We Do?

There are a couple of ways to get past the fears. One is to talk about them, they hate that. The part of your brain that likes to bring up fears does not like you to look at them directly and consider the worst outcomes and the likely outcomes.

Another way is to ask good questions. What is the likely outcome of performing this action? What is the worst outcome? Who might criticize me and do I care that they do? Who am I helping by doing this? Start asking yourself questions about why you don’t want to do something.

A final way of getting past fear is just make what you want to do a must and turn it into a habit. Every day you will do this thing. It helps to make it the first thing you do when you get up.

I hope this help you get past some of your fears that are preventing you from writing that blog post or showing someone the game your are working on.

Use a Sharpener

While reading through Clean Code today, I was surprised to reach the end. Even though there were 80 or so pages left in the digital version of the book, they were all appendix and index. So today is the “what have we learned day.”

Keep It Sharp

One of the most common stories about self improvement is the story of the man felling a tree. Usually this man has a saw or an axe and is working very hard but making little progress. A friend comes by and notices the tool is very dull. When this is pointed out, the man felling the tree usually says that he does not have time to sharpen his axe because he has to get this tree down. Most people can see the irony that if he would spend a little time keeping the axe sharp, the tree would be down quicker.

This is the point of reading books and doing other forms of continuous education. As creators and designers we need to keep our skills sharp so we can be more effective.

Fragrant Code

The essence of Clean Code is summarized nicely in its last chapter called “Code Smells.” It gives a list of heuristics of “smells” that, if you find them in your code, can be warning signs of poor code design.

Importance of Clean Code

One of the most beneficial things that I have gotten from learning how to write cleaner code is being able to come back to code I wrote a week ago and more easily pick up where I left off. Sometimes life happens and I don’t get the opportunity to work on my games every day. And one of the things I noticed as I was reading this book was a lot of the time as I tried to make games quick and with my limited time, I sacrificed a lot of code cleanliness.

And this is ok. But what I did not do, and what is very important to do is go back and clean up or refactor that original code. Otherwise your pace will start to slow down as you dig through to find what that function does and have to rewrite that other one to handle some new case. You will be trying to chop the tree down with a dull axe.

So Sharpen Yourself

Knowing that you need to stay sharp doesn’t do a whole lot. You have to actually take the time to read, to watch and to learn. If you write any code at all, I would recommend reading through Clean Code if you haven’t already. And if you have, read it again.

Even if you never plan on writing code, just the principles that help keep code clean will help you keep designs clean.

10/10 Would recommend reading.

July 2016 End of Month Goal Review

It’s August already. Where has this year gone? Lets take a look at how I did in on my goals in July.

Goals

  1. Write 3 Blog Posts Per Week and Publish 2 – I wrote and published exactly 5 posts in July. The writing goal was 12 and the publishing goals was 8. This is why it is important to check the numbers every so often. I am clearly not hitting my writing goals.
  2. 1 Game Designed, Created, and Released Per Quarter – The rough draft of a card game was made (Design) but no further work has been done on it. I have been steadily working to finish multiplayer for Drone Tournament (Game #2 of 2016) instead, and I have been making good progress. Some of the server side code could be cleaner but it is almost an MVP for play testing.
  3. 1 Book Read Every 2 Months on Game Design – Still making my way through Clean Code, in fact I just read a few pages before writing this. On page 340 out of about 460 pages so 75% done. Making good progress actually and the principles in it have been invaluable in improving my code for my games and also for my day job.
  4. 1 Article Read Or 1 Video Watched About Game Design/Creation Per Week – I don’t actually remember July that well as far as this subject goes. I do remember listening to some podcast episodes on a new podcast I found, but other than that not much.
  5. Get 100 People Reading Evolving Developer Per Month – I have noticed a couple people have followed links from a forum post I did linking to a tutorial on how to handle a certain camera interaction. Maybe more of these kinds of tutorial posts that teach something useful and actionable and that deal with specific problems are what I need to be doing.

What Went Right

Drone Tournament multiplayer is coming along steadily and is almost done. My code is getting cleaner and I am on track to finish reading book #2 of 2016 on the schedule I set for myself. I am getting a tiny, tiny bit of traffic to a certain article that solves a specific problem. Bonus thing that went right is that Monkey-X full version dropped its price to about $40 instead of $100. I was already thinking about getting it and this makes it an even easier decision.

What Is Not Perfect Yet

My writing volume was at less than half of my stated goal per week for July and my publishing of that writing was only slightly better than half. Game #2 was not released on time and is not yet finished. I did not keep track of the articles and videos I watched on games and game design so I don’t remember if I hit my goal or not. And still don’t have even 1 daily visitor to my blog.

Corrective Measures

In order to keep writing volume up, instead of starting every day with coding on the current game for the quarter, I will start everyday with at least 15 minutes of writing. In order to get Game #2 finished, the writing will be followed by at least an hour of designing and coding the finishing touches on the game. I start keeping a list of every article that I read and video that I watch on game design in Evernote to refer back to later to see how I am doing. And finally, I will begin writing more tutorial type posts and sharing them in the Monkey-X forums for people to use.

More Progress Mixed With Difficulty

Game Devs Like You

One of the many things that my studies in success have consistently directed me towards is forming a Mastermind. The word may sound fancy but it is simply the idea of 2 or more people who meet together to share advice and ideas.

In game development especially, a mastermind would be extremely helpful. Sharing resources, pitfalls, and ideas in something so complicated is extremely beneficial to all involved.

So a few months ago I started looking into this a little more seriously. I have not found or formed a mastermind as yet, but I did find an opportunity to join one remotely.

Gamekedo

Gamekedo is a game development club organized by Chris DeLeon. They work mostly in Unity and work together to make games.

The club has monthly dues but for someone just starting out in game development it sounds like a great opportunity (especially if you are interested in Unity).

Game Devs Like You

In addition to the club, Chris also runs the Game Devs Like You podcast in which he interviews people in game development. I have only listened to the first couple episodes so far but they are fantastic. The first episode is with a game dev who is only 12 years old (what’s your excuse?).

It is an encouraging and informative podcast and I will be adding it to my Ultimate List of Game Development Podcasts

If you don’t already have a group to discuss games and game design with, consider looking for one in your area or online.

Web Design – the Skeleton Framework

This week we are taking a small break from our regular theme of games and looking at web design, specifically at using the Skeleton framework. Something that I learned from The Art of Game Design is that learning better design principles from any kind of design will help your game design.

Why Are We Talking Web Design?

I had my phone out and was looking up a certain kind of local businesses around my area and found that there were only a couple. When I clicked the link to their websites I found that they were not ready for phones. I had to pinch and zoom and scroll around the page. The information was there and the navigation was clear but it was just not designed to work on a phone.

Since I had been meaning to learn better responsive web design in an effort to increase my value as a web based programmer (my current day job), I decided I would take one of the sites on as a project. So I completely redesigned the whole site and made it mobile responsive. I was proud of my work and asked the opinion of a coworker who is very good at design.

He made a simple suggestion that took the redesign to another level.

Adding a Skeleton

My coworker suggested that I add a CSS Grid system to the site and recommended Skeleton. I had never heard of it before and decided to check it out.

One of the most common CSS grid frameworks is Bootstrap. Many people who have looked into modern web design can pretty quickly identify a site that uses one of its templates or something like it. I have tried learning more about Bootstrap in the past but always found it a little murky and never made much headway in understanding what it was trying to do.

Skeleton is a very light CSS framework that allows you to get started applying a grid system to your website design with just a few classes. It is pretty clear what it is trying to do, and it sort of self documents by example on their site. I found it extremely easy to get started with.

The grid is basically rows and columns. You then use these 2 building blocks to create a cohesive design that is more aesthetically appealing. Additionally it helps organizes the information that is being displayed to be more easily consumed by the user.

After applying Skeleton to the site, it looked 1000% better (in my personal opinion).

Lessoned Learned

Many of the principles of grid systems, such as cohesion, can apply to games and most importantly to the part of the game that the player interacts with, the interface.

Every game has some sort of interface that the player uses to play the game. We as game designers should take things like grid systems and learn to use the principles that they are based on to improve our games and their interfaces.

Don’t forget to look for inspiration in all design.

10 Things Analysis: Texas Hold’em

It’s been a while since I did a game analysis and since Game #3 for 2016 is going to be a card game, I decided to take a look at one of the many card games I enjoy, one that is been around for a while and played worldwide. The game I chose is Poker, specifically the Texas Hold’em style.

How I Know the Game

I had seen some Texas Hold’em played before on TV during the World Series of Poker (WSOP, which incidentally has been going on for the past few weeks), but had never played it myself and didn’t really understand it until a couple years ago.

Some guys at work where having a little home poker tournament and a friend of mine invited me to come play. I didn’t know the rules so he taught me the basic rules and then I proceeded to watch the coverage of the prior 2 years of WSOP on Youtube before the tournament to prepare.

I didn’t do all that well. And although I lasted longer than my friend, I did not have a strategy for how to win.

About 8 months later I happened across a Twitch streamer named Jason Summerville who was streaming poker of all varieties every evening and I began to watch and listen. After a couple months of watching him and about a year after my first time playing Poker, the guys at work scheduled another tournament.

Again I watched WSOP, continued to watch Jason, and played some practice games with a Poker app or 2 on my phone. This time I ended up coming in 2nd place out of about 20 guys after some real close calls. It was often and I am smiling now just thinking about it.

On to Analysis

Many of these things will actually apply to all kinds of Poker but I am mainly looking at the Texas Hold’em, tournament style.

Goal

The goal of the game is simple, win all the chips. In a tournament, typically all the players will start with a similar number of chips and if you lose all of your chips you are out.

Rules

You play the game with a standard deck of playing cards. You can play as long or as short as you want and in a tournament this is usually until one player has all of the chips. The game is played in hands and each hands has several rounds of betting. Whoever wins the hand gets the chips that where bet by the various players.

You can find a more detailed description of the rules here.

Interaction

Players have 2 basic ways to interact with each other. The most obvious is through betting. When you bet it forces your opponents to make a choice of whether to fold (let you win), call (match your bet to continue playing), or reraise (force you into this decision by putting more chips in). Also the size of your bet gives your opponents information about how strong you think your hand is, or how strong you want them to think it is.

The other less obvious methods of interaction is through table talk and nonverbal communication. Good players can read body language fairly well and can even fake body language giving their opponents false information.

Catchup

One of the things about poker is that you can come from behind and win. This is usually done from “doubling up” or doubling the amount of chips you have by going “all in” and betting all of your chips that you will win. However like all catchup features, it has risk. If you lose the hand when going all in, you are out of the game.

Inertia

Each hand has 2 blinds, a big blind and a small blind. These players have to bet certain amounts each hand. This responsibility rotates around the table by one seat after each hand. The blind is also usually the minimum amount of chips you have to raise by if you want to raise. Most tournaments have the blinds increase every so often to move the game towards completion.

Surprise

Poker is full of surprises. This comes with any game that has randomness and hidden information. For Texas Hold’em you are surprised by the cards that are revealed each round and by the cards your opponents have.

Strategy

Despite the randomness inherent in a game like poker, it is full of strategy. How else you several people consistently make a living at it? Most of the strategy comes down to playing the odds and playing the other players. There are books and websites dedicated to how to play poker well. One of the great things about poker is that it is unlikely that you will ever be able to play perfectly.

Fun

There is a ton of fun in poker. Every time you put the pieces together of whether you can beat your opponent or not based on the limited information you have it is awesome. It is like one puzzle after another and can be kinda rewarding.

Flavor

This one is tough. I am not sure that poker has a flavor and that is OK.

A Hook

In a word, money. This is what gets most people into any sort of gambling game to begin with. It is a powerful hook and can lead some people into spending too much money on the game.

Final Thoughts

There is actually an interesting crossover between people who play Poker and people who play Magic the Gathering (like me). And like MTG, Poker is a very fun game and there is a lot of strategy to be found in it. It has most of the elements of our 10 things list and is not surprisingly very popular. If you have never played before, I recommend giving it a shot. Although I will add that you probably should not play for real money (at least not at first and never more than you can afford to lose).

Have fun making games that stay popular like Poker.

Game 3 of 2016 Design Notes

It is now well into July and the 3rd quarter of the year. Game 2, “Drone Tournament” is not finished yet as the multiplayer still needs more work, but I have a schedule to keep.

Since the beginning of the year, I knew I wanted to make a simple card type game this year. I really enjoy many card based games like MTG, Poker, Munchkin, Duelyst, and Cards and Castles and want to begin coming up with ideas in this area.

The Game

The design right now is based around some of the core mechanics from MTG with some of my own flavor and rules tossed in. Additionally even though I have not played Hearthstone directly, I may borrow some of it’s mechanics as well.

Goal

The goal is to reduce your opponents character life total to 0. Pretty straightforward. This will be accomplished through attacking with your various creatures and abilities.

Rules

For this game, the rules need to be spelled out pretty clearly since it can ostensibly be played 100% on paper and no computer is needed. The following rules may change.

Each player chooses a character to represent them in play (those familiar with MTG Commander or EDH this would be like a commander but also like a Planeswalker). This character can be attacked by opponents creatures and targeted by their abilities.

Each player takes a turn that sequences as follows.

  1. Renew Resources – resources that have been used are untapped then you draw a card
  2. Status Effects Happen – any status effects that are on creatures or players apply during this phase
  3. Main Planning – players play new creatures, increase their resources, use abilities, play equipment, and modify creatures during this phase
  4. Combat – players attack with creatures and or their character during this phase
  5. Secondary Planning – same as Main planning
  6. Turn Ends

Again these rules may change a ton.

Interaction

Players can do all sorts of interaction with their opponent by attacking, blocking, and using abilities to disrupt their opponents plan.

Catch Up

The game is not over until it is over. Their will be abilities that can bring a losing player back into the game and some that can help stabilize a losing situation.

Inertia

The steady increase of available resources will unlock the player’s ability to use more powerful creatures and abilities which will bring the game to and end sooner. Considering implementing the Cards and Castles rule that when a deck runs out of cards, the player’s life starts decreasing slowly.

Surprise

Hidden information games always contains surprise. In games like this there are 2 main areas for surprise. First your own deck. You do not know what you will draw each turn and in what order. Second your opponents hand and deck. You do not know what he has planned for you.

Strategy

With deck building, strategy comes into giving yourself a good percentage to draw a sequence of cards that can be used to win the game. This skill can improve over time. With play involving hidden information like this, the strategy becomes making the play that gives you the highest chance to win with the resources that you have available and might become available later.

Fun

I am borrowing the fun from several other games so I expect this game to be fun as well. If the art of game design is to be believed, fun is just problem solving with a playful attitude and a little surprise mixed in certainly helps. This game is all about that.

Flavor

The flavor is sort of going to be borrowed from one of my favorite RPG’s called Geneforge. I plan on asking the creator of the game if I can use the flavor directly but if I can’t I will still use the ideas, just flavor them slightly differently.

A Hook

This one is actually gonna be kinda tough. There are so many TCG’s (Trading Card Games) out there that occasionally I see one and think to myself, “not another one.” But I am also hopeful about some. Regardless, I think the hook will have to be something along the lines of strategy, deck building, and defeating your enemies with your awesome monsters.

Final Thoughts

While I don’t necessarily think this game will be a huge hit, I am excited to try to make a card game with a pile of mechanics that I think might be cool. It’s not a bunch of new stuff, but it is a different mix.

If you can’t think of new things to make, try mixing old things.

June 2016 End of Month Goal Review

June was actually pretty good.

Goals

  1. Write 3 Blog Posts Per Week and Publish 2 – After getting a list of post ideas written down, it was much easier to get post written ahead of time. Additionally I started the habit of writing down ideas as I get them to keep building the list. Still not up to 3 per week but 2 has gotten much more consistent.
  2. 1 Game Designed, Created, and Released Per Quarter – Game #2 for 2016, which is tentatively titled Drone Tournament, is nearing a working multiplayer state. A basic single player version is done (needs polish) and the gameplay seems kinda fun. I am going to finish the coding for the multiplayer version as I work on the design for game #3.
  3. 1 Book Read Every 2 Months on Game Design – Selected Clean Code as the next book. It has already been useful in laying out the code for the current game. Making good progress in reading it and should finish it by the end of July.
  4. 1 Article Read Or 1 Video Watched About Game Design/Creation Per Week – June article reading and video watching was primarily focused on generic programming improvement. I don’t remember actually watching any videos focused on game creation and design but I did watch some games that were new to me be played on Twitch and got some ideas from the design of the games.
  5. Get 100 People Reading Evolving Developer Per Month – Well at least 20 other people have now heard about Evolving Developer. Consistently getting traffic is still not happening (that I know of) but I did hear some interesting advice that it might take 2 years of blogging consistently to gain traction.

What Went Right

  1. Writing was more consistent and had some good ideas for posts.
  2. Picked up some good programming habits to keep my code clean and make my games better.
  3. Found Book #2 for the year.
  4. Game #2 is fun and multiplayer is coming along.
  5. I got my blog in front of several people.
  6. I started some good disciplines to help me be successful.
  7. Got an idea for a new game.

What Is Not Perfect Yet

  1. Multiplayer for Game #2 is not done and the game is not as polished as it should be.
  2. Writing volume is still well below what I would like it to be.
  3. Need to find an game artist and sound artist or find somewhere to purchase these assets.

Corrective Measures

Get a little more consistent with my daily habits for writing and programming. Find game development forums and such where artists and sound engineers might frequent and listen in. Find some asset stores where I can get graphics and sound inexpensively for my games.

Question to ask yourself

“How much value do you create for others?”