Freitag, 24. Februar 2017

Don't be this kind of Developer!

Ever tried this? Planning out your entire gamedev project - at once. In every little detail.
I tried doing so - with Hack n Plan. I laid out the entire array of features as detailed as I could. It was nice in that it helped me how large it will become. However: It did not work out at all for me. After a while, I found myself overwhelmed by the volume of tasks I've set up and ended up demotivated enough to never touch that Hack n Plan project again.User error doesn't make the tool bad, however.

So what was the problem here?

I cannot focus because of too much clutter! And I'm clutter-minded already:

It starts with detailed and seemingly endless todo-lists. If I don't clean up and these lists grow to large, this is what happens in my head:

Out of 1000 important tasks let's pick the least important one because fuck progress!
There is SO MUCH to do!
Where the hell am I going to even start, oh my god, oh my god
Before I work this long list, let's take a look at this game I haven't played in forever!

Developer meltdowns are BAD.

READ: Ways to boost your productivity

What one must do is to trick oneself into working and getting comfortable with what one is doing.

That means, getting rid of all things that's preventing you from doing it: tuning down on the "lazyness threshold"; fostering a habit that comfortably enables you to get shit done. Like, going to the gym that just happens to be on your way home when calling it a day.

Something similar can be done using this 5-step-iterative approach:
  1. Evaluate
  2. Structure
  3. Implement
  4. Take Notes
  5. Repeat

How does it work?

  1. Evaluate the current state of your project: find out what bugs exist and what still needs work.

  2. Structure the current iteration.

    Create a todo list consisting roughly of:

    • 10% new features
    • 30% extending existing features/improving user experience
    • 60% bug fixes
    If you have a list from step 5 in a previous iteration, use that list as basis for bug fixes and extensions.
    New features should be a lower priority; if they are "spontaneous features": Get rid of them. NOW. KILL IT WITH FIRE.)
    Ensure the extensions/features/bugfixes are meaningful and leading you to your goal; which is finishing your game in time - NOT playing with your game mechanics until it's perfect which it will never be.

  3. Implement the todo list.

    Do it blindly. Do not think much. Do Shia a favor and JUST DO IT.

  4. While implementing, take notes for the next iteration:

    • Bugs
    • Issues
    • UX improvements
    • Code refactoring
    Avoid adding new features to this list AT ALL COSTS

  5. Repeat.

How can you implement that into your work flow?

I've started to treat the changelog as my todo list when I am in step 2 (Structure). I will take notes there to solve problems or figure out how to implement or improve features. When I'm done implementing a feature, I remove the implementation notes and reword the feature for normal folk (gamers) to read and understand.

For step 3 and 4, taking notes while implementing, I have started to use a separate text file for bugs and issues I encounter in this iteration. I keep this one seperate from ideas for features. The file with ideas is the most spontaneous one and consequently its priority should be very low to zero.
So I don't lose track of what was done, these three files are included in my git repository and are regularly committed.

All these measures help me control the flow of features into my game. Ever since I've been applying this I haven't implemented new ones - most of what I do right now is improving the user experience. It seems to work well - or at the very least: better. :)

Do you have any ways to conquer your inner lazy demons? Share your story in the comments or hook me up on twitter!
READ: The benefits of getting out of your comfort zone

Sonntag, 19. Februar 2017

Interface design sucks and here is why

You likely came here because you also had that experience: Creating an interface for a client or software, just to proceed to do tedious coding work.

Sometimes that frustration is caused by dull coding: the kind of code you've done a dozen of times before in slightly different configurations. Creating getters and setters, adding listeners to buttons, blah blah blah.
Then again other times, it's simply a lack of knowledge and perhaps communication with the users on how to do things better. 

In other words, UI design (often) both sucks for us programmers, who have to make it and do not like it, and for the users, who have to use the half-assed programs created by demotivated programmers.

Programmers aren't necessarily designers, after all, right?

