Ludum Dare 23 Rankings are in

Here’s how Bactarium ranked in the Ludum Dare 23 Compo:

Ranking/1072 Category Score (out of 5)
Coolness 56%
#204 Innovation 3.41
#259 Theme 3.34
#431 Mood 2.68
#511 Graphics 2.75
#520 Humor 2.07
#545 Fun 2.62
#562 Overall 2.76
#587 Audio 2.07

Not too bad for my first LD48 entry, though certainly much room for improvement. Considering how happy I was to have been able to complete the game within 48hrs, I’m pretty happy with how it was received. It definitely wasn’t a great game, but it’s not bad, and has potential.

I’ve been working on a rewrite in Game Maker Studio which I hope will address some of the shortcomings that I didn’t have time to address in the compo.

The Early 80’s Arcade Aesthetic

My friend Sam recently asked the internet if there were any books on early arcade game aesthetics. I’m not aware of any books that particularly stand out as being focused on game graphics, so I didn’t have any titles to suggest, although there are starting to be quite a few really good books on the history of the arcade.

To help him out, I brainstormed as much as I could, and since I think this ended up being pretty valuable, I figured I’d turn it into a blog post.

Basically every design principle in the graphics of early 80’s arcade games was governed by the insane limitations of the tiny systems of the day. Memory was SUPER expensive, 16k of RAM was a LOT in the late 70s/early 80s. CPU was 8 or 16 bit and SLOW – 1MHz or so. At the time there often wasn’t a dedicated video processing unit, or even dedicated video memory — everything was handled by the CPU, which often dedicated most of its processing power to simply drawing each frame of video, leaving relatively little processing power left over for handling game logic.

