Learning Angular 2 and Typescript – Part 1

Out of a desire to learn Angular and building on what I have learned about MeteorJS, my current game is using Angular 2 and Meteor together. It does not get fancy and utilize all of the special features that these frameworks have to offer, but it is a good learning project.

So Popular

If you are new to programming or to web programming, a few years ago Google released an experimental framework called AngularJS that has become quite popular. It has become widespread enough that it is hard to ignore.

Currently, there is a new version of AngularJS that is in the works, simply called Angular 2. This caused a bit of stir since it is fairly different from Angular 1 and those who invested heavily in 1 will have to do a good bit of rewriting to migrate to 2.

Meteor, the Javascript framework I have been learning that builds to mobile devices easily, has been integrated with Angular 1 through the Angular-Meteor Project and integration with Angular 2 is in beta.

Some Angular 2 Basic Concepts

Components

As far as I can tell, Angular is about creating “Components” which I have come to think of as Lego-like pieces that you use to build your website or app.

For example, in the game I am building each section has a list of choices available. So I built a ChoiceList component and simply stick it into the page using an html tag that I assign to it like this:

<div>
This is a story with choices
</div>
<choice-list></choice-list>

And the <choice-list> tag will render the template of the ChoiceList component which gets a list of choices from the database and builds a list of stylized divs that look like buttons.

Data Binding

There is a lot of phrases that get thrown around when dealing with angular and one of them is “2 way data binding”.

This is a short way of saying you can tie an input directly to a component property or variable and when the input changes it immediately updates the property of the component. That is the first direction, from the View to the Controller. But then you can have a separate View element that uses the property that is getting changed, and it is updated automatically whenever the component property is changed.

If you were writing regular javascript you would need to add listeners and events to create this kind of behavior, but in Angular 2 it is simply using a banana in a box “[()]” (yes that is what it’s called).

A practical example of this would be a mortgage calculator that had input fields for a price, a down payment, and a interest rate and calculated a monthly payment. 2 way data binding would let you update the payment automatically anytime one of the 3 input fields changed. It would send the value back to the controller and then update the view accordingly.

With Meteor, we actually get “3 way data binding” because it has reactivity built in and can update the Model layer and have that reactively percolate up to the View and from the View down to the database (Mongo in this case).

Typescript

Angular 2 is trying to use a bunch of features that are coming for Javascript, but have not quite arrived yet. Typescript is one of the current recommended solutions to this.

Developed as an open source project by Microsoft, Typescript is a language that compiles to ES5, the current accepted Javascript standard that most browsers work with. It has really similar syntax to Javascript and is easy to pick up and learn.

Some of the features that I have found useful so far are the ability to check type parameters and to define your own Interfaces which describe what you are looking for in an object. So if you have an interface that looks like:

interface Choice {
page_name: string;
result_page: string;
}

You can use it to set variables to a Choice type so that they will need to be objects with a page_name property that is a string and a result_page property that is a string.

Nothing New

Although most of what I said here has been said better or clearer in other places about Angular 2 and Typescript, writing about it allows me get a better understand what exactly is going on when I write the Typescript to make a new Angular 2 component. I plan on getting into some more specific parts of Angular later on. For now, just a little overview and what I have found interesting.

If you haven’t looked into it yet, try out Angular.

February 2016 End of Month Goal Review

It is March already and that means it is time to review how I did on my goals last month.

Goals

  1. Write 3 Blog Posts Per Week And Publish 2 – Again publishing has been mostly on schedule. A couple of posts were a day late, but I have a queue of 1 ahead of schedule right now so, progress. Yeah!
  2. 1 Game Designed, Created, and Released Per Quarter – Much better idea of how it is going than I did a month ago. Game design, though poor, is done. Game creation got a lot of work done on it. I have been reading tutorials, watching tutorials, and searching error strings on Typescript and Angular 2. It is an experimental technology, but it is an experimental release. A good learning experience overall. Figuring out how to release it to the Google Play store is going to be interesting. Much more programming went on in February than January and still more will need to go on in March. It is surprisingly complicated for a simple game.
  3. 1 Book Read Every 2 Months On Game Design – Very slow going this month. As I ramped up working on my own game, reading about design and such fell off. Also, I spent a fair amount of my reading/learning time on personal development instead of game design as I attempt to become more consistent on getting things done.
  4. 1 Article Read Or 1 Video Watched About Game Design/Creation Per Week – You can read about most of it in this post that I wrote summarizing what I found and this post about Game Balance. It was not 1 a week. It was more like batched for the month in the first week or 2. I did get at least 1 per week done however. Now I just need to find some articles for March.
  5. Get 100 People Reading Evolving Developer Per Month – Absolutely nothing done with regards to this goal this month besides keeping the blog updated. This is an area that I need to study. I may even write a post about it this month and try an experiment or 2.

What Went Right