So how can you make your life a bit easier as a programmer? I've summarized the following tips which I have collected via trial and error and pinches of design experience:

  1. Group together what from a user's view logically belongs together.

  2. Visually separate actions that are functionally different: don't place a delete button right next to an add button.
    The box on the right would make multiple problems. One is: what happens if the user clicked on the remove button instead of add?

  3. Critical actions, like removing data or changing a large set of data, need a higher use-threshold e.g. via a dialog: "Are you sure to do that...?". Those are the kind of actions you don't want to happen if you click on them by accident.

  4. Important actions should be highlighted through movement, form, shape and color. Like this you can control the flow of your user's attention - and where they are likely to click next.

  5. Meaningful usage of icons can increase the intuitiveness of your software - but don't overdo it. PaintShop Pro is basically bloated with them and here they are more confusing than helping.

  6. The look and design of your components should be aesthetically coherent. Think of it like this: In code, you set the rules for your code, how it looks like via style guides and so on. This is in fact very similar to interface design: you can also set a visual rules here and apply them your components: e.g. all interactive components like buttons, menus should be blue, background stays white.

    Read: How to chose a proper color scheme for your interface?

  7. Do not overload your interface with components or buttons. Instead, make information toggleable from display and use meaningful sub-menus, while keeping those sub-menus as accessible as possible, e.g. via shortcuts. Ideally, a single sub-menu should be like a red-black tree with a maximum depth of 3 to 4.

    Menus like this often don't have a depth more than two or three.

  8. The more a user uses a function, button or component in a program, the more accessible it should be. This helps the user's workflow and makes your software easier to use.

  9. Give users the possibility to customize views so they can adapt the software to their special needs and workflow.

  10. Support the users by assistants, in-app hints or tooltip texts.

I hope you found these tips helpful. You are more welcome to add more suggestions in the comments!

Thanks for reading!

Freitag, 30. September 2016

How Games Can Teach You that You're the Most Valuable Asset You have

A while ago, I started a new game in 7 Days to Die. For those who don't know: it's a game similar to Minecraft, just harder and with zombies that tear off your house. I enjoy playing it because of that difficulty.

A New Home

I spent a few hours creating a nice base, grinding all the resources required to make it. The design I was using I have trialed and tested. It provided a good basic shelter.

It was a basically a roofed platform, supported by four pillars, each one about 4 blocks thick. In the middle below the platform, I would usually place some spikes. And when the hordes come, place myself in the middle of the platform with the zeds following me (they will be leaving the pillars alone).

It was a stable design and easy to maintain. Sadly I didn't make any pics.

A Terrible Mistake

And so it was, the base was almost done.  I just got done placing the roof, but I left the blocks in the middle unfinished. I made the base extra large this time to fit my needs.

This turned out to be a terrible mistake.

So it was horde night with an extra dose of zombies that spawn and are out to get you. And the moment I placed a torch in the middle of my platform, my entire house started falling apart.

First the wood in the middle.

Then ate its way to the outside. 

With a horde of +30 zombies down below me.

Leaving only the stone pillars on the edges.

Everything was in vain...

I too, fell down as my house collapsed. I was in shock because the base I spent hours just completely vanished. Including all my stuff I had in my chest, which too was destroyed.

Quite frankly, I ragequit very soon after. I mean, with +30 running zombies going to get you, you can prepare your bum to run or die. Normally the latter. Repeatedly. Because you have limited stamina and the night is long. And that's no fun.