Here’s a list of qualities and factors that fed into creating the early 80’s aesthetic:

  • Portrait aspect ratios. Most of the old games, particularly vertical scrolling shooters, had monitors mounted in the cabinet in Portrait orientation (3:4 aspect ratio, as opposed to 4:3 ratio). Portrait gave vertical shooters more range to fire, and enabled manufacturers to build narrower cabinets, which allowed them to store, ship, and display more units in a given area.
  • Large pixels. The dot-pitch of those old screens was pretty coarse. You might have had a 15-, 17-, or 19-inch screen displaying 320×240 resolution, or even 240×160. Individual pixels were quite apparent, particularly in the late 70’s. Macro lens photos of the screen would reveal visible gaps between pixels. Early home computer monitors were capable of displaying a mere 40 or 80 characters of text, and the screens were tiny — 13″ or smaller.
  • Tiny sprites (usually 16×16 or 32×32 max)
  • Animations typically limited to 2-3 frames, though there were sometimes exceptions. Each frame of animation in a sprite cost valuable storage.
  • Bright colors and pastels. Here’s a great collection of color palettes available to home consoles and computers.
  • Grid-based graphics. Most terrain, characters, etc. were sized to fit within a standard grid size. Terrain, mazes, etc. were generally built out of repeated tiles.
  • No alpha channel. I don’t recall seeing any translucency (colors blending when two sprites overlap) in this era. Any transparency would have been all or nothing, provided by a mask. Before masking techniques became widespread, many early games had the background color drawn into the sprite, resulting in artifacts when two sprites would overlap.
  • Limited color palette. 2N colors to pick from, where N <= 8. So, generally 256 or fewer colors on screen. The most common color depths were 1-bit (B&W) and 8-bit (256-colors), although there were a few notable grayscale games, such as Fire Truck. 8-bit color ruled in the arcade until the 16-bit revolution came to the arcade, around 1986-87 — the golden era (roughly, 1978-1984) of the arcade was exclusively B&W, and 8-bit.Oftentimes, computers of the day had a pre-defined color palette and were further limited by the number of distinct colors they could draw on the screen at any one time, such as out of a total of, say, 4096 possible colors, which were baked in to the hardware and could not be changed, and you can only draw 16 (or 64, or 128) of them on the screen (or, in some cases, up to 4 colors in any one sprite) at any one time. If you want to emulate specific hardware, it’s a good idea to research the capabilities and narrow your color selection to match the authentic palette of the original hardware. These limitations often resulted in workarounds such as dithering (drawing two colored pixels closely together to allow the eye to blend them to a middle value). Here’s a fascinating article about the Commodore 64, describing a technique for getting “secret” colors to emerge from the C64’s limited palette by rapidly switching between two colors in the palette to synthesize a new color. It also meant that smoothing your images with anti-aliasing wasn’t possible, because there weren’t enough available colors to do proper tweening. Jaggy pixels ruled the day. Many home computer games of the era did their graphics in Text Mode, which has its own distinct look.See also: MDA, CGA, EGA, VGA
  • Palette swapped sprites. Old computers used color palettes, or indexed color. Out of a gamut of, say, 64 or 256 or 1024 or 4096 possible colors, a sprite typically could only use, say, 4 or 16 out of the 256 available colors. These four chosen colors were defined by a “palette”, and each color on the palette had an index value used to refer to it. By changing the colors in the palette to different colors, or in other words swapping one palette for another, the indexes in the sprite would be updated to use the new colors. Re-using and re-coloring the sprite, saved on storage space. A palette swap took a bitmap and re-mapped the values in each pixel to a different color from the new palette. This is why Mario is red and Luigi is green, for example. It was also very common to have different power levels of enemies denoted by using palette swaps.
  • Blinking and flashing. Rapidly flashing colors as a cheap, eye-catching form of pseudo-animation.
  • Flicker. If the processor couldn’t handle drawing all of the sprites on the screen in every screen refresh, something had to drop. So a sprite might not draw every screen update if there are too many on the screen, or too many in a horizontal scan line.
  • Abstract, iconified representations of things, and cartoony drawings, as opposed to realistic drawings.
  • Reliance on clichés, tropes, and popular idioms to help make graphics more easily recognizable, and a willingness to extend the idiom in a clever/absurd/zany fashion.
  • Fruit and keys and things are canonical bonus items.
  • Giant head/face, tiny body/limbs. They tried to fit the entire character into a 32×32 square, and most of the detail needed to go into the face/head to make the character recognizable and memorable.
  • High contrast is important for foreground/background.
  • Shigeru Miyamoto once gave an interview where he discussed why the original Donkey Kong sprites for Mario…mario
    • had white skin (the background was black, so they wanted strong contrast),
    • had a mustache (it helped his nose stand out and a mouth and chin were too complicated for the number of pixels left in the region)
    • wore red overalls/blue shirt (the overalls helped with the contrast of his swinging arms, which you otherwise wouldn’t get from a solid colored top.)
    • Wore a hat (his dark hair would have stood out less against a dark background, and presented problems with animation.)

Don’t forget vector!

Notable vector titles of the era:

  • Asteroids was the first hugely successful arcade game that used a vector display. Note the intense glow of the UFO and missile in this image, due to the vector display over-drawing those lines many more times than the refresh rate of a raster scan CRT would have allowed.asteroids_630x[1]
    I’m not sure what the very first use of a vector monitor was in the arcade, maybe Lunar Lander?
  • Battlezone When gamers of the area think about vector games, probably the first two titles they’ll think of are Asteroids and Battlezone.battlezone[1]
  • Qix Actually, Qix used a raster monitor, but it was primarily line based art, so I’m including it anyway for inspiration. Plus, it gives you an idea of how a line art game would look on a low-res raster display of the period.Qixingame[1]
  • Tempest Tempest was the first color vector game, and was a sensation at the time of its release.maxresdefault[1]
  • Space Duel is one of my all time favorite games. It featured innovative 2-player co-op/competitive play, and awesome graphics.Spaceduel[1]
    Note the distinct difference in this photo of an actual vector monitor screen photograph vs. how the game looks when emulated on a modern display:score8055_20140504190722[1]
    spacduel2[1]
  • Star Castle An often overlooked classic, the arcade version Star Castle used a color overlay over a monochrome vector CRT:star_castle_large[1]
    Later cabinets made use of a color vector CRT display, and looked much better: screenshot1[1]
  • Star Wars (really impressive achievement vector graphics, actually — convincing 3D, accurate wireframes of familiar star fighters from the movie, simulated fills, etc.)Star_Wars_Screen[1]
    1181242172192[1]

