MAME going open-source

Happy news for MAME developers.

Gamasutra reports that MAME is going open source to be a “learning tool for developers.”

This is notable because MAME is seen to be the premier emulator for arcade games, and the volunteers who maintain it have done laudable work to preserve artifacts of the game industry in a playable state.

[Source]

Via BoingBoing.

MAME logo

Verigames: verify software by playing games

VerigamesPlay games to help defend — or at least debug — your nation.

Formal Verification is the process of rigorously analyzing software to detect flaws that make programs vulnerable to exploitation. Performing this analysis requires highly skilled engineers with extensive training and experience. This makes the verification process costly and relatively slow.

The Defense Advanced Research Projects Agency (DARPA) Crowd Sourced Formal Verification (CSFV) program is interested in improving and advancing the current processes of formal verification by significantly increasing the number of people working on formal verification projects at any given time through crowd-sourcing. CSFV augments the intensive work done by formal verification experts by greatly decreasing the skill required to do formal verification.

Much of the work required in the process of formal verification can be automated. Computers can be programmed to automatically scour software applications and verify the absence of certain bugs that make the applications vulnerable to misuse. However, certain formal verification work needs to be done by human experts specifically trained to discover and address issues that can be missed by computers. However, there aren’t enough of these experts to cover the huge amount of software generated in today’s modern computing world.

CSFV seeks to add more human expertise to the process of formal verification through fun and engaging video games. The games are created to assist in the formal verification process as players solve puzzles and increase their score. Video games that represent the underlying mathematical concepts allow more people to perform verification analysis of software efficiently. We empower non-experts to effectively do the work of formal verification experts—simply by playing and completing game objectives.

[Verigames: About Us]

verigames.com

facebook.com/PlayVerigames

Verigames YouTube channel

DARPA press release (December 4, 2013)

Via NetworkWorld, via Slashdot.

Example: Xylem

Xylem is a Verigame game which happens to have a nice YouTube video:

Software developers across the world have a major problem producing bug-free reliable code.

Our task is to help the specialists achieve their goal of ensuring that software that is produced is bug-free.

The way we do it is to take that code and turn it into some puzzles and put them in a game that we called Xylem, and crowdsource the games and the results of the game play help us to produce code that is bug-free.

What next?

This is all very interesting, but doesn’t go deep enough.

I want to know more about the principles of how we “take that code and turn it into some puzzles”.

Zuckerberg on games and programming

In a recent online Q&A, Facebook CEO Mark Zuckerberg talked about playing games as a kid, and growing up to be a computer programmer.

Zuckerberg suggested that a lifetime spent playing video games could prep kids and young adults for careers as programmers.

“I actually think giving people the opportunity to play around with different stuff is one of the best things you can do,” he told the audience.

“I definitely would not have gotten into programming if I hadn’t played games as a kid.”

“Most of the engineers I know, who are the best engineers, are self-taught,” Zuckerberg added at the Q&A. “It’s not because they took some classes.”

[Source: Are video games the gateway to programming?]

Via Slashdot.

Tetris and Software Testing

Jack Witham recently observed:

It’s hard to test software: even simple software!

He writes:

Tetris is one of the best-known computer games ever made. It’s easy to play but hard to master, and it’s based on a NP-hard problem.

But that’s not all that’s difficult about it. Though it’s a simple game that can be implemented in one line of BBC BASIC, it’s complex enough to be really hard to thoroughly test.

Ideally, a game tester has to try every possible action, in order to be sure that the game works correctly whatever the player does. But even in a simple game, there is so much to test!

Recently my employer Rapita Systems released a tool demo in the form of a modified game of Tetris. Unlike “normal” Tetris, the goal is not to get a high score by clearing blocks, but rather to get a high code coverage score. Tetris RapiCoverTo get the perfect score, you have to cause every part of the game’s source code to execute. When a statement or a function executes during a test, we say it is “covered” by that test.

I like it!

It’s a game and a tool.

Ben Heck’s Raspberry Pi Gaming Console

This looks like fun:

Ben Heck Show: Portable Raspberry Pi Part 1

Via Revision 3

Via YouTube

Turn this:

Ben Heck Raspberry Pi Console project overview

Into this:

Ben Heck's Raspberry Pi Handheld Console