I was able to make a lot of progress on the code for Game #1 of 2016. Learned a lot about the new technologies of Typescript and Angular 2 and how they work. Learned a lot about game design. Got 2 post published every week and am 1 ahead of schedule even with a traveling weekend. Most importantly, I discovered some philosophical and mental ideas for how to be even more consistent and productive.

What Is Not Perfect Yet

At this point I should be play testing my game, not still building it. I still do not have a strategy or plan of any kind for getting people to read the blog.

Corrective Measures

Create a SMART (Specific Measurable Actionable Realistic Timebound) goal list for the creation and release of Game #1 of 2016. Study how to attract a community of readers and how to create value for them. Perhaps even find a course.

March Marketing Madness Begins!

Why Are You Hesitating To Invest In Yourself?

This past weekend I went to my local bookstore that lets you buy, sell, and trade. I really like to read and had a few fictional books that weren’t that great so I traded them in and went looking for some new reading material.

There were several books on the shelf that many of the successful people I follow have recommended. These books were not all that expensive, many of them less than $10. But for some reason, I found myself hesitating to buy them.

My hesitation was not because I have 4 or 5 books on my desk that are only half read (because there are). The hesitation came because of the price.

Should I spend $30 or $40 on these books?

The problem begins with the wording of that sentence. It should read – Why am I hesitating to invest $30 or $40 dollars in myself?

I was reminded of this video by John Sonmez of SimpleProgrammer.com

As soon as I realized how completely stupid I was being worrying about a few dollars when the information in the books is probably worth hundreds and thousands over the course of my life, I bought the 2 books I thought would be most useful right now and will be back for the others later.

Why do we not blink when we spend $3-$5 on a coffee, $10-$20 on a meal, but stop short when preparing to shell out a measly $6-$12 for a book that could change your life? Skip a meal, buy a book.

What would you pay for information that could make you a fortune, improve you relationships, give you more health and energy? The information is out there.

In fact it is really, really cheap. There is this amazing thing called a library that exists in most towns and cities. Its a super inexpensive way to get access to almost any book ever written. So if you want to be cheap with your money, don’t be cheap with your time. Invest the time to find your local library, get a library card, checkout a book and read it.

What book? Glad you asked. Here are a couple that I can recommend as starters.

Think and Grow Rich – Napoleon Hill
This book is all about the mindset and practices it takes to become successful. You will find that many successful people, and those who teach success, recommend this book. It has a few odd things in it, especially in the later chapters, but it is still a great book to start with.

How to Win Friends and Influence People – Dale Carnegie
I read this book for the first time a few weeks ago. I then read through it 3 more times in the next 2 weeks. The wisdom contained in this book on how to deal with people and get along with them is phenomenal. Since almost all of life is dealing with people, highly recommend this book.

After these 2, find one in a field you are interested in (and if you are reading this blog I am guessing that is game design or programming) and read it. Take some notes. If it was really good, read it again.

Whatever you do, don’t be hesitant about investing your time and your money into self improvement. Whether it is courses or conferences, books or seminars, invest in yourself.

You are your most valuable asset, don’t be cheap with yourself.

Your Best Year Ever – Part 2

This is a continuation of the last post of my notes on this talk by Jim Rohn.

Personal Development – Continued

The 5 Abilities

#1 Absorb – be like a sponge, don’t miss anything

Learn to get from the day, not through the day.
Wherever you are, be there. Let your heart, mind and soul take “pictures”.

Pay attention.

#2 Respond – let life touch you

Don’t let it kill you, but let it touch you.
Give in to emotion.

Your emotion needs to be as educated as your intellect.
Need to know how to respond to life, to people.

#3 Reflect – go back over, study it again, remember

Go back over books, notes, your day.

Good times to reflect:

  1. At the end of the day for 1 hour
  2. At the end of the week for a few hours
  3. At the end of the month for half a day
  4. At the end of the year take a weekend

Solitude when you reflect is important. You can reflect with your spouse, your family, or your colleagues, but it is important to spend some time to reflect with yourself.

Reflection makes the past more valuable for the future. Gather up the past and invest it in the next day, the next week, the next year.

Self development earns respect, makes you better for others.

#4 Act – take action, don’t be hasty, but don’t waste much time

Act when the idea is hot and the emotion is strong. Otherwise you fall prey to the Law of Diminishing intent.

All disciplines affect each other.

Everything affects everything else

Every let down in discipline affects the rest of your performance.
Every new discipline affects the rest of your performance. That is why action is so important.

Greatest value of discipline: Self Worth or Self Esteem. Lack of discipline erodes the psyche, affects your philosophy. One neglect leads to another. Just start the smallest of disciplines and watch how it grows into another and another.

Walk away from the 97% who won’t do what they can. Don’t talk like they talk, don’t read what they read, don’t watch what they watch, don’t use their excuses and their blame list.

Affirmation without discipline is the beginning of delusion.

Labor well, learn well, discipline yourself well. Take charge of your own retirement, life, day, family, possibilities. Join the 3% of people who are doers.

Do what you can. Do the Best you can. And Rest very little.

Make rest a necessity not an objective. The objective of life is to act