There might be other notables that I’m forgetting, as well, but these should have you pretty well covered.

Color vector screens were something rare and expensive, most vector games were B/W or monochrome (green or amber). I believe before proper color vector monitors became cheap enough, some vector games may have made use of cellophane overlays attached to the screen which filtered the vector image painted on that part of the screen to make it appear colored.

When you DID have colors, they were very bright colors, almost always primary colors (RGB).

The way the vector monitors worked:

  • There are no pixels (not easy to emulate, but maybe the retina display on the new iPhone/iPad can help make this more convincing?) This meant no aliasing or scaling artifacts.
  • A->B, not scan lines. The cathode beam was drawing from A to B for each line segment, not drawing scan lines from top to bottom.
  • Bright and sharp. As such, a vector display could spend much more time drawing each line segment, far faster refresh rates than the 30Hz that is typical of pre-HDTV raster CRTs. Unlike a raster CRT, there was not a fixed refresh rate; the cathode beams traced over the line segments as quickly as they were able to. This resulted in a very bright, flicker-free vector line (again, not easy to emulate) compared to the brightness of a white pixel on a raster display. There was often some ghosting as the intensely bright phosphor dimmed after the object on the screen moved. This was a hardware artifact, not something programmed in to the graphics routine as a special effect. Vector displays GLOWED and were sharp and gorgeous.
  • More stuff to draw means dimmer lines. This also meant that the more stuff being drawn on the screen at once, the overall brightness of each individual line was diminished, ultimately resulting in visible flicker if too many things were being drawn at once.
  • Even brighter vertices. Where line segments intersected, or at vertices, the beams additively excited the phosphors resulting in an even brighter point at the corner in relation to the brightness of the rest of the line segment. We’re talking REALLY excited phosphors!
  • Geometric shapes and polygons, not curves. Curves would have required far too much computing time to calculate precisely. Curves were always approximated with line segments. Linear functions are way faster than polynomial and trig functions, and the processors of the day didn’t even have dedicated floating point units (FPUs).
  • (Usually?) a single line thickness for all graphics. I can’t think of any vector games where the line thickness varied, but it’s possible there may have been some. Typically the lines were quite thin, like pencil lines.
  • No fills. Everything is a wireframe — maybe a simulated fill by drawing in a bunch of lines in a pattern. Fancier 3D games would occlude line segments that were “behind” the surface of some other object, but a lot of them just let you have a kind of x-ray vision effect where you could see through the wireframe.
  • Black background. You can have any background color you want, as long as it’s black.
  • Favorable to 3D. These properties made 3D games much easier to draw in vector than for raster graphic displays of the time. So a lot of the early 3D experiments were done with vector displays, most notably Battlezone.

Further reading

http makes us all journalists.

Something I did made the paper a year ago, and I just now found out about it:

http://blogs.sfweekly.com/thesnitch/2011/09/anonymous_circulates_diy_press.php

The blog article mis-attributes the quote “http makes us all journalists” to Peter Fein, who I’ve never met or had any dealings with, but I actually came up with the slogan, and the 1.0 design of the press pass. [Update: It turns out that I have met Pete, but it was long after the fact of the BART protests. In fact, without realizing that he was the same person from the article above, I met him and his wife Elizabeth at Notacon9. I’m happy to report that they’re wonderful people.]