Using little more than a 3D printer and a £25 Raspberry Pi computer, he’s crafted the ultimate gaming handheld, a GameGear-style computer with gaming controls and an LCD screen which plays all of the classic arcade games from yesteryear, like Metal Slug and Contra.

“The Pi was fun, it’s a two sided 3D printed case, the 3D printer was great for it as it used different depths for different things,” he says. “The 3D printer helped me make a professionally looking case, and it only took around two hours to print each side.”

[Red Bull UK]

Via Slashdot:

Ben Heck makes a pointLegendary DIY gaming guru Ben Heck has given a new interview in which he talks about the Access Controller, his modular controller for consoles that lets disabled gamers play with one hand, and how he plans to update it for the next generation of consoles: ‘I’m sure I will. At the very least people are going to want the accessibility controllers I build … People have already asked about them for the next-gen consoles, and that was at E3. When I was there, the thing I looked at the most was the controllers. The Xbox One looks pretty similar to what we have at the moment, but they finally fixed the D-pad.’

[Slashdot]

See also Digital Trends:

Over the course of two 20-minutes episodes, Heckendorn shows us how to turn the 512MB Pi into a kick-ass, Linux-running portable computer that looks a bit like the GameBoy Advance. In Part One, he takes us along as he figures out how to combine the mini-computer that is the Raspberry Pi with a USB-powered Logitech gaming controller, as well as find a large enough battery pack to power both the Pi and an LCD screen that he pried from a backup camera from Amazon. He even maps the joystick controls to the Pi by using the Multiple Arcade Machine Emulator, so that Pi will understand all your button combos in addition to your keyboard strokes.

Ben Heck with Raspberry Pi project components

But that’s not all. Heckendorn actually takes each device apart to save the components he needs inside a handheld console. For example, he removes the Ethernet adapter from the Raspberry Pi, but keeps the rumble pack from the controller before soldering all the disparate parts back together. At the same time, he’s also thinking about the shape of the device depending on the location of the batteries and buttons. By the end of this episode, we can already see a rough sketch of this Pi-powered console taking shape, right down to the locations of the screws.

[Gloria Sin @ Digital Trends]

What’s a Raspberry Pi?

Raspberry Pi

The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We want to see it being used by kids all over the world to learn programming.

The Model A will cost $25 USD and the Model B $35 USD, plus local taxes and shipping/handling fees.

Model A has 256MB RAM, one USB port and no Ethernet (network connection). Model B has 512MB RAM, 2 USB port and an Ethernet port.

[Raspberry Pi Frequently Asked Questions]

Buy Raspberry Pi

Quasi-Objects of Lorenzo Oggiano

“La vita è un processo reale e autonomo indipendente da qualsiasi specifica manifestazione materiale.”*
— Lorenzo Oggiano

Quasi-objects of Lorenzo Oggiano

“Quasi-Objects” regards data actualization, the production of biologically non-functional organisms and ecosystems as transient output of an operative practice: aesthetics of process…

lorenzooggiano.net

I find these forms entirely fascinating, and practically begging for game design applications.

The forms are computer generated. I have no further details, nothing about the software involved. But just from looking at these still photos, I can see algorithms at play which would make a terrific Boss Battle in a first-person shooter … The Blob meets The Matrix ….

Somebody ought to make a game based on these principles. They really should. I would pay to play such a game, and then pay more for the source code.

Via Boing Boing, via but does it float.


* “Life is a real and autonomous process independent from any specific material manifestation.”

Debugging Techniques

Some useful tips on debugging your code from roel at devmaster.net. This is in response to a question about collision detection in C#, but the same techniques apply to a wide range of situations in game programming.

roel writes: “Use your debugger to find out what happens …. If the problem occurs arbitrarily, this is usually my approach:

  • make your code work deterministically: fixed timesteps, random number generators with fixed seeds;
  • add a frame / iteration counter;
  • add code that detects your problem “player is one pixel above the ground” and then outputs that counter;
  • run your program and remember the value of the counter;
  • add a breakpoint when that counter is reached so that your debugger kicks in in advance of the frame/iteration where the problem occurs;
  • restart your program and wait until the breakpoint is reached;
  • step through it and see what went wrong and fix it.”

Infiltration