FFS I can't see shit pls help :'((

(Before continuing, you must know that 7 Days to Die has its own skill system. So even if you die, you keep all your skills and crafting recipes.)

...or was it? A Realization

So recently, I got back to this saved game. What happened next is very interesting.

It was still horde night with those many zombies coming for me. Just as I left it. I already died once and respawned somewhere random. My bed at my base collapsed too so I was practically homeless. However as I ran through the night, not knowing where to go or to escape the horde, I had a realization:

  • Despite of all materials I lost -
  • Despite of the home that I lost -
  • Despite of the lost time that I spent gathering and building...

...I still had my skills, my recipes, a partially explored map. The knowledge to create things better and safer.

And then it occurred to me: this is exactly how real life works.

You can lose everything and still have everything - for the sole fact that you still have yourself:

The knowledge, skill, talent to create and rebuild.

You are the most valuable asset you have.

Thanks for reading!

Sonntag, 18. September 2016

6 Tipps Boosting Your Productivity With HackNPlan

The tool Hack 'N' Plan is a very sophisticated project managing tool made by gamedevs for gamedevs. I have been working with it for about 5 months and my productivity sparked ever since. I am more focused and notice when my game is suffering from the infamous scope creep syndrome.

In the following I want to present you 5 tipps how to work with this piece of software. These may work without making use of Hack 'N' Plan, too!

  1. Plan out the most important features first. Focus on those.

  2. Avoid spontaneously added tasks as much as possible.Bugs and improvements of existing code/assets are an exception. This serves mainly the purpose to prevent a scope creep. I know it's tempting to add one idea after the other, but like this you will never get your game done. Ever.

  3. Use the game model feature to set a design direction(e.g. game mechanics you want to have). This will be your focus. Do not add tasks that do not support your game model (except bug fixing)! Push them down the abyss of the forgotten mercilessly if you find any.

    Or just dump sidetracking tasks into a "unimportant brainfarts" milestone if you're not a ruthless task-murderer like me.

    In fact, I'm still trying to find a most effective way on how to use this.

  4. Make many milestones with small scope.Keep it 10 tasks and below, add a max of 5 tasks spontaneously (thus a maximum of 15 tasks in total). You need ruthless focus and this will help you establish it.

  5. Cut tasks into the smallest chunks.You don't have to (and shouldn't) plan out every detail of your project, but if you notice you need more tasks, make them small.

  6. Group together tasks that cover a similar topic.Not doing so has a chance of making you feel scatter-headed because you are jumping from one section in your code to the other. This is ok when you fix bugs, but not when you need focus to do progress.

    Do not make a clutter like this:

    ...but keep it more like this.

    Those are all UI-tasks I got done very quickly because I grouped them ruthlessly. Kept the scope of these tasks small, too.

I hope this helped with your gamedev endeavours. Keep on rocking, keep on coding!

How Introverts and Extroverts can get along

I have a very close friend of mine who I have been friends for almost a decade. We couldn't be more different, as he is mostly extroverted, a persuader, a good joke teller, and I am more of an introvert who is shy and withdrawn. But despite of that, we get along very well. Heres some tipps on how (these points may pose as dating advice too).

Extroverts dealing with Introverts Introverts dealing with Extroverts

Introverts need a lot of time to process what happens around them as they feel often uneasy and overwhelmed by a sudden influx of attention, or information. Give them time to think and process what you are saying. If you overload them too much, they may try to escape and avoid any further conversation. To them, this is the natural way of dealing with things. They may be able to react better and give you more useful information the next time as they may have processed the previous conversation and prepared themselves for it. So for you when discussing important issues, it may be better to approach them twice.
They also may say something to you, but the fact they are not repeating that doesn't mean they stopped thinking that way, e.g. when you do something they do not like. They won't say anything, but that doesn't mean they suddenly started liking it. When an introvert says something to you, you should generally take it seriously - they do not say it primarily to persuade or negotiate with you, they say it because it's the way it is. But even then, they may something very clumsily and come off wrong saying something completely different than they wanted to say. It's hard for them and it's even harder to read them right, but that's why it's important to communicate.
Not everything extroverts say is objectively truthful. They exaggerate or sugarcoat things to persuade you, get you into doing something, test you, figure you out, or simply to get out of trouble. That's not a bad thing at all - just a reminder for an introvert that they may say things that seem negative to you, when its them trying to gain your support or trust. Sometimes lying is the right way for them to do this, too. This may seem wrong from a introvert's point of view. From the outside, introverts often communicate on a very factual level, and want to say whats important and true, while extroverts focus on negotiating and persuading. I think that's something you can learn from an extrovert. Market yourself better!

Introverts only say something when its absolutely necessary, when it constructively contributes to the discussion, and when they want to enhance it with meaning. They are often quiet observers. They acknowledge what is being said, but they do not chose to comment on it. They enjoy having their thoughts for themselves as it deflects undesired attention that makes them feel uneasy. If you as an extrovert want to have a meaningful conversation with an introvert, you should chose a quiet place with not too many people around you, ideally just you and the introvert. If they feel comfortable with you, they may open up and tell you their deepest secrets. Once they are familiar with you, they will not get enough from your attention.
This is probably one of the hardest to understand for an introvert. An extrovert generally carries their thoughts and emotions outwards. So if an extrovert is mad or angry, they will let everyone know they are. But that's reckless and unfair to take out your anger on others, right? As long as they aren't taking it too far, no. It is really just the way they deal with their feelings and thoughts. They often don't even know what tumult they may cause in an introvert by directing their emotion towards them. So next time you find yourself in this situation ask yourself: did they really mean that or could they not find another way of processing their emotions?
The fact that introverts are easily overwhelmed with information, causes them to require a lot of time for themselves, putting a lot of energy to reflect and process what is happening around them. Because of this, introverts do not have this much energy and often appear lazy. They also do not like it when you tell them they are lazy - when in fact their mind is in a "healing state" of daydreaming, thinking about the world, and doing mind experiments in their heads. They need this to stay sane in this insane world. Since their attention and energy is so limited, its truly a gift to be in the world of an introvert. Extroverts like attention. A lot. They like to be around people because it gives them security and confidence. They love their community and are devoted to keep it strong and motivated. They enjoy hearing praise when they did a good job, because this is the language they speak. And that's exactly the catch as an introvert: How do you compete with all these people for an extrovert's attention? How do you do appreciate an extrovert's friendship when you're directing your thoughts and emotions inward? So the best thing you can do about maintaining a friendship with an extrovert, is to show or tell them you want them as a friend as often as you can (and feel is appropriate) by complimenting them, approaching them, offering them support etc. etc. I know for one that I often have positive thoughts about people, but I am voicing that too rarely. Be more open towards your extroverts. Of course, it has to be the right person in the right moment (which can be hard to figure out as an introvert) - but they will appreciate it.

Samstag, 27. August 2016

Vote & Help Developing CamoTactics!

Involving the gaming community is important making a great game. For this purpose I have created two polls that allow you to share your thoughts on CamoTactics.

Future Content

The first poll is all about future content to be added to the game. You can give it a shot on Google Forms. By filling this out you help me focusing on the feature you would like to play most. Make sure to share your ideas, no matter how silly they may sound! They may lead to other interesting ideas. :)

Your User Experience

The second poll is about your gaming experience with CamoTactics. If you played the game you can submit your feedback here on Google Forms. If you didn't play CamoTactics yet, go do it nao!

Happy voting and thank you for playing CamoTactics!

Freitag, 26. August 2016

Life is like Gamedev

It happens to me when I code all the time: Create something just to later discard it and start new from scratch. You make two steps forward just to make one step back again. It's frustrating sometimes.

Come to think of it, it's just like real life. Sometimes you're trying to make a change in your life, trying to adapt some habits, like trying to stick to your marketing schedule or diet plan. Then there's times when things happen, you slack and fall back to your old habits.

It's a bit like marble in a funnel that's slowly rolling towards the hole in the center. You're trying to roll towards the center, but sometimes you go too fast and bounce back to the outer edge. You do this until you finally achieve your final breakthrough: when your good habits finally stick and your code finally works (well... mostly ;) ).

Just like in gamedev.

So when you practice going through this with gamedev, it will likely spread over other parts of your life.

Code away, never stop creating and keep making awesome games!