#5 Share – pass along to someone else

If you share with 10 people, they get to hear the idea once and you get to hear it 10 times. You will get more out of it.

Everybody wins when somebody shares.

Sharing helps you, helps the person you share with. Sharing makes you bigger than you are. Increases your capacity. So you can hold more of the next experience.

Some people can’t be happy and can’t be wealthy because they aren’t big enough.

Setting Goals

Goals are your vision of the future.

You can either face the future with apprehension or with anticipation. Most face it with apprehension.

If you don’t make plans of your own, you will fall into someone else’s plan.

Need to make a “Not Much” list. If economy improves, if taxes get a little smaller, if you get a small raise at your job, if your negative relatives become positive, if the “right” political party got in power, etc, it would not do much for you. And too many people are counting on this list.

Count on your ability to design the future. If the promise of the future is clear and powerful, the price is easy to pay. The price is a few small disciplines practiced every day.

Get a handle on the future, set your own goals.

It is this simple: Decide what you want and write it down. Thats it.
It is your own private list so write whatever you want on it, no matter how small or silly.
Keep your list year after year so you can go back and look at it.
Get together with your spouse, your kids, your colleagues and come up with some goals.

Put “Become a Millionaire” on your list, for what it will make of you to achieve it.

The greatest value in life is not what you get, it is what you become.

Major question to ask on the job is not “What am I getting here?”. The major question to ask is “What am I becoming here?”.

When you have become a millionaire, what is important is not the money, you can give that away. What is important is the kind of person you have become.

Set the kind of goals that will make something of you to achieve them.

Don’t set goals to low. Don’t join the easy crowd. Go where demand to grow is high, where expectations of excellence are strong.
Don’t compromise. Don’t sell out. Count the cost.
Judas got the money, success? NO.

Greatest source of unhappiness is self unhappiness. Starts with being a little less than you can be. Beware of this.

Financial Independence

What should a child (or an adult) do with a dollar?

Don’t spend more than $0.70 of every dollar.

If your outgo exceeds your income, your upkeep will be your downfall.

What to do with the other $0.30?

  • $0.10 – Charity: Helping people who can’t help themselves. Nothing teaches character better than generosity. Best to start with small amounts. Easier to give $0.10 out of a $1 than to give $100,000 out of a million.
  • $0.10 – Active Capital: Try to make a profit yourself. Profits are better than wages.

    Wages will make you a living. Profits will make you a fortune.

    There are many ways to show a profit. Leave things better than you found them. Become a person who leaves a profit. Profit has potential to make a fortune.

  • #0.10 – Passive Capital: Interest bearing investment. Loan it out (stocks, bonds, etc.). “The borrower is servant to the lender.” Be the lender.

This is an ideal. Set it up and work towards it. It’s not the amount that counts, it is the plan. You can start with 97/1/1/1. The numbers will change. It is just a good sample philosophy.

Keep strict accounts. Now where your money is going. Don’t let it “just get away from you.”

Get a new attitude.
“Hate to pay my taxes,” get past this. Taxes help pay for democracy, liberty, and freedom that is the goose that lays the golden eggs.
“Hate to pay my bills,” get beyond this. Bills reduce your liability and increase your assets.
Everybody must pay, even if its only pennies.

Spend, invest, show a profit, help others.

Communication

Effective communication is how to affect people with words.

Words can work miracles. They are powerful and can have dramatic effects.

Have Something Good to Say, Be Prepared

Interest

Show interest in the subject.
Then go beyond that and show fascination. Turn frustration into fascination if you can.

Sensitivity

Understand other people. You have to be touched and moved by the drama in other peoples lives so you connect with them where they are. This involves emotion.

Knowledge

Take notes. Gather knowledge. Don’t be lazy in learning.

Say It Well

  • Sincerity
  • Repetition – Mother of Skill
  • Brevity – sometimes you don’t need many words
  • Vocabulary – There is a relationship between vocabulary and behavior. Words are a way of seeing and expressing. Stretch your vocabulary

Read Your Audience

  • What your see – body language
  • What you hear – kids will tell you
  • What you feel – emotional signals (women naturally better at this than men)

Intensity

Your words need to be mixed with emotion. It has an incredible effect. Put more of you into what you say.

Don’t be casual in communication.
Emotions must be measured. “Don’t shoot a cannon at a rabbit.”

You need well chosen words mixed with measured emotion. The more you care, the stronger you can be.

The Negative and the Positive

Negative

There is a time to laugh and a time to cry. Life is not all positive.

Negative is normal, it is a normal part of life. It should not be ignored because it needs to be mastered.

Need the ant philosophy. Never quit and think winter all summer.

Positive

The day that turns your life around.

Things that turn your life around:

  1. Disgust – normally associated as negative, but can be positive. It is when you say, “I’ve had it. No more. Enough is enough.” If you can add an act to it, that helps.
  2. Decision – you can make a decision that turns your life around.
  3. Desire – wanting to bad enough. Sometimes desire waits for a trigger (like meeting someone, or not being able to do something that you want). Welcome all experiences because you never know which one will turn everything on.
  4. Resolve – saying “I will.” Do or Die. Promising yourself you will never give up. “Until,” do it until you succeed.

