One month ago, I was struck with inspiration and needed money to make an idea I had a reality, so I embarked on my first crowdfunding campaign. Today, it reached goal. I’m about to get busy working on turning all that money into a successfully completed project, but I think right now is a good time to reflect on the things I learned along the way so far. Continue reading
News broke today that YoYoGames has been bought by PlayTech.
I don’t know what this will mean for the future of GameMaker: Studio, but often when a company sells a property to another party, or is acquired, there’s a distinct change in direction, and this usually makes people who’ve been happy with the current direction unhappy. As someone who’s been happy with the current direction that YYG has been steering GM:S for the last four years, I’m therefore concerned. What will the future bring? I have no idea. I just hope that GameMaker remains in good hands.
[I got into playing Words With Friends on Facebook and my mobile phone back in 2012, and started writing a lengthy article on designing an AI to play scrabble-like games in a manner that convincingly simulates a learning human. This weekend, several years later, I’m a spectator at a local Scrabble tournament, and decided to finally finish up my thoughts.]
Designing AI for Scrabble-like games
I’ve been playing the Zynga game Words with Friends with various people for a few weeks, and have gotten progressively better at the game. After looking back and reflecting on the evolution of my play, and the development of my strategy, I became inspired by the idea of a convincingly human-like AI that embodied the various stages of my development as a player.
While actually programming it is a little more effort than I want to put into it, even just thinking about the design for such an AI is interesting.
This weekend was the weekend of Global Game Jam 2015. All over the planet, more than 10,000 participants got to try their hand at making a game in 48 hours, on the theme “What do we do now?”
I thought about the theme, and tried to imagine a situation that would lead someone to say, “What do we do now?” and the first think that came to mind was being stranded. Quickly, I envisioned a space ship that encounters a systems failure while in transit, and becomes disabled in deep space, with the crew left to figure out what to do to get things back working again. Continue reading
Some time ago, Youtube channel Numberphile posted a video on a tartan based on the fibonacci sequence.
Inspired by this, I’ve created a fibonacci-based tartan of my own:
Isn’t it beautiful?
My design is based on the first seven numbers in the Fibonacci sequence: 1, 1, 2, 3, 5, 8, 13. It uses one thread of yellow, then one thread of red, two threads of dark green, three threads of navy blue, five threads of red, eight threads of dark green, and thirteen threads of navy blue. To scale up the size of the sett, I will be multiplying these numbers by seven. I call the tartan, Fibonacci-7.
I just started a crowdfunding campaign to register the tartan with the Scottish Registrar of Tartans, and have a kilt made with it. It will cost an estimated $2250 to have it produced. Once registered, the tartan will become available to textile manufacturers to produce cloth and garments in this tartan.
If you are interested in math or just love a beautiful tartan, please consider donating to the cause, and spread the word. If every visitor to this site donated just $1, we’d have funding within less than one month. So if you’re a regular reader of this site and have found my articles on GameMaker useful, please show your appreciation by donating what you can. Thank you.
On 1/23/2015, Global Game Jam weekend will be kicking off. I will be working at the Cleveland Game Developers site at the LaunchHouse in Shaker, OH.
This Saturday, 1/17, I will be leading a Pre-Jam Warmup session to give our participants opportunity to limber up their creative and technical skills. It’s a good idea, and fun. The goal is to build confidence and ensure readiness for the big Jam coming up the next week.
If you want to do your own version of this wherever you are, here’s what we’ll be doing for our warmup sprints:
00: SYSTEMS CHECK — ALL SYSTEMS GO!
- Launch your tools and make sure they still work.
- Check for updates, download and install any (if you wish).
- Test to your satisfaction that your stuff is working (write a “hello world” and prove it’s all working properly.)
- Create/Verify you can log into your GGJ account, any other accounts you may wish to use during GGJ15 (Trello, GitHub, DropBox, itch.io, newgrounds, kongregate, etc.) If you’re new to any of these, you’ll want to take time during the week leading up to the Jam to familiarize yourself with them.
- Create a checklist of things to bring to the Jam, and get everything together ahead of time
- Verify you can connect to wifi at your jam site
- Create/verify you can log into any web accounts you plan to use during the Jam
- globalgamejam.org – be sure to join to your local site
- Make sure your team members can access any shared resources or services too!
- Power cables, extension cords, surge bars
- gamepad controller
- 2nd monitor
- image scanner
- musical devices
- Human comfort
- Pillow/sleeping bag/blanket
We’ll run this one up to an hour, but as soon as everyone’s done, we’ll proceed to the next sprint. If you’re downloading something huge and it’ll take longer than an hour, try to complete this before 1/23/15.
01: Development exercise: Asteroids
Asteroids is a simple action game. If you’ve never heard of Asteroids, google it and watch a youtube video or two, and you’ll get the idea in a few seconds. You’ll understand it faster than I can explain it in words.
Your job is to see how much of it you can build in an hour. You can make your own interpretation of the game, or try to slavishly re-create the original in every detail, it’s up to you. Work independently or as a team (if you have a team). We’re all in this together, so if you run into trouble, ask the room and someone will chime in with advice.
If you finish early, polish for the remainder of the hour, innovate a new feature, or whatever.
At the end of the hour, we’ll take a little time to show off our work and talk about what went well/what could have gone better.
02: Development exercise: Simple 2D platform engine
Take 1 hr to Work up a simple, 2D platform engine from scratch.
You don’t have to spend any time on animating sprites unless that’s something you *want* to focus on as a graphics contributor; square and rectangle programmer art representing the hitbox of your game objects are perfectly fine.
You decide how you want it to work in detail, and implement it however you like. The goal shouldn’t be to try to complete all of these features in an hour, but to choose a few of them and make a solid, well-crafted engine out of them — quickly.
You can design your own requirements, or use the following checklist of features and pick which ones you wish to support in your engine:
- solid platform
- jump-through platform
- destructible platform
- movable platform (player can pick up or push)
- wall walking
- ceiling walking
- double jump
- wall jump
- player health/death
- static enemy (spikes)
- moving enemy
- moving platforms : any or all of horizontal, vertical, swinging, circle
- pickup item (coin, power-up, etc.)
- door (how the door works is completely up to you.)
After an hour of development, we’ll spend an hour on demo and code review so we can learn from each other’s work. The code review is not meant to be exhaustive, but to show off highlights in technique if you found a cool way to do something, or to ask for ideas for how to do something better that you struggled with.
03 – Free for all
If we still have energy and want to keep going, we can come up with more ideas for sprints and ad lib it as we go. Maybe a graphics-oriented sprint, or sound effects engineering session, or a concept/design session where you have to brainstorm a pitch to a randomly chosen theme. We can quickly discuss and vote on it as a group.
XX – Wrap-up:
By now, even those of use who have never met or attended the meetup before will know each other a little bit, and will have worked together. Now’s a good time to talk to each other and find out if you have the right mix of talent and interest to maybe team up next week. This can go on as long as it needs to.
Theme for LD31 was Entire Game on One Screen. I’ll be posting capsule reviews of the games I especially liked, adding more as I find them.
Although it doesn’t fit the theme too well, this is a fantastically well done, unique hybrid of JRPG and video pinball, which pays homage to the original Final Fantasy on NES, and various other NES homages, too.
Tetris-y digital jigsaw puzzle game played against the clock, with a sense of humor. Really addictive.
Another strong showing by Managore, aka Daniel Linssen. Birdsong is the most interesting take on the theme that I’ve seen so far, instead of taking the theme as a constraint, he has crammed an entire metroidvania style side scroller into one screen, and made it playable via a fisheye lens shader effect that zooms in on the part of the game where you are playing. It’s a unique solution that turns the constraint inside out, and makes the game more challenging, both in terms of coping with the visual distortion as things slightly out of view come in, and in terms of providing a tantalizing glimpse of the entire game to the player, from the beginning, and teasing them about what’s coming up, puzzling them as to how to get there. I’m super impressed with this one.
A humorous snowball fight game between Santa and his renegade reindeer. The gameplay is simple and straightforward and very fun. Light on challenge, but delightfully lighthearted to play.
An asymmetric 2-player vs. game, the player with the knife has to complete a mission that the player with the revolver has to stop. What makes it unique is that the Knife player is able to blend in with a group of civilians, and if the Cowboy shoots the wrong person, he loses automatically. It’s similar in that regard to my much less polished LD31 entry, Color is Everything.
Originally published here.
Going into this weekend, I knew I wanted to make a game that would serve as a statement about the intolerable state of civil rights in the present-day United States. It seems like almost every day there’s another story about police using excessive and all too often deadly force, often unnecessarily or for very little provocation. We live today in a police state where citizens rights are routinely denied, due process and the right to a fair and speedy trial have been forgotten, and out government doesn’t merely seem unwilling or incapable of doing anything about it, it refuses to do anything about and then punishes those who speak out and demand it — as evidenced by a mockery of a Grand Jury investigation into the police shooting of an unarmed 18 year old named Michael Brown in Ferguson, Missouri, last month, and a 12 year old boy in my home town of Cleveland, Ohio that happened just as the news hit that there would be no trial in the Michael Brown shooting incident. No trial, and then force used to break up peaceful demonstrations which turned them into riots.
One of the finalist themes was Color Is Everything, and I thought that would work perfectly if it was chosen, but for some reason I didn’t expect it to — I just never feel that lucky, I guess. So I looked at the other themes and considered how I might fit my protest statement into a game that satisfied the other themes, and I thought that I could use “Entire game on one screen” if it came up, but I never expected that it would. When it did, I was surprised, but happy because out of all the other themes it was the one that afforded the most freedom of game concept, so long as I could fit everything on one screen.
In designing the game, I focused almost exclusively on the message that I wanted to send, and the actual game play was secondary. I wish I could have spent more time on refining the game, because as it is I don’t feel that it plays very well. But I needed to be very careful about the content of the message. I’m not sure if I got it right or not, but I tried as best I could to come up with a statement that I could put into a game that I could create in under 48 hours.
Early on I choose to sacrifice graphics, and go with a purely abstract game. I did not want to sensationalize with blood splatter, and after briefly considering creating animated anthropomorphic figures, but worried that whatever I might create in a short timeframe would be insufficient and might resemble offensive stereotypes. I decided to go fully abstract and use simple squares of symbolic, literal black and white to represent my people. While it was very easy to make, it afforded me time to consider how to put the message I wanted into the game. I wanted to drive home the point that you can’t tell whether a person is a criminal based on their appearance, that it is their actions that make a person a criminal. Although, really, crime is almost incidental to the reality I’m depicting — the game is really about a dystopian society where police who are sworn to protect and serve the public are allowed to get away with killing people because a corrupt system looks for any excuse to look the other way when they happen to be black.
I had a basic idea that you’d be a policeman, and you’d just patrol around on the screen while people stood about or walked around, and you’d have to figure out who among them is a criminal, and then try to arrest them or, if you wanted, you could shoot them. I gave the game three ending conditions: if you run out of bullets, if you are killed, or if you kill an innocent (white) person. And I implemented a scoring system which I felt reflects the real-world valuation we place on white and black citizens. Arresting or killing a black innocent has no consequences in the game. But arresting an innocent white person deducts points, while killing an innocent white person ends your career in an instant.
I struggled quite a bit with figuring out how to value the arrest and kill scores for black and white criminals. In the end, I took a base value of 100 points, because it’s a nice, round number, and then I adjusted it to reflect the bias in the legal system. I don’t know how well I did, there, but here’s how I came up with the point values: Using wikipedia, I found an article dealing with race and crime in the united states. In it, I found that the data presented in the article was fairly messy, taking numbers from different years, etc. but it said that the incarceration rate for black males is 4749 per 100,000 — about 4.8% of all black men in this country are in prison — while the incarceration rate for white males is only 487 per 100,000, or about 0.5%. I also needed to adjust for the proportion of the population that these groups represent. According to the 2010 US Census, the population classified as white represents about 63% of the total population, while blacks represent about 12%. Multiplying these percentages together, I got 0.63*0.05 = 0.00315, and 0.12*0.048 = 0.00576. Dividing these two numbers into each other, I got 0.00315/0.00576 = 0.546875, and 0.00576/0.00315 = 1.828571428571429, which I rounded to 0.5 and 1.8, respectively. I took those numbers and multiplied them by the base point value of 100, to make a black arrest worth 180 points, and a white arrest to be worth 50 points. Coming up with these numbers gave me a sick feeling.
Killing a person scores much 100x as much points as arresting them, to reflect that ending a person’s life is a higher stakes proposition than simply arresting them. Perversely, this creates incentive to shoot people, if you’re going for a high score, and for the highest score, to preferentially seek out black targets.
I never tell the player that they ought to try for a high score, but I allow the structure of the game to suggest to the player that this is what they ought to do. I expect that most people will try to play this way at first, and perhaps if they think about what the game is telling them, they might try not to shoot as much. It’s possible to play with a strategy of only arresting people, although you will score much slower, you can play longer as long as you manage to avoid being shot yourself by criminals. If you don’t care about arresting the wrong people, you can probably survive indefinitely, and in the long run the extra points you get for arresting black criminals will outweigh the penalty incurred for arresting innocent white people. In thinking about this more, it makes me question why I gave the population equal proportions of black and white people, and criminals and innocents. It might have been a more accurate simulation to give these populations the same proportions as the census and crime statistics show. But while the census figures are less likely to contain institutional bias, the crime numbers really only track incarceration, not criminality, and I don’t know where to find numbers that would reliably measure the proportion of a population that are criminals, broken down by race. So, it’s a limitation of the design, I suppose, but I’m not sure how to do better there. If I had done this, though, it would have pushed the bias toward targeting blacks much higher, because white criminals would be very rare, white innocents would be very common, and blacks would be the only safe targets for arrest and/or extra-judicial killing. This might need to go into the post-compo update, if I continue developing the game.
To provide the player with a bit of incentive to use their gun, I gave the criminals guns as well, with which they can commit murder, and some of them will try to shoot you, so there is some of the self-defense and defending the lives of others in the game, just as it is talked about in the real world whenever one of these shootings takes place. If I had to do it over again, I’d probably use the crime statistics tracked in the game to penalize your score, so that you would have a bit more direct reason to try to identify and stop the criminals. This will probably be addressed in a post-compo version as well.
The Play Experience
My process in coming up with this design was slow and meditative, so I probably spent more time thinking about the design, what it implied in terms of the message it would send, and then carefully creating a design that imparted the right message. Comparatively speaking, I spent very little time actually playing the game, and I think that shows in the play experience. I’m not really satisfied with how the game plays. The AI is extremely rudimentary, and if you allow the game to continue spawning people and don’t wipe them all up by constantly arresting or killing them, very quickly it gets to the point where there’s too much happening on the screen, and you can’t take it all in, which makes your decisions and actions less meaningful. As well, when the screen fills up, very quickly you end up accidentally colliding with people who are walking around oblivious to you, and obviously that removes the aspect of intentionality from the act of arresting them, detracting from the game’s message.
I think, if I did the design over again, I’d try to make the game slower, so that the player would be able to think about their actions and decide to do them, rather than react in a twitchy manner. Perhaps I’d reduce the number of people that can be on screen at one time (there’s currently no limit, which is bad), and I might also slow down the action so that only a smaller number of people are actively doing anything — I considered making the AI’s move in a turn-based fashion, so you could have time to monitor each individuals actions and try to figure out if they’re a criminal or not, which would give the game more of a detective-y feel to it. I’d definitely like to improve the AI a bit more so that it would make the game less random.
Overall, I’m not all that satisfied with the game as a play experience, I think it could be much better — but working on the project allowed me to work through my feelings on the current events. And, working through those thoughts was a more necessary thing for me this weekend. There’s a lot that is wrong with our country right now, especially in government and law enforcement. Reform is badly needed, and seems like a remote possibility at best. It seems like the system of checks and balances, and the rights that we are all guaranteed exist only on paper right now.
I have an aging Samsung Galaxy SII that I bought a couple years ago. Physically it’s still in good condition, but for the past several months its performance has been terrible. I don’t want to drop $500-700 on a new phone right now, so I’ve been trying to figure out whether the performance problems have a solution. This has been an epic time sink, probably costing me the $500-700 in time that I didn’t want to spend in cash, easily.
A few months ago, the phone started getting really slow and laggy, and would lock up and need a hard reboot or would sometimes reboot itself spontaneously. This came on gradually, and got worse over time. It was particularly aggravating when attempting to use the phone as a GPS.
Then, one day the phone started pulling down updates for various apps, and informed me that there was no room on the internal SD memory, so no more updates could be installed. I have a 32 GB external SD which is where most of my downloaded apps reside, so it was baffling to me why my internal memory would be full, so I investigated.
Somehow or other, I discovered an app called Clean Master, which found a ton of junk on my phone and cleared it out. Mostly this was cache files, some outdated .apk’s, etc. After running Clean Master I freed up something like 1.3 GB of data from the 2GB internal SD, and the phone not only could take updates again, it became fast and responsive again, and stable, and felt like a new phone.
Unfortunately this lasted only a couple of days, and then went back to being slow and laggy again. Not as bad as before I ran Clean Master the first time, but still quite bad. I’d just run Clean Master again, and it would seem to help, although it didn’t seem to make as dramatic a difference on subsequent runnings, and needed to be run several times a day, every time the phone got slow. So it didn’t seem to cure the problem, although it was capable of treating the symptoms and allow me to manage the problem.
Then one day I got a notification from the Lookout Security app that came bundled with my phone, warning me that there was an unpatched vulnerability in the default browser on my phone, and to uprgrade the browser I would need to be running Android 4.2 or later. T-Mobile has never released a newer firmware update than 4.0 for the Galaxy S2, so I had no official support options.
I could have switched from the default browser app to Chrome or Firefox, but I preferred the default app because of its font sizing and zoom made it easiest to read web pages with. But given all the problems I was having with the phone, and that my phone is already rooted, I decided to try out an unofficial firmware for the first time.
Not knowing much about this, I did a little googling and stumbled my way through the process. It wasn’t too bad, although I did end up getting stuck in a reboot loop which took a couple hours of troubleshooting to overcome.
Next, I had problems logging into my google account on the phone, so I couldn’t access My Apps and get them installed for a bit. I eventually figured out what was causing that problem and fixed it, and was able to start downloading all the apps that I’d installed under the previous firmware.
Most of those apps came down, but there were a couple that were missing, two of which were apps that I use the most: Simple.Facebook and the default browser. I figured the default browser might not be available on the new firmware, since it was a baked-in app on the stock firmware. I can’t find Simple.Facebook in the Play store, so I guess it must have been discontinued. I replaced it with a similar app, Tinfoil for Facebook, which seems to be an acceptable alternative and works maybe even a bit better than Simple.Facebook did. And the alarm clock app that I’d been using on the old firmware also is nowhere to be found in My Apps. I gather that when an app is pulled from the Play store, it just disappears from My Apps, although remains installed on the device. LiquidSmooth has its own alarm clock app, which has equivalent functions, so it’s not as big of a deal.
Overall I liked the new firmware, it seems to run fine on my phone and is nice and fast, and the LiquidSmooth people did a good job creating it. But I still have a few problems, some of them quite major.
- ACR Call Recorder doesn’t seem to work now, leaving me without a call recorder. Call recording is an extremely useful feature to have when dealing with companies who are not always competent or honest, or someone who is harassing or threatening you.
- Launcher shortcuts disappear from home screen after a reboot. At first when I started researching I thought this was a problem with the Google Now Launcher, but it seems to be a problem with any launcher I’ve tried so far. This is a major annoyance.
- Battery life has been horrible. I’m starting to dive deep into this because I didn’t know that much about it. I’ve always felt like the S2 drains battery at far too fast a rate, but since the switching to LiquidSmooth it’s been unbelievably bad. If I’m actually using the phone, it seems to drain about 25-35%/hr. Even just a few minutes of use will drain 10% in almost no time at all. Idling off battery it’s like 10%/hr. I am chained to power outlets. I disable everything I can when I don’t need it, and it doesn’t help. I run apps that supposedly help you save battery, and it doesn’t help. A friend of mine who is working on a book on this subject sent me some information, so maybe I’ll figure a few things out.
I’m at the Ohio Game Developers Expo in Columbus, Ohio this weekend.
After Scott Foe’s talk on “Big Problems” I really had to pee. I could have talked to him after I left the auditorium, but I REALLY had to pee.
So did a lot of people. There was a line of people waiting to pee. While standing there, I noticed a ladybug on the sink countertop, on it’s back in the middle of a droplet of water, kicking like mad to right itself, but unable to because the water’s surface tension was gluing it to the countertop.
Ladybugs fall into the classification of “non-gross insects” so, without hesitation, I helped it get on it’s feet by lightly brushing it with my finger until it flipped over. It began walking around on the countertop, too heavy with water to fly.
A few seconds later, a urinal freed up and it was my turn to pee. So I stepped up and took care of what I was there to do.
When I went back to the sink to wash my hands, the ladybug was gone. I don’t know if it hid somewhere, not that there was a lot of places for it to go, or if someone did something to the ladybug.
- Take care of what you need to do.
- The cost of doing what you need to do in the immediate term can be great in the long term.
- If you see someone struggling, stop and help them, even if they seem insignificant. The cost of solving problems that are truly insignificant to you is often negligible.
- You can’t do everything for them, but do what you can.
- You can’t control what happens to them or what other people will do, but try to help them anyway.