I recently had my first experience building HTML5 banners during a project for an old employer. I am no stranger to banner building, but a few years back when I was churning them out like a machine, Flash was still dominating the online ad market although it’s decline could be seen on the horizon. During this particular project, I was tasked with creating two sets of banners for two similar ad campaigns, which gave me an excellent opportunity to reflect upon the differences and parallels between banner production in Flash and HTML5.
Just as before, it is very important for banners to be considerate toward the receiver’s bandwidth so as to not slow down page loading or drain a mobile data plan. For this reason, the client will often have strict demands on the maximum weight of a banner, often around 50k, even for relatively large banners. At the same time, beside these weight restrictions, the client wants a top quality result that is aesthetically pleasing and devoid of ugly jpg compression artifacts.
These demands challenge you as a developer to be quite intelligent about how you include and handle assets in your banners. This is especially true for images and fonts, the two largest contributors to the weight of your banners. In this post, I intend to focus on the usage of fonts in HTML5 banners, how it differs from the Flash days and how to reduce the size of your banner fonts with FontForge in order to get as much as possible out of you banner bytes. (more…)
When I was still young and hadn’t yet mastered the art of programming, I discovered that it was possible to remix the classic games from my youth, a procedure known as “ROM hacking”. Having little technical experience at the time, I was limited to whatever tools had been made available by people with more skill than me. I’d stare in awe at what those with the powerful knowledge of “ASM” could do to my favourite games.
Fast forward a bunch of years, programming experience, and a course in computer architecture later. In the years that have passed, I’ve become a skilled programmer and learned that “ASM” is short for “Assembly” (a family of low level programming languages) and how it can be used to alter old games. So when I saw a video by Double Fine and 2 Player Productions’ in which Brandon Dillon does a simple hack of The Legend of Zelda, I thought “I can do that too!”.
The result became Power Peach Sis., a hack of Super Mario Bros. for the NES in which you can play through the entire world of the original as Princess Peach with her floating powers from Super Mario Bros. 2!
The download contains an IPS patch. To play the game, you’ll need to apply it to your legally ripped (or otherwise obtained) Super Mario Bros. ROM. The ROM needs to be expanded before the patch is applied, for more info, see the readme file. Note that the SMB_Expander utility program included in the download may upset antivirus software, but it is clean.
The man standing in the middle in the image above is none other than Markus “Notch” Persson, creator of Minecraft. As a lucky coincidence, I happened to bump into him today at Skuggspel, the local game store, when trying to replace a christmas present that was never delivered. He was kind enough to take a picture with me (left) and Wanted, a friend of mine who runs the store (right).
I find Markus’ story very inspiring, starting a project to explore a game idea is fun and easy, but seeing it through to the end is a skill that is hard to come by. I wish him the best of luck with his future endeavors and a happy holiday.
I’m taking a course in advanced game design right now in which we’re doing a lot of rapid prototyping. Our first assignment was to create a prototype around the theme “Every finger in the room is pointing at me”. Together with two of my classmates, we tried to make a system that would convey a feeling of ostracism through movement. This is what we ended up with: (more…)
When making Mechropolis, it was very important for us to create open-ended challenges that invite to exploration and have a natural presence in the game environment.
So what makes a challenge open ended? For Mechropolis, we defined an open-ended challenge as one that can be solved in several ways, giving the player a new experience each time the game is played.
When working with challenge design for Mechropolis, I found that the best way for me to reach this goal was to approach it from a narrative perspective. What is this thing that makes up the puzzle? How does it fit into the environment? How can I problematize it? By posing questions such as these, the parameters of the challenge can be defined. How does the player interact with the challenge? What is the win condition? How is the state of the puzzle conveyed to the player? (more…)
During the development of Mechropolis, our level designer came to me requesting the ability to limit the area in which the Stationary Thrower robot could turn to keep it’s arms from clipping into walls and to give the level designer more control when creating challenges.
The robot in the image above is the Stationary Thrower. It turns toward the player and throws her into the air when she steps onto it’s plate, kind of like a robotic jump pad.
Limiting the angles allowed for the robot was not a problem, but smoothly turning toward it’s target angle while avoiding the restricted segment proved to be a bit more of a challenge than I had anticipated. I had previously used Unity’s built in Quaternion.RotateTowards function for this, but that function always does the shortest rotation possible which would cause the robot to rotate through obstacles if that was the shortest route.
I decided to approach the problem by manually rotating the robot towards it target on a plane with support for my own angular limits. I’ve tried keeping things as general as possible and while my use for this is limited to the xz-plane, this approach should work on any plane. (more…)
Today it’s a little more than one week since Mechropolis was shown alongside several other fantastic games made by fellow students here at Campus Gotland at the annual Gotland Game Conference.
It has been a while since my last post and a lot has happened since then. The team has been working very hard on the demo for GGC. We had to cut some of the planned content because of time constraints, but in the end we’re all very happy with what we’ve managed to put together in only 10 weeks.
The demo was well received at the conference and received a nomination for best 2nd year project. We got some great feedback on what is working and where improvement is needed, the bottom line being that the concept of fusing robots and making use of their abilities is an interesting one, but we need to work on how we teach the player how to play the game as well as how we communicate the game space to make sure that the player is always aware of all the pieces that make up a challenge.
Below are a few screenshots from the demo as well as the trailer we made for the conference.
We call this cute little thing the Grabber. It’s able to fire it’s claw at a distance and grab onto things. A clever player might lure it into pulling a lever that is out of reach, or fuse it with a Controller (a robot that enables a fusion to be controlled by the player) and hookshot over a chasm.
One thing about this robot that we knew would be a challenge when we designed it is it’s ability to fire the claw around corners by bouncing it off a Shield robot’s shield. This meant having the chain bend around corners in the environment. Mathias, another member of the team had already done some great work on creating a path for the chain that wraps around environment geometry and I took over where he left off, putting it to use in the game. (more…)
Work on Mechropolis has steadily been moving forward. I’ve been doing a lot of under-the-hood work lately, iterating on the systems already in place. But I have also done a few animations for some of the robots that I can actually show you. And so I give you these two robots doing their thing:
I made the small one shake it’s bucket a little just before striking in order to announce the attack to the player. Note that the movement of the large robot’s bucket is not well synched with the physical influence of the throw and will need to be iterated on.
I made this a while ago for a level design course. We had an assignment where we were tasked with creating a narrative through game environment only, no written words allowed. I made a story about getting lost, loosely based on my own experiences as a curious and absentminded child.