Final Thoughts

Learn to help people with their lives. Touch people with a book, with words. Help them with their goals and dreams.

If you work on your gifts, they will make room for you.

Conclusion

Great advice. Take charge of your own future. Make plans, set goals, and act on them.

If you will change, everything will change for you

Your Best Year Ever – by Jim Rohn: Part 1

Just to show you how good I think this is and how much value you can get out of it, this talk by Jim Rohn is 4.5 hours long and I have listened to it at least 5 times (probably 7).

And I will listen to it again.

This last time I took 15 pages of notes which I am posting here. After you are finished reading them, go listen to the talk for yourself.

Jim Rohn on How to Have Your Best Year Ever

Some do and some don’t. Why? We don’t know.

Sincerity is not a measure of truth.

3 Ways to Get the Most Out of This Talk

  1. Be Thankful – for what we already have, it opens up. Cynicism locks the doors.
  2. Listen Well
  3. Take Good Notes – be a good student

Don’t be a follower, be a student.

Make sure what you do is a product of your own conclusions.

5 Major Pieces – the Fundamentals

#1 Philosophy – the major determining factor

It is what we know and think.

Got to think and process ideas.

The set of the sail. Can’t change the wind so change the sail.

Don’t blame all you got to work with.

Start with your mind, your thinking, your philosophy.

Failure is a few errors in judgment repeated every day. It is accumulated disaster.

Success is a few simple disciplines practiced every day.

#2 Attitude

It is how we feel, about the past, about the future. The promise of the future is an awesome force.

How we feel about everybody else – appreciation
How you feel about yourself – self worth
Place high value on yourself. If somebody else can do it, I can do it.

Life change starts with education, not inspiration. “If a guy is an idiot and you motivate him, now you’ve got a motivated idiot.”

Get educated to the point where you messed up.

#3 Activity – the work, the labor

If you will plant the seed, God will make the tree. Give God the tough end of the deal.

Invest philosophy and attitude into action and you get a miracle. Turn wisdom, faith, and discipline into action to perform a miracle.

  1. Do what you can.
  2. Do the best you can.

Could change, should change, won’t change = Disaster
Could change, should change, will change = Miracle belongs to you

Just because you don’t understand something, doesn’t mean it doesn’t work. Get a list of the things you should be doing and clean it up (do them).

Don’t postpone like other people postpone (procrastinate).

Take action on neglect in disciplines. Start forming disciplines.

Do the best you can. Your philosophy on activity will determine you next years.

#4 Results – gotta measure every once in a while

Don’t let too much time go by without checking the results. See if you got the wrong plan.

How many books have your read, how many classes have you taken, what does your bank balance look like?

Results is the name of the game.

Life only asks that we make measurable progress in reasonable time.

Some things you got to check everyday, others weekly.

Got to be honest with yourself. The Truth will set you free.
The Truth is for amending our errors and finding new disciplines.

Don’t curse what is available and start amending what is possible to get the results you want and you will have great personal change.

Success is a numbers game.

How many pounds overweight should you be at 50 years old? Start checking your own numbers.

#5 Lifestyle – learning how to live well

Ultimate challenge of life after applying philosophy, attitude, and action to get results is how to fashion for yourself a good life.

If you wish to be wealthy, study wealth.

If you were to show me your current economic plan, would it excite me so much that I would want to travel across the country teaching it to others? Why not?

If you wish to be happy, study happiness.

Happiness is something you design, not an accident. Happiness is within the grasp of all of us.

Happiness is a study. Wealth is a study. Don’t be lazy in learning. Learn how to do well and learn how to live well.

If 2 tip amounts come into your mind, always go with the higher amount. Become the higher thinking person. Money doesn’t make you happy.

Personal Development

It is hard to give up blaming everything but yourself for your current economic, social, and emotional woes. But it is not what happens that determines the major part of your future. What happens happens to us all. The key is what you do about it.

If you will start the process of change, even a small one, everything will change.

What you have at the moment, you have attracted by the person you’ve become. You got to transition to taking responsibility for where you are in life.

If you will change, everything will change for you. To have more, you have to become more.

Don’t wish it were easier, wish you were better.

Start with money. It is not the only value but it is easy to count and measure.

We get paid for bringing value to the marketplace. It takes time to bring value, but we don’t get paid for time. We get paid for value.

Is is possible to becomes 2x, 3x as valuable and make 2x, 3x the money in the same amount of time? Of course. Simply become more valuable.

The facts: If you are not very valuable, you won’t get much money. You can’t get rich by demand.
Become more valuable.

Learn to work harder on yourself than you do on your job!

If you work hard on your job you will make a living. If you work hard on yourself you will make a fortune.

Develop the skills. Can’t change the world and how it works, so work on yourself.

Life and business is like the seasons. You cannot change the seasons, but you can change yourself.