After I created the design, and it was put up the noisebridge wiki, I remember at the time a number of journalists took offense to the slogan, completely missing the point of it while being defensive about their college major or profession. I guess it stings when your career is threatened by the emergence of a new medium that the old guard doesn’t understand readily, misses the boat on, and you watch newspaper after newspaper go out of business or get swallowed up by corporate media conglomerates.

I get that Journalism is a serious discipline and has standards, most of which are completely gone from broadcast and publishing these days, but whatever, they’re important standards. Saying “http makes us all journalists” wasn’t meant to insult your diploma, your profession, your Peabody, or your Pulitzer.

The point was that the slogan is directly after a quotation of the full text of the first amendment, which guarantees freedom of the press. The internet, especially http, enables all of us to be our own press. Freedom of the Press isn’t just freedom for Journalists, but for artists and authors and everyone who has a mind to express thoughts with. “With HTTP, All Can Publish” might have been a more accurate slogan, but I came up with the idea in about 10 minutes, and I like the spirit of it, so I’ll stick with it. Frankly, I’d rather there be more agitated journalists in the world, rather than the corporate media shills that have largely supplanted them, while abdicating the Fourth Estate for a comfy paycheck. If you’re a journalist and the slogan pissed you off, good. If it inspired even one person in the general public to take up the mantle and aspire to become a serious journalist, even better.

I created the design when a friend in SF tweeting about the Bay Area Rapid Transit protests, that were happening at the time, said that people who didn’t have press passes were being denied access to the protest area. The protests were in response to a police shooting and killing of an homeless man who was on the prone on the ground at the time he was shot, and not a threat to anyone. That shouldn’t have happened. I felt strongly that the protesters had a right to protest and a right to cover their own actions and publish about it, so I created the press pass. It took maybe a half hour, a couple of rectangles in Illustrator, and I was done. The idea that the right to be present to cover an event should be limited to those who possess a Press pass struck me as an unconstitutional abridgment of rights reserved for all. So I created a Press pass for all.

The version I created didn’t have the photo of the Guy Fawkes wearing person in the ID photo. My idea was to take your own passport photo and put it in there — I measured everything out carefully to be sized correctly, and made the card the size of a ISO spec for an ID card that I found details on the internet.

The image at the right is the symbol for Noisebridge, a SF hackerspace that I’d like to visit someday. I ganked the image from their website and incorporated it into the design, since the friend who got the idea started was affiliated with them, and they were involved to some capacity in organizing the BART protests. I’ve met some cool people from Noisebridge who I consider to be good people: bright, conscientious, inquisitive, concerned.

The reverse of the press pass had the text of the First Amendment and the slogan “http makes us all journalists” which I meant to emphasize the fact that the internet is a truly democratizing force, enabling each and every one of us to communicate with everyone else, reaching people we might never otherwise have known about, and impossible to censor… though, they never do quit trying.

Someone else put the Guy Fawkes image in there, but you could just as well replace it with your own image if you wanted, as I originally intended. The “points system” for doing this or that with the pass to make it more authentic looking was also someone else’s idea, as was the information resources to help people know their rights. Each contributor acted freely of their own accord to contribute their ideas and built off of them without ever talking to each other. It is what you make it. Modify to suit your needs. Do what you want, be responsible for what you do. That’s the power true freedom gives you.

I’m not a member of Anonymous, as I’m not posting this anonymously. Anonymous does some good, some bad, just like anything else. I don’t know anything more about them than what you can read on the internet.

###

More favorable coverage, with an image of the original design:

http://lafiga.firedoglake.com/2011/08/23/http-makes-us-all-journalists/

Ludum Dare 23 postmortem 3

(Part 1 | Part 2)

Making Enemies

Saturday I developed Enemy AI and Food. The first Enemy was actually done Friday, simply a renamed, re-colored (red) variant of Player with a collision event to handle contact with the Player, and the control scheme modified to have the Enemy bacteria follow the nearest Player bacterium, not the mouse.

What resulted from this was actually surprising: (more…)

Ludum Dare 23 postmortem 2

