Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD32: I’m 12 Hours Behind Schedule and Have Bugs #LDJam

I wanted to have something playable or at least controllable within 12 hours. I did it within 25.

LD #32 - Controllable Character

You can now click on the ground, and the soldier will move assign itself the goal of moving towards that point.

The monster is still just placeholder art with basic AI.

There are bugs, though.

For some reason, when I run my game, the loading screen gets inconsistent for me. The mouse cursor freezes on the screen on the main menu screen, in both of these cases, I see the screen look like it is locked, or flickering between two images that should not be on the screen. For instance, my loading screen says “Loading resource 8 of 14”, and it bounces back and forth between 8 and 9, which isn’t happening in my code, which makes me think that there is a problem with rendering.

Animation looks weird once I enter into the game, and so I have to restart the program and hope that I don’t see the issue again.

I tried it in another game which has more or less the same code, and it seems to work fine, so at least that rules out an expensive hardware issue.

But the bad news is that I have a ridiculously difficult to diagnose bug in my Ludum Dare project, and there is less than 24 hours left in the compo. There’s also a weird rendering issue in which my terrain is showing gaps behind it as I move about the world. B-(

And I still have a ton of work to do.

Also, I realized that with all of the struggles, I have been forgetting to commit my changes. Here’s the complete commit log:

$ git log
commit 35fabffff77407ce6a66a146ff297df254c5626e
Author: Gianfranco Berardi
Date: Sat Apr 18 20:29:47 2015 -0500

A lot happened; can control player character, have basic AI framework.

commit cc662aa500df16c01dae56ac3a419a64e0448c22
Author: Gianfranco Berardi
Date: Sat Apr 18 10:32:08 2015 -0500

Fixed camera; added grass, monster placeholder, and boulder.

commit 4656623ca6dfc9fc2e68620a7ec5056e171276e1
Author: Gianfranco Berardi
Date: Fri Apr 17 23:27:09 2015 -0500

Initial commit for LD#32.

Early on, I realized that my efforts were all over the place. I wanted to work on adding a playable character, and I ended up making some terrain instead. Nice, but not as important.

So I actually put together a quick design document, inspired by Hybrid Mind’s Ludum Dare 29 timelapse.

Holy cow, it made a huge difference! I was able to dump everything out of my head, realize there were some gaps, recognize that I had a scope issue, and also prioritize whenever I identified a new problem or bug to fix.

It also helps me see my progress. It’s easy to get demotivated when the clock keeps ticking, but seeing all of the completed work reminds me that I’ve made a dent, and it also helps me keep focused because I want to get more of those planned tasks crossed off my list.

Of course, I’m always realizing something that needs to be added, so the list will get larger. I’m not sure if more planning or more doing would have revealed that information to me sooner.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD32: Breakfast and Even More Design #LDJam

Good morning!

I had some oatmeal with peanut butter and raisins, with some cinnamon and nutmeg. I also had a small glass of orange juice and the smoothie my wife made.

LD #32 - Breakfast the First

When I drank the smoothie, I noticed that the side of the glass had this very neat texture:

LD #32 -Potential Texture

I might tweak the color and turn it into the landscape in my game.

I decided that there will be a player character represented in the game. It adds risk, because if the monster catches up to you, you lose.

So, who are you? I originally envisioned some spoiled brat who wanted to get revenge on the people in his town. Maybe that cool neighbor with the better treehouse will think twice the next time he brags about how much better it is than yours.

But then I took a shower, where we often have our best ideas, and I thought of an outnumbered military unit desperately seeking a way to tip the balance in their favor. Finding a monster to do their fighting for them seems like a good alternative to dying and losing the war.

Which also gives the player a reason to worry about the monster getting killed before it can do its damage.

There’s 34 hours left in the compo. I better start planning.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD32: Art for “A Giant Weapon” #LDJam

After I got a working build of my project, which didn’t take too long, I started doodling some monster faces.

LD #32 Giants And Ogres

I love how goofy the faces are. I want the monster’s face to be expressive so that it can give clues to the player about what it is thinking.

But just how giant is this character going to be? It can’t be so huge that you can only see its feet. I suppose it would cut down on asset creation, but I envision a very emotive monster which requires a visible face. I want it to be seen as a huge monster, so being merely a head taller than all of the other characters in the game isn’t enough.

But what if there is no player character? That is, the player can interact with the world without having a representative in the world. Then the monster can fit on the screen, and any characters can be incredibly tiny. After all, their faces aren’t as important as the fact that they are running from a marauding monster coming through town.

Maybe they are very tiny stick figures in comparison.

I’m not completely sold on the idea of having no player character. I like the idea of the player running around, trying to get the monster’s attention while avoiding the chaos and destruction.

LD #32  Moving Monster On Screen

That mock up image of the monster now moves about the screen on its own, although the AI is basically “bounce off the walls” and will need to be replaced.

I realized I was falling asleep as I was coding, so I think I’ll go to bed.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD32: Weapon Ideas #LDJam

Ok, it’s two hours later. I had leftover green olive and onion pizza for dinner:

LD #32 First dinner

And my wife came home from an event with a red velvet cupcake for me:

LD #32 Red velvet cupcake

I came up with a number of ideas for this theme, especially as people on IRC bounced quite a few around:

  • The Bourne Identity: remember that scene when Bourne used a rolled up newspaper to hit the other guy? And then he stabbed him with part of a pen that was lying around? A game with a lot of random stuff that requires the player to be resourceful and clever.
  • Infectious Agent: a restaurant owner is trying to poison the right spy without killing customers.
  • Kite a Giant: lure a large monster toward a city/castle/friend’s cooler treehouse/etc, while ensuring it doesn’t get bored or killed.
  • Sunlight Focused: kill a neighbor’s flowers with beams of concentrated sunlight in order to win the local horticultural contest.
  • Food Fight: a cafeteria featuring students with ridiculous weapons, such as mashed potato guns and banana missiles.
  • Toys: inspired by the Robin Williams movie, in which wind-up toys fight (I recall this is a multi-decade old game already).
  • Information Warfare: choose which important papers to shred in order to leak secrets.
  • Books: check out books from a library before your coworker does to prevent him/her from learning and getting that promotion.
  • Excruciatingly Severe Body Odor: your odor is repellent. Make use of it!
  • Numbers vs Letters: it’s a battle between the higher level and abstract thoughts!
  • Shapes: an RTS inspired by the different shapes in Flatland.
  • Monopoly: use market pressures to defeat your competitors.
  • Avalanche/Cave-in: cause a disaster to trap other people.
  • Cactus vs Balloon: inspired by some art in my room.
  • Nanotechnology: tiny invaders that destroy your enemies from the inside out.
  • Mind Control: make your opponents do self-destructive things.
  • Fear: scare people towards disaster (for them, obviously).
  • Vampire Hunter: use blood disease to kill vampires.
  • Eggs: birds hatch and peck at opponents.
  • Plunger: you’re a plumber, and you have to save the day.
  • Hopes, Dreams, Aspirations, and Fears: you work in HR at Large Corporation, Inc.

I also tried to come up with a list of potential weapons:

  • Gravity Wells
  • Vacuum cleaner
  • Air guns
  • Summon beings, such as demons
  • Weather
  • Ever increasing mass
  • Sex appeal
  • Paper cuts
  • Bullying
  • Embarrassment
  • Candy
  • Innocence
  • Music
  • Laundry (dirty or otherwise)
  • Humor
  • Banana peels
  • Kisses

Out of all of them, Kite the Giant is the one I keep thinking about. I like the idea of indirectly influencing a destructive force.

I think I’ll go ahead and call it. That’s my game idea, and I’m moving forward with it.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD32: An Unconventional Weapon #LDJam

The theme has been announced, and it’s An Unconventional Weapon.

I think I’ll start by exploring that theme quite a bit, and I’ll get back to you about what I’ll do. I’ll think about this theme over a quick dinner.

My goal will be to have something playable, or at least controllable, before the first 12 hours are up.

Since I’m not using something like Unity or Unreal Engine, I won’t be able to whip something up in mere moments, but I know I’ll be able to leverage some of my own code as I have in the past. Each Ludum Dare gave me something new to make use of.

My strategy for this Ludum Dare is to doodle a lot whenever I’m not programming. I’m not very good with digital art programs, but I can put pencil to paper decently enough, and I can just digitize it after the fact.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

Ludum Dare #32 Is About to Begin #LDJam

I’ll be participating for the first time in two years, when I made a simpler-than-I-would-have-liked game for Ludum Dare #24: Evolution.

Before that, I participated in #11 (Minimalist), #12 (The Tower), #13 (Roads) #14 (Advancing Wall of Doom), #15 (Caverns), #18 (Enemies as Weapons), and #20 (It’s Dangerous to Go Alone. Take This!). I also have a number of MiniLDs under my belt. I’ve gained enough experience to attain Veteran status, so I get +1 to the category of my choice, I think.

I’ll be using libSDL2 and related libraries, NFont, Gimp, Audacity and SFXR, C++, vim, and my Ubuntu system for a development environment.

My past self posted a handy checklist on my blog: https://www.gbgames.com/blog/2012/08/pre-compo-checklist-for-ludum-dare-ld48/ Thanks, Past Self!

As always, I’ll try to cross-post my progress both on the Ludum Dare website and on my own blog.

Oh, and here’s my office pic:

My Office for LD32

Good luck, everyone! I’ve missed you.

Categories
Game Design Games

Does Your Game Instill a Sense of Wonder?

Alice In Wonderland

I recently came across this fantastic TEDx talk from June 2014 by Mac Barnett, an award-winning author of children’s books. Somehow, he managed to share some behind-the-scenes secrets for crafting experiences without ruining what makes those experiences feel so amazing.

Why a Good Book Is a Secret Door:

He talked about how art or fiction can take us to a place where we simultaneously know that what we are experiencing is not real yet believe it anyway.

I’m going to call it wonder. It’s what Coleridge called the willing suspension of disbelief or poetic faith, for those moments where a story, no matter how strange, has some semblance of the truth, and then you’re able to believe it. It’s not just kids who can get there. Adults can too, and we get there when we read.

There are some books from my childhood that stuck with me, and I still have them on my shelf. Aliens for Breakfast by Jonathan Era and Stephanie Spinner is the story of a boy who finds out he has mere days to save the world from the evil alien disguised as the charismatic new kid in his class. It’s about 60 pages long, but it was filled with strange ideas, like aliens traveling through freeze-dried cereal boxes, mixed in with familiar ones, such as dealing with the complex social interactions of childhood.

I loved every minute of reading it, and while I don’t remember much about the made-for-TV movie version starring Sinbad and Ben Savage, I just found out that the sequels Aliens for Lunch and Aliens for Dinner exist, so I’ll be right back.

Ok, I’m back.

As a grown-up now, I have other books that appeal to my sense of wonder. I just finished inhaling The Martian by Andy Weir faster than any Harry Potter book, which is about a man who finds himself stranded on Mars after his crew aborts a mission and leaves him behind because they thought he was dead. Things I take for granted, like being able to step outside without worrying about how much oxygen I have or whether I’ll be able to find food, the protagonist Mark Watney has to work to come up with ingenious ways using the limited resources he has. It’s not like he can have NASA beam him freeze-dried cereal. And if he makes a mistake, he’s dead. Mars is a harsh place.

A place I’ll probably never visit, so it is amazing to live vicariously through someone who did, even though he never existed.

We know these characters aren’t real, but we have real feelings about them, and we’re able to do that. We know these characters aren’t real, and yet we also know that they are.

Barnett went on to say that children get to the wonder a lot easier than adults do.

I’ll agree with my limited experience. My young nieces are the best audiences for my incredibly amateur magic shows. I can make a coin disappear, and even if they can see that it fell into my sleeve, they still aren’t sure if they did, especially when coins pop out from behind their ears.

I want to create that experience with games. I want children to play my games and think about what’s possible in a world they think they know.

Just as I thought about what would happen if the dinosaur at the museum came to life and became a pet for a day, or if it actually rained meatballs and hamburgers from the sky, or if my teachers were actually aliens ready to flunk the planet, I want my nieces to have that same sense of wonder.

Games can definitely do it.

I found it very compelling when Samus Aran lost her suit’s powers early on in Metroid Prime, forcing her to continue her mission without them. I liked how Ness was just a kid when he discovered something strange about that meteorite in Earthbound and had to save the world while also remembering to call his family regularly. Spiderweb Software‘s Geneforge and Avernum series tended to put you in the role of a character who discovers pieces of the truth about the world and must make important decisions about loyalties and goals.

A lot of my favorite games involved a protagonist who suddenly finds himself in the middle of a new situation and needs to figure a way out: The Illusion of Gaia, Chrono Trigger, Homeworld: Cataclysm, Don’t Starve, and yes, even E.T. for the Atari 2600. Beyond the idea of facing a challenge, these are characters who tend to find themselves suddenly confronted with a challenge when they were otherwise living their lives. The challenges intruded on them, and they had to step up and respond.

I want the games I create to put my nieces in the middle of fantastic and surprising experiences, figuring out what to do without limiting themselves to what they think is currently possible. I want them to finish a play session and have it stick with them in the real world.

It would be a fun way to prepare them for their weekend trips to Mars at the very least.

(Photo: Alice in Wonderland | CC BY-2.0)

Categories
Game Design

How to Handle Losing When Designing Games for Young Children

Ruined Game

Most grown-ups can learn to play a new game without too much difficulty, and when they play, losing is understood to be a perfectly expected occurrence. That is, if someone loses, it is entirely possible that person still had fun playing the game.

Young children being introduced to games, on the other hand, sometimes have difficulty with a loss. They may pout or throw tantrums. Some sessions might end with these sore losers tossing the board or cards so that no one can play.

Even before it gets to this point, you might encounter a child trying to win at all costs. You might notice the child being really obvious when slipping a specific card in the right position in a deck before dealing.

Or if you are winning a game, you might be accused of cheating yourself. This accusation is especially ridiculous when playing a video game in which you can’t cheat.

Do you let the child win? He or she might be obnoxious about it. If you thought trash talking was annoying online, play against a cocky kid.

Of course, an inconsolably upset and angry child isn’t a great way to end family game night.

But how do you teach a child that losing isn’t the end of the world, that you can always play another game, that there’s such a thing as sportsmanship and dignity in defeat?

While researching this issue for educational games I want to make, I came across the 2012 Psychology Today article Winning and Losing by Dr. Kenneth Barish. He argues for playing often together and letting the child win, but only sometimes.

It is also important for us to keep in mind that, from the point of view of child development, the philosophy of Vince Lombardi (“Winning isn’t everything, it’s the only thing”) is profoundly wrong and teaches exactly the wrong lesson.

By winning and losing constantly, the child gets to practice dealing with disappointment and learns about his or her own limitations.

Eventually, children should start to understand that games involve agreeing to rules and restrictions. If you start a game of checkers, you can’t just walk away before the game is finished, and you definitely don’t throw the board in the air after your opponent’s piece is kinged.

In the meantime, is it possible to design games so that learning how to play by the rules is less stressful? Where losing isn’t as prominent?

Or is it wrong-headed to try to make a game in which everyone is a winner and so overly-protected children never learn the lessons they need to interact with others when they get older?

Games have always been a safe place to learn life skills. Whether you are running and jumping on the playground or calculating an opponent’s potential moves in chess, you learned how to navigate complex social interactions through play.

Now, there are games that can be played that don’t feature victory or loss, and recreational sports tend not to keep score for very young children. Are these games hampering anyone’s learning? The good news is that “games without winners and losers will have little effect on the desire or ability of children to excel.”

So it seems that you can choose to design a game without the ability to lose and not worry about damaging anyone’s upbringing. The key seems to be to focus on helping players get better, which is something games with their feedback loops are great at anyway.

Categories
Game Design

Thoughts on Wind Waker’s Miniblins

Remember when I said I’m playing Wind Waker for the first time? I still am.

Well, not still. I put it down for almost two months. My last save was in September. I finally played it again.

I’ve been busy.

But I was playing it again, and I was in Forsaken Fortress trying to sneak up to the top of the middle tower to find my sister.

That’s when I encountered the Miniblins again, and I have to remark on how amazing they are as enemies.

There are a variety of moblins in this game. Some sniff around and search with lanterns, and if they see you, they’ll throw the lantern and cause a fire hazard to appear before attacking. Smaller moblins might stand guard with menacing weapons, but they tend to fall asleep if you wait long enough.

But miniblins are obnoxious.

You can hear them before you see them. And you never hear just one, but you can’t be sure. It’s this cute sounding “deh dank, deh dank.”

And then you see them. There’s usually more than one. And they are small. You think, “Ok, these guys look adorable. I’m sure I can defeat them easily.”

And it’s true.

But then you find out one is walking on the wall above you, and one had walked up the wall below you, and suddenly you realize that you’re surrounded.

And when you swing your sword at one, another one hits you with its pitchfork, knocking you down to the ground.

And he laughs. As you lie there while the others “deh dank, deh dank” around you, he laughs at how he made you fall.

From a mechanics perspective, miniblins are simply weak enemies who are quick, capable of moving in places the player can’t, and tend to show up in groups.

They are dangerous because there is going to be more than one, and they knock you down rather than merely hurt you, and you tend to encounter them in places where being knocked down can mean falling to a lower level and needing to traverse the dungeon to get to the same area again. And again. And Again.

But that’s just the mechanics. The sounds they make and the giggling after they hit you?

So obnoxious.

And that piece of aesthetics make them one of my favorite enemies in this game. Without that taunting, miniblins could have been a boring new variety of moblin.

With it, they become bullies who seem to enjoy bothering you for sport.

Categories
Game Design

Making Non-Random Games

When I start designing a game, I tend to try to avoid adding random elements. That is, I don’t want luck to enter into the course of events so that they can be repeatable. One thing follows from another, always. I like my game rules to be the physics of my world. I want the apple to fall from the tree at a constant rate. It shouldn’t be faster or slower on rare occasions, nor should it turn into an orange.

Also, I want the player to have as much agency as possible, and a die roll or draw of a random card seems to take it away. You might have been able to skillfully get yourself into a winning position, but because your opponent got a random boost this turn, your hard-earned advantage is completely lost. Sounds like frustration rather than entertainment.

On the other hand, not having random elements means more often than not that the game is solvable, which means that the benefit of the events being repeatable is also a problem. Once you figure out how to beat a challenge, you know how to ALWAYS beat that challenge. The game becomes boring very quickly.

It’s not impossible to make a non-random game that is relatively unsolvable. Chess fits the bill, but it has the advantage of being developed over thousands of years. I’ve only got months to make a game, or maybe hours if it is for Ludum Dare.

Dice

So, I turn to adding random numbers to my games eventually. It adds variety so that each play session isn’t boringly identical. And depending on how you implement random numbers, you control how much of an impact it has on the events of the game versus the actions of the players. For example, in Lemonade Stand, weather forecasts help inform the player. If it is likely to rain, you might not want to spend as much on advertising and supplies. Of course, the forecasts can be wrong. If it doesn’t rain, you lost an opportunity if you didn’t spend any money.

As another example, the dice rolled in Settlers of Catan dictate the flow of resources into and out of the game. Players might not get the resources they need from the random events, but they can still trade for them. And the robber getting invoked on the roll of a 7 encourages players to spend their resources while they have them.

There is a lot of variety in how luck can be applied. Poker, for instance, is a luck-based game. That is, for any given hand, it’s the luck of the draw that determines the winner. Yet the skill in poker isn’t in winning hands. It’s in knowing when to bet and when to fold. The real game is in managing your response to the luck over the course of many hands.

Luck in Games: Why RNG Isn’t the Answer by Elyot Grant breaks down the roles of luck in games and argues that it is possible, if difficult, to address those roles with non-random solutions.

His goal was to fix the problems with competitive games that randomness introduces. When you play a card game and draw a bad hand, your chances of winning are near zero. Similarly, getting a dominant hand almost guarantees the win. Skill and player agency are effectively nullified, and in a competition, it’s never a good feeling to know that you might still lose very badly despite being the best player.

I am not familiar with Hearthstone, which Grant mentions a lot by way of examples, but his analysis of it’s intrinsic problems related to the role of randomness led to the development of Prismata.

I do like how he breaks down the supposed benefits of randomness, arguing that each be obtained without luck. But then, I’m not sure if some of these arguments are applicable in all situations.

With modern online matchmaking and rating systems, any player of any game with a sufficiently large audience should be able to quickly find a match against an opponent that they can beat 50% of the time. There’s absolutely no reason to deliberately increase the role of luck in determining who wins.

But what happens when your game doesn’t have a “sufficiently large audience”? Or if you’re not interested in playing with strangers, which effectively shrinks this large audience?

Are luckless games necessarily competitive? That is, do skill levels need to be comparable between opponents to make a non-random game enjoyable, or can you have a non-random game that is cooperative or single player and still find it compelling?

Luck in games is a major topic. I’ve written about randomness in game design in the past, and there are plenty of books and articles centered on its role. Understanding it means you can leverage it better in your own designs.

I still enjoy challenging myself to design games with no random elements to see how far I can get before I encounter major systemic problems with the game. Grant’s article indicates it can be done. I’d be interested in hearing about other examples. If you know of any, let me know in the comments section below.