Things are not going to change. The next 10 years will be pretty much like the last 10 years.
Short description of human history: Opportunity mixed with difficulty.

If you change though, everything will change for you.

  1. Learn how to handle the Winters (they come after Fall) – emotional, social, economic, personal. What do you do about them? Get wiser, stronger, better. Wiser – read more, listen, watch. Stronger – workout, practice. Better – develop the skills.
  2. Learn how to take advantage of the Springs (they follow winter) – Spring = Opportunity. Got to take advantage. The key is to plant in the spring. Seize the day. Life is brief.
  3. In the Summer, nourish and protect – become capable and powerful. Bugs and weeds will take the garden unless you protect it. Nourish the garden and kill the weeds. Summer is a scenario of opportunity and threat. If you just think positive that is too naive, got to think negative too. Deal with your enemies in the summer.
  4. Reap in the harvest (Fall) without complaint or apology – must take personal responsibility. No apology for doing well and no complaint for doing poorly.

Physical Personal Development – take care of yourself

Treat your body like a temple, not a woodshed.

Some people don’t do well because they don’t feel well.

Vitality is a major part of success.

Some people take better care of their pets, take more care in what they feed their animals than they do of themselves.

You never have a second chance to make a first impression with you appearance.

God may look on the inside, but people look on the outside. Its the world we live in.

After people get to know you they will start to judge the substance, but they see the outside first. So make sure the outside is a major reflection of what is going on inside.

Spiritual – study it and if you are a believer, practice it

Mental – learn, study, grow, change

Human development takes time. Wildebeest only have a few minutes after birth to learn to run because of the lions. A human baby, after 16 years we are not sure if ready to survive.

Feeding and nourishing the mind takes time. Get ready to debate great life issues. Got to be able to defend your philosophy, virtues, and values.

Need a good library. Most homes over $250,000 have a library.
Your library needs to show you are a serious student. Can’t live on mental candy.

Some recommended books.

  1. Think and Grow Rich by Napoleon Hill – great book, has some weird stuff in it.
  2. Richest Man in Babylon – good book on wealth fundamentals
  3. How to Read a Book – has list of “best writings ever written”

Your library needs to be balanced. Some sections for your library.

  • History – recommends Lessons of History by Durant
  • Philosophy – recommends Story of Philosophy also by Durant. Don’t just read the easy stuff, you won’t grow.
  • Novels – philosophy often interwoven into the story. Skip the trash
  • Biographies – stories of both successful and unsuccessful people, examples and warnings, good and evil
  • Accounting – at least a primary understanding
  • Law – need to know what to sign and what not to sign, don’t need to be a lawyer but knowing a little law will protect you
  • Economics – how to become financially independent
  • Culture and Sophistication – it is part of the fabric of the nation, be a student of dance, art, music
  • Spirituality – study it, and if you are a believer, study and practice

Keep a Journal – don’t trust your memory.

If you hear something or come across something important, write it down.

Buy empty books and fill them with valuable notes. Go back over them and let it instruct you and feed your mind and soul again.

3 Treasures that you leave behind

  1. Pictures – take a lot of pictures
  2. Library – books that taught you to become healthy, wealthy, powerful
  3. Your Journals – the ideas you picked up, be student enough to write things down

Part 2 to Come

I just realized that this post was over 1500 words and I am only about half way through my notes. That is a lot for one post so I will be breaking these notes into 2 parts. Tons of value here and while you wait on the second part you can go watch the talk for yourself.

Don’t wish it were easier, wish you were better (and get better).

Game 1 February 2016 Progress Update

Honestly, I am no where near where I thought I would be with game 1 at this point in the year. But that is why these kinds of post are important and why I scheduled them into my writing schedule.

Time seems to be flying by so fast these days, it is already over half way through February. I do not have a play testable version of my game yet. I have not yet made an MVP.

Part of the exercise with this first game is building and releasing an Android app. With that in mind I am trying to build it using MeteorJS (which cross compiles to Android) and at the same time using Meteor’s integration with AngularJS.

What Is Done

I have been working on a Meteor-Angular tutorial and have gotten through a good bit of it and learned a lot. Usually with things like this, I take a tutorial and kind of massage it into the app that I actually want to make. So right now I have a basic tutorial app that just needs some massaging.

I also have the basic set of choices and end goals for the game set down. I actually had to stop myself working on that so that I could begin making the minimum version of the game in order to test whether or not it will be fun.

What Needs to Be Done by End of March

Basically, I need to write a choice engine in Meteor-Angular and then fill in the story and the choices. Once that is done, building the actual Android app is as simple as running:
meteor add-platform android
and
meteor run android

I also need to setup a Digital Ocean server to host the game. Although technically it could be hosted for free at meteor.com, it would be really slow and take some time to load up.

Additionally, I need to play test the crap out of it to make sure it works and has at least some element of fun to it.

What Is Not Perfect Yet

I think I am making the mistake I made end of last year by switching languages/frameworks a little and trying to learn one and stick to a schedule. This remains to be seen.