(Read Part 1)

Once I decided that my idea to create a game based on bacteria was both interesting and within my capability, I needed to figure out if it would be technically feasible. I knew that I would be working in Game Maker, because I know it the best and can get results quickly with it.

Choose Your Weapons

I toyed with the idea of (more…)

Ludum Dare 23 postmortem

Is it supposed to be ironic and funny that they call these things post-mortems? What died?

My mind rebelled when they announced the theme Tiny World. There was another theme that I’d hoped would win, because I’d recently had an idea to do a game like that one. But it didn’t.

Friday night I was hanging out (more…)

Bactarium: Tiny Worlds – A Ludum Dare 23 Game

I participated in my first Ludum Dare over the weekend. The theme for Ludum Dare 23 was “Tiny World”.

My game is called Bactarium. The title is a portmanteau of Bacteria and Terrarium. It takes place in a petri dish.

Bactarium by Chris Sanyk - LudumDare 23 "Tiny World"
Bactarium by Chris Sanyk for LudumDare 23 "Tiny World"
Source and win32 .exe build.

Ludum Dare submission page.

Tutorial: Building a Game Maker Extension

[Update 1/13/2014: See the official GameMaker documentation and this MSDN blog entry for how to build GM Extensions directly inside of GM:Studio. The GM Extension Builder tool that I explain how to use in this article will build GEX that can work with GM 7, 8, 8.1, and GM:Studio. As long as the GML used in the extension is compatible with the version of GameMaker that the extension is added to, the extension should work. ]

One of the nice things about Game Maker is that it is extensible. Developers can make their code more re-usable by converting their GML scripts to Game Maker Extensions. Once the .gml code is packaged in a .gex extension, you can import the extension into Game Maker and use the functions it provides in any project with ease. This means over time you can build up an entire library of re-usable functions that you can bring into your projects, saving you time and allowing you to focus on building new stuff instead of re-implementing the same basic things again and again. (more…)

Crowd Funding

I became aware of Kickstarter a few years ago when hacker historian Jason Scott of textfiles.com tried to raise $25,000 to fund “The Jason Scott Sabbatical“, a year off from work to be devoted to a documentary project that ended up being Get Lamp. For $50 I would get a DVD copy of the documentary after it was finished, if he finished it. This was a big If, but I had seen Jason’s excellent BBS documentary and that was enough to sell me on the project.

To me, it was clear: I wanted to see a documentary about text adventure games. Here was someone who’d probably find a way to do it anyway even if he couldn’t raise the money, but it might end up taking years longer for it to happen without funding. I’d never spent even $20 on a major DVD release from a big studio film that already existed before, but I was happy to give $50 to Jason in order to have a chance at seeing what he could do with it.

Then I waited. And waited. Meanwhile, Jason worked his ass off and made a kick-ass documentary, produced a DVD, and I got it. Along the way I got many updates from him describing what he was going through, sometimes a video clip. The whole time I felt completely confident that his project would succeed, barring a plane crash or heart attack or something. And successful it was. I was so happy when I received my copy in the mail. It seems like yesterday, but it’s been a couple years now. It retrospect it feels like it happened so quickly.

When Jason came around again saying he’d produce three more documentaries for $100k, I gladly put up $250 to get a copy of each of them. If it doesn’t happen, I’ll be sad, but not for the $250. I’ll be sad because we won’t have our culture enriched by three amazing documentaries, and because it’ll mean that Jason’s been incapacitated somehow, and both of those things are worth being sad about.

Today, Kickstarter has become an increasingly popular way of raising money for various projects. It’s a beautiful thing, the internet making it possible for someone with an idea and drive to find a way to make a dream happen, for someone with vision to share that vision with people and find individuals willing to put their faith in it, and allow that person the means to work on achieving their vision without the undue compromise and loss of control that can accompany venture capital.