“Javascript- and browser-based games offer a very low barrier of entry.”
— Zach Johnson

Infiltration
Indie-game developer Zach Johnson is the author of Infiltration:

Infiltration was built in response to blog Boing Boing’s call for games to be developed that were inspired by “chip music”. Most likely very familiar to gamer cycles but not far beyond, chip music is inspired by early video game soundtracks. Think Asteroids, Pac Man and a host of Nintendo games. Grab a Casio keyboard and hang on …

Johnson, a fan of this unique musical genre, has spent more than his fair share of time listening to chip music and envisioning the game activity that it might accompany. A User Experience developer at Worrell, he says, “Video games contributed to shaping my entire career in computers.” It was clearly a natural for him to develop a chip-music-inspired game.

Indie-game-developer game designs tend to be very simplistic, with an almost nostalgic look and feel. “Part of the design is a nod to the old-school music, but it’s probably more about the amount of time and money indie game developers have to spend on the games.” He goes on to note, “It took nine people a year to write Pac Man; I wrote this in about 30 hours.”

Johnson also saw an opportunity to advance his passion for open programming. “I wanted to make a game that didn’t need a plug-in.” Hence the use of Javascript, allowing the ability to play the game directly from your browser. ” Javascript- and browser-based games offer a very low barrier of entry,” notes Johnson.

Phil Wilson @ minnpost.org

Caspian Learning Launches Simulation-Focused Web Deployment Tool

Caspian Learning is now offering development tools for web-based simulations, including first-person over-the-shoulder view in 3D worlds:

Thinking Worlds editor

Simulations and serious games created using Caspian’s Thinking Worlds authoring tool may now be accessed online via Shockwave and Java, obviating the need for game-specific browser plugins.

The new functionality is made possible thanks to a recent core Thinking Worlds update integrating Java Applet and Java Webstart development. Java deployment will be available to all Thinking Worlds users in the next version release.

Thinking Worlds logo“Java technology is present in almost all of the world’s corporate and military networks,” notes Lee Rushworth, Marketing Executive for Caspian Learning. “Having the ability to rapidly create and publish simulations into these secure networks without the need for additional 3rd party plugins removes another huge barrier to the widespread adoption of simulations for training and performance within these sectors.”

Danny Cowan @ Serious Games Source

Now there’s an interesting observation: “Java technology is present in almost all of the world’s corporate and military networks.”

Snake Game Design Question

Stack Overflow is a useful resource for programmers — a repository of individual questions and collective responses, by and for programmers.

Someone recently asked a Snake Game Design Question:

I’m trying to make a snake game with additional functionality where snake can eat different types of food some of the foods will give it special powers for some time. like that

For designing diff. food i’m making a food interface. And all types of food implement it. So that using only Food’s ref. i can create any type of food.

The only power is representing a power. I can represent it either on board or in the snake. Snake is the best option as it seems to be more logical. Can any one tell me how am i suppose to represent it??

Snake is a classic game — one of my favorites.
Snake
Wikipedia states: “Snake is a video game first released during the mid 1970s in arcades and has maintained popularity since then, becoming somewhat of a classic. After it became the standard pre-loaded game on Nokia phones in 1998, Snake found a massive audience.”

The Stack Overflow responses include:

You might want to take a look at the Template Pattern or the Decorator Pattern.

The basic idea would be that your “Snake” would have its operations exported into a module tree which are called. So for instance Snake.Move() would really just check to see if there was a move modifier (as provided from your “powers”) otherwise it would default to its own internal move object. Depending on how you implement it the power could replace, temporarily override, or cascade its effects.

And:

You could create a base powerclass of which every food holds a reference. Every food this way can have a certain power.

For every power, you inherit form this base powerclass.

the moment you eat the food, the power class is transferred to the snake. The snake could hold one reference (to the last eaten power), or even a list of powers (if multiple powers can be active at the same time).

And:

Yes, per snake is more flexible. If you were to make it a multiplayer game then each snake would have its power.

What you seem to be missing is Power->Food mapping. But that really depends on whether or not one Food gives many Powers or one Power can have different powers.

Well there are many ways how you can do this. Most basic I can think of is having a static method that will produce a different powers when passed different type of food. Whenever your snake eats something you call
SuperPower.onNomNom(FoodEaten)