Also I was planning on doing some sketches to bring some visualization into the game, but these might not get done in the interest of keeping a schedule. They might be added later. Or I might see about learning to utilize a service like Fiverr.

Time to Write Code

I have been focused on game design, writing, and psychology improvement lately but now it is time to take some action. It is time to make this game.

Get out there and make what you designed.

February 2016: Study Summary

Every week I try to learn something new from people who have done what I want to do already. I read articles, watch videos, or listen to podcasts about games, game design, programming and self improvement. Every month I will try to create a summary of the articles and such which didn’t get individual posts.

Game Design

GDC 2010: Sid Meier Keynote – “Everything You Know is Wrong”

Sid Meier’s keynote at GDC 2010 does an excellent job of going into some odd and unexpected psychological behavior of players and how it is important to the design of the game. It is about listening to a player and using their psychological tendencies to make their overall experience better.

Sirlin – Solvability

I think I will be mining David Sirlin’s articles for a while. He has quite a few good articles on game design and his article on game solvability is no exception. He discusses the importance of hidden information or surprise to keep a game from being completely solvable so that it will remain interesting and maintain replayability. A game where you just have to memorize a certain pattern and do that to win will not remain fun.

Rob Pardo Blizzard Game Design Lecture MIT 2014

Rob Pardo gives a talk about some of Blizzard’s game design values and process. The main part of the talk is sort of a summary of how Blizzard’s values affect the process of game design and what is good about that. He also talks about expanding a game audience and avoiding certain game design mistakes like not play testing early enough. A lot of good game design advice here.

Self Improvement

Jim Rohn – Your Best Year Ever

This is a really long talk (about 4.5 hours) but it is a gold mine of personal development advice. The major theme is if you want things to change, you have to change. Jim Rohn fill this talk with different small things you can do to improve your life that will significantly change the destination you are headed in 5 to 10 years. Topics include health, psychology, finance and suggestions for your personal library. You may need to break it up over a few days, but I definitely recommend watching it and taking notes.

More Next Month

I think this will become a regular monthly posting and hope to be able to provide a nice little aggregate of useful information for anybody trying to learn about game design, programming and self improvement. In the future, I may also add drawing and writing articles since these are also important in game design.

Now, go read about making games so you can make your games better.

Productivity: By Habit

If you continue with the habits you have now, will they get you where you want to go?

Our habits, or daily rituals, will slowly guide our lives toward one end or another. Most people don’t stop to think about this, but it is an important part of guiding your life and being productive.

Good Habits

You are as productive over a long period of time as you are in the habit of being. I am only going to talk about good habits today because, frankly there has been a lot written about bad habits. Here are some habits you might want to develop.

Write Things Down

The mind only has so much space. In order to stay creative, we need to take stuff out of memory and make a hard copy of it so we can think more and better thoughts.

This also prevents the loss of a good thought. Often we get going throughout the day and the demands of life cause us to forget things. Writing down an idea allows us to find it and remember it later much easier. Carry a little notebook with you or keep a note taking app on your smartphone and get in the habit of writing things down.

Do Things Now

Often we put off things unnecessarily. If you have time to do something, get in the habit of doing them right away. Don’t say “It can wait until tomorrow.” Tomorrow will have interruptions and delays and you might not find time for it. Now would be a good time.

Put the Most Important Thing First

If you have something that you really need to or want to get done in a day, get in the habit of doing it first. If this is writing, do it first. If it is working on your game, do it first. If it is calling your mom, do it first (unless it is like 5 AM and she wouldn’t be up yet).

This is often said as “Pay yourself first.” And most people use this phrase when talking about money, but it applies just as well to time. Take the first part of your day for yourself.

Have a Plan

Don’t just start things, take a little bit of time and plan them out. Come up with some clear, actionable steps to get you to the goal first. Once you have these, start immediately.

Make it a habit to plan your day.

Get Moving

It is hard to have the energy to make important decisions, do good work, or change bad habits if you are inactive all the time. Starting the day with a 15 min to 1 hour walk can give you a great boost in energy and helps slowly build fitness over time so that you have a larger reserve of energy to call on.

Keeping your body healthy through working out and eating right will help you have the energy to be productive and successful. Make it a habit to move more every day.

Shape Your Life With Habits

Use some (or all) of these good habits to get you on the course to your life goal.

Now go start good habits and make games.

10 Things Analysis: League of Legends

One of the things I decided to write about a bit this year in addition to analyzing the games I work on and make, I am going to analyze various games that I have played or currently play or that I enjoy watching played. The first game that I would like to review is League of Legends.

How I Know the Game

My first introduction to games like LOL was when a college friend of one of my brothers stayed with us for a couple weeks and had a copy of Warcraft III with the DOTA mod. It was one of the coolest things I had ever seen at that point and I really enjoyed it. Later I think I was searching for a way to play online against other people and stumbled across League. I have played off and on ever since.