A few months ago, a major Kickstarter success created headlines when Tim Schafer’s Double Fine Adventure project went viral, raising over $3.3 million, or about 8 times their original goal. Double Fine’s success came due to Schafer’s reputation and track record (Monkey Island, Day of the Tentacle), and the fact that he wanted to do a game project in an underserved genre that once was really popular, and apparently still is after all, despite the so-called “triple-A” industry choosing to ignore it for many years.

One way of looking at Kickstarter, at least for certain projects, is as a way of dressing up “pre-sales” and getting good marketing for a product that would have existed anyway. I avoid anything that looks like this, which is why I didn’t put any money into the Double Fine Adventure project. If and when it comes out, if it looks good, I’ll just buy it. If it sucks, I won’t. I prefer to put my money into projects that may not happen without my $10 or $50. But a lot of people didn’t feel that way, or their love for Tim Schafer’s work was enough for them. I’m sure a lot of them simply got caught up in the excitement and wanted to see how high they could push the total, too, because people are like that.

So it’s a time of exuberance and good feeling for Kickstarter. A time of irrationality, as well. There’s a manic party atmosphere surrounding successful fundraising drives, jubilance and celebration.

But what we normally think of as success isn’t just the raising the money part. It’s the doing it part. This takes months and years. And it’s never guaranteed to be successful, or be everything that everyone hoped.

It seems inevitable that at some point, there will be a high profile failure. Imagine Duke Nukem Forever as a Kickstarter project. Imagine a Bernie Madoff Kickstarter. Oh noes! So I’ve begun to notice a few people have begun to express concerns and doubts about Kickstarter, a creeping negativity. A dose of realism is a good thing, but I still think Kickstarter is a great thing and I would rather see many projects attempted and a good number of them fail than no projects attempted.

It should be obvious, but with all the exuberance it’s good to remember that there’s always risk in life, and Kickstarter projects are no different. But the possibility of failure shouldn’t dissuade you from taking a risk. You should normally only take risks that you can survive if the risk pans out and there’s failure.

Most if not all Kickstarters have backing levels that allow you to support a project at a tiny amount of risk. How much you’re willing to donate is a personal choice, and if you’re comfortable with donating the amount money, it should be with the understanding that it’s possible the project could fail. Is it still worth it to you for the chance to see it succeed? Then go for it.

Another obvious point: It’s a good idea to evaluate the Kickstarter proposal to get a sense of how likely it is that the proposal will result in a successfully completed project. Do research on the people behind the project and find out what they’ve done. If they have a track record that suggests that they can do it, it’s probably a safer bet that they will.

But a big part of the beauty of Kickstarter is that it allows people who have no track record, but who do have a dream and some ability, to get a chance to try to realize that dream, instead of getting sucked into a low-level peon position and soulless corporate slavery. If the person has no track record, but still presents themselves well, and somehow demonstrates that they are prepared and understand what they’re getting into, and if the project idea means something to you, it’s worth taking a chance on, at least a small one.

Kickstarter doesn’t take just anyone’s proposal, and they do a number of things to make sure the ones they do take on have a better chance of success. Kickstarter doesn’t just allow people to market their fundraising efforts for worthy projects, they provide guidance. I believe Kickstarter understands that in order to remain successful at funding projects, they need to guard their reputation and ensure that as many of the projects that get funded through Kickstarter do end up being completed, and have a realistic chance of it from the beginning. Still, there’s always that risk… so, no one’s throwing money they need in order to live on Kickstarters, right? If you’re comfortable parting with the amount, and you think the project would make the world a better place, then take the risk, I say.

HealthHalo extension for Game Maker

I whipped this up in about a half hour at the April Cleveland Game Developers meeting. It’s a very simple, but useful function which draws a Health Halo [aka “health meter”, “life bar”, etc.] above the sprite of any Game Maker object that has member variables named life and maxlife.

Health Halos are very common in multiplayer and RealTime Strategy (RTS) games.

As always, the source is freely available, along with a demo project. Download the extension package .zip file from the Releases page