I am by no means an overly skilled player, mostly because I do not devote very much time to playing. But I enjoy playing and I enjoy watching, especially at the tournament level.

The game is not perfect, no game is, but it is fun and has a world wide player base and has championship games every so often that thousands of people from around the world watch. One of my long term goals in game design is to make a game that has this kind of player base and community involvement.

On to Analysis

Even a super popular game like League of Legends has the 10 things every game needs. It was extremely easy to pick these things out as well. League has multiple actual game modes but most fall under the same analysis. This look will be at the primary 5 vs 5 mode on the main “Summoner’s Rift” map. I may analyze this game again from a different view point entirely in the future, but for now even a simple analysis of these 10 things is over 1000 words.

Goal

The goal of the game is extremely simple. Destroy the enemy “Nexus” (the big structure at the heart of the enemy team’s base). There are subgoals that you have to achieve to get there, but that is the only way to win the game (besides the other team surrendering).

Rules

LOL is a complex video game with tons of rules riding beneath the surface, but here are a few of them.

  1. You cannot destroy the enemy nexus until at least 1 lane of towers and its “Inhibitor” and the nexus protective turrets are destroyed
  2. You get gold for doing the last bit of damage that kills an enemy
  3. If your characters health drops to 0, you will be unable to play for a certain amount of time and will respawn back at your base
  4. You can buy items at the store that improve your stats

Several gigabytes of code go into making the rules of this came in how it looks and how it behaves.

Interaction

The game has some built in things to encourage interaction amongst the players. The first is the reward for killing an opponent. When you defeat an opposing player, you get a reward of gold which you can use to buy items to make your character stronger and you get a reward of experience that takes your character closer to leveling up and getting stronger.

In addition, killing an opponent puts them back at their base and takes them out of the game for the length of the death timer. This allows you to try to get towards the goal of the game (destroying the “Nexus”) without them interfering with your character.

Catchup

LOL does a fair job of avoiding lame duck game scenarios that we talked about last time by including a couple different catchup features. First, players who are at a lower level get a small experience bonus to allow them to catchup. Second, when a player is doing really well and getting a lot of kills they get a bounty on them, so that when they are killed the opposing player gets a large gold bonus for killing them.

The game designers undoubtedly have a few other catchup features but these are 2 of the main ones that I am aware of. There is also a couple mini objectives on the map that offer power ups to allow a weaker player to gain strength if they put in a little risk.

Inertia

There are a few inertial forces in LOL. Two of them are the mini objective catchup features I just mentioned. The Dragon and Baron offer power ups that the winning team can get to give them even more of a lead to overpower the other team.

The most powerful inertia force is the death timers. As the game progresses, the death timers get longer. Near the end of the game, the team that is doing well and consistently killing the opposing teams characters can get a minute or more without the opponents on the map. This allows them to push their lead even further and often win the game.

Surprise

Fog of war is the mechanic of choice in LOL for surprise. You can only see areas of the map that friendly characters, minions, or wards are at. This means that opponents could be anywhere. You don’t know when the enemy might appear out of the jungle and attack. It allows you to sneak around unaware opponents and attack from multiple sides.

Even in areas that you can see, there is a terrain feature of bushes or tall grass that allows a character to be invisible unless an opponent, enemy minion, or ward is in the same section of bushes with them.

In addition, some characters have stealth capabilities that allow them to go completely invisible unless they are near something or someone that has a special stealth detection ability.

Strategy

The strategy is on several levels in this game. It starts before you actually start playing. Their is a meta game that determines whether your matchup will be easier or hard based on which characters your opponents choose.

When you are actually in the game, where you go, who kills certain minions and monsters, what items you buy, when you choose to use certain abilities and in what order are all large strategic choices. I would recommend watching some tournament play of this game to grasp the amount of strategy involved.

Fun

What is fun about this game? This is the major question I need to figure out how to answer and probably the main usefulness (at least to me) of doing these kinds of analysis.

Their are several things that I enjoy about the game personally. Teamwork is a big one. Being able to join 4 other random people and work towards a common goal together is awesome (one of the same reasons I like pickup basketball).

Another is being able to outsmart opponents. Figuring out what an opponent wants to do and stopping them, or turing around an ambush to our advantage.

Mastery is the final element of fun I want to talk about. Being able to learn and figure out different play styles that ultimately lead to victory is fun.

Flavor

League went so far as to create their own universe (Runeterra) for flavor. It has tons of lore and story and character background and different races and nations and technology and magic. They have a large portion of the game’s website dedicated to lore.

Hooks

One of the major hooks of LOL is that it is free to play. And it is completely free to play. All the actual stuff that matters in gameplay (characters, bonuses, stat increases) are available through gameplay.

It also has a huge community that enjoys creating derivative drawings, paintings, music, cosplay and tons of other things on top of enjoying playing the game.

Conclusion

League of Legends has all 10 of the things every game needs, and it does them all pretty well. I hope that you will use some of the examples from this game and others to improve your own games. Learn to learn from the games that you enjoy.

Go do some analysis on the games you play.

Multiplayer Game Balance – Part 1

As I learn about games and game design, one of my goals is to eventually create a game that people play against each other at a competitive level. One of the important aspects of a game like this, whether it is turn based or real-time, whether 1 vs 1 or team vs team, is balance.

Originally I was going to read several articles on this and summarize what I learned here, but this article will mostly cover what I learned from an excellent series written by David Sirlin on his blog at sirlin.net. I highly recommend heading over there and reading the original series once you are done here.

What is Balance

What most people think of when they think of the word balanced is usually fairness. That everybody at the beginning of the game has a roughly equal chance to win (not counting personal skill). And in most player vs player games this is an important aspect of balance. But as game designers, when we say a game is balanced we also mean that there is an large number of viable options available at high level play by expert players. And in the talk given by Ernest W. Adams that I summarized previously, he would say that a single player game is balanced if it is appropriately difficult or challenging.

Your game can have tons of options, but for balance, we only care about meaningful options. We want to avoid a game where only 1 or 2 dominant strategies emerge or where only a few characters, decks or builds (or whatever your game uses) are ultimately playable at a tournament level.

Symmetry vs Asymmetry

Games where opponents start pretty much identical lean toward the symmetrical side of the scale and are typically easier to balance. This is the simplest way to balance a player vs player type game. Examples of games that are on the symmetrical side of the scale include most FPS games and Chess.

The more diversity in starting conditions, the more asymmetrical a game becomes. Adams mentions that this makes games much harder to balance but at the same time makes them more interesting. Examples of this type of game include League of Legends, Magic the Gathering, and any other type of game where multiple classes, decks or characters are available as the starting option. In asymmetrical games, fairness is important to design. You want every option to have a reasonable chance to win in the hands of the right player.

Enough Viable Options

One of the harder questions when balancing a game is how to know when you have enough viable options. The first step in this is ensuring that moves and strategies have counters. If a move cannot be countered then it becomes 1 of those dominant strategies we talked about earlier and the game will quickly degenerate into people just using that move to win (not very fun). After a couple layers of countering you probably want to loop back to the original move so that the third or fourth layer of counter is just the original move, sort of like rock-paper-scissors.

One of the things to watch out for and avoid is chaff. Needless mechanics, characters and choices that do not add to the game and are ultimately useless. Don’t just add an option to add it, make sure it is useful. Explore the design space and see what works.

Checkmate and Lame Duck

When one player is doing better than another and they have reached a point in the game where it is impossible (barring a major mistake from the winning player) for the player that is losing to make a comeback, we call that a Checkmate scenario. And this is fine usually.

However, we want to avoid allowing the time from the beginning of a checkmate until the end of the game to be drawn out. This is a Lame Duck situation where one player or team know they can’t win but are forced to play out the game for a long period of time in the losing situation.

Playtesting Is Important But Hard

One of the best ways to find out if a game is balanced or not is to play it and test it. This can be hard. Especially if you have a large number of options. But play testing discovers things you never could have predicted.

When play testing you want to evaluate your playable characters, decks, etc. One trick to balancing games is to not rank your playable units linearly. Sirlin recommends using a tiered list with 3 actual tiers and 2 tiers that you want to keep empty. You want to keep things out of the “God” tier that must absolutely be played if you want to win and conversely you want to keep things out of the “Garbage” tier that must never be played if you want to win. The remaining 3 tiers should all be pretty close.

Getting language type feedback from play testers can also be hard because a lot of good players make decisions subconsciously. In order to balance your game you sometimes need to rely on the intuition of yourself and others. Be careful to get enough feedback that your decisions are not driven by just one loud incompetent person.

Most Important Design Tip

Probably the most important design tip that I got from this article was to try to start the design with mechanics and failsafes that self-balance. Sirlin used a fighting game called Guilty Gear as his example. It built in certain things like progressive gravity and combo breaking type abilities to keep characters from being able to completely immobilize and beat an opponent with no response.

They eliminate potential problems from individual characters with global design features. This is difficult but if you can figure out a way to do it, do it.

Various Tips and Tricks

My notes from the article have a few things that I though were important that won’t get whole paragraphs here. For more on these I recommend reading the original 4 article series on Sirlin’s Blog.

  • Don’t balance the fun out of things.
  • Counter matches (characters that counter other specific characters) are not good for 1 v 1 style fighting games.
  • Avoid special cases and actually balance the game.
  • Don’t set yourself up for failure by including too many characters or too much customization.
  • If you add a new move, make it too powerful then scale it down as necessary (otherwise play testers won’t use it)

Conclusion

Balancing games is important and complicated. Perfect balance is hard to achieve because to keep the game interesting we don’t want it to be completely solvable. The more play testing you can do the better because it helps you figure out where the game is unbalanced. One of the best ways to balance a game is to have some global design elements that help ensure balance. While this is difficult, it will help tremendously if you can do it.

Sirlin offers a handy pdf summary of his article available here. This subject will be revisited in the future.

Go balance games.