I needed a profanity filter for the highscores in an app I made, but I couldn’t find anything free that worked the way I wanted, so I made a simple one myself. It’s pretty basic but someone might have use for it.

You need a list of lowercase words to filter for. The one I used is far too big to paste here, but you can find one by searching for “bad word list”.

private static const badWords:Array = ["lots","of","bad","words"];
// Returns a profane word if found, else ""
static public function checkName(text:String):String {
  text = text.toLowerCase();
 
  for (var i:int = 0; i < charReplacements.length; i++ ) {
    var ra:Array = charReplacements[i] as Array;
    text = strReplace(text, ra[0], ra[1]);
  }
 
  for each (var w:Object in badWords) {
    if (text.indexOf(String(w)) != -1) {
      return String(w);
    }
  }
  return "";
}

The function will detect character sequences that look like some other character, to make it harder to bypass the filter. For example, 1 becomes i, û becomes u, |\| becomes n etc.
In this way “Fuc|<” would be detected for instance. The sequence replacements can even be used to identify inappropriate symbols like “(.)”, by converting them to (in)appropriate words if you like. :)

private static const charReplacements:Array = [["@", "a"], ["0", "o"], ["1", "i"],
  ["2", "r"], ["3", "e"], ["4", "a"], ["5", "s"], ["7", "t"], ["8", "b"],
  ["9", "g"], ["|<", "k"], ["|\/|", "m"], ["|\|", "n"], ["ä", "a"], ["ã", "a"],
  ["â", "a"], ["ä", "a"], ["á", "a"], ["à", "a"], ["å", "a"], ["é", "e"],
  ["è", "e"], ["ë", "e"], ["ê", "e"], ["§", "s"], ["$", "s"], ["£", "l"],
  ["€", "e"], ["ü", "u"], ["û", "u"], ["ú", "u"], ["ù", "u"], ["î", "i"],
  ["ï", "i"], ["í", "i"], ["ì", "i"], ["ÿ", "y"], ["ý", "y"], ["ö", "o"],
  ["ô", "o"], ["õ", "o"], ["ó", "o"], ["ò", "o"], ["(.)","boob"]];

You will also need this helper function for string replacement:

// Helper that replaces all "find" with "replace" in the given input string
public static function strReplace(input:String, find:String, replace:String):String {
  while (input.indexOf("find") != -1)
    input = input.split(find).join(replace);
  return input.split(find).join(replace);
}

It works quite well, let me know if you found it useful or have any suggesstions.

 

Sos at Ludum Dare arranged nanoLD - make a game in 48 minutes. I got the theme RTS and made this. (the theme was random each time you loaded the page but I didn’t realise that until afterwards)
I spent an extra couple of minutes fixing a few bugs afterwards, so maybe 55 minutes in total.

48 min RTS

 

This weekend me and about 10000 others around the world participated in the annual Global Game Jam, the largest game jam in the world. The theme was this: http://en.wikipedia.org/wiki/Ouroboros. Me and my team made a game called Planet of Yrwys (You Reap What You Sow) featuring a hungry harvesting robot:

The game is about a robot, endlessly walking on the surface of a small planet. To survive you have to plant seeds, which turn into plants that you can harvest for more seeds, and so on. To make the task more complicated, you keep going faster and faster, and there is a hungry Capybara eating any of the plants he comes across. Colliding with the Capybara or a plant that has been left too long and turned into a thorny dead bush will make you drop all your seeds!

Each time you complete a circle, you need to eat one seed for energy, and if you pass the flag without any seeds you loose.

I made the graphics and music and a little bit of the programming. Andreas Bjerkeholt (Harteex), Disa Faith (Disaia) and Robert Edström (Legogris) did the programming, and we all made the game design together.

You can find out more, and try the game here: http://globalgamejam.org/2012/planet-yrwys. To run it you need Windows and the XNA runtime, but that should download automatically in the installer I believe. You can also use an Xbox controller if you have one.

 

 

I entered the Ludum Dare game making competition this weekend as usual. The theme was “Alone”. I didn’t have any immediate ideas, so I began by making the basis for a platformer with the theme in mind. Then it sort of evolved as I came up with things I thought would be cool to add.

PLAY

The tools I used:

  • Flashdevelop (IDE)
  • Flashpunk (Game library)
  • Photoshop
  • Audition (sound editing)
  • Cubase (music)
  • Chronolapse (timelapse recording)

Cats don't like rain.

I decided early on to make it atmospherical, and I put a lot of focus on the effects, sounds, music and animation.

Continue reading for more info and a post-mortem. Continue reading »

 

I’m have been working on Coin Runner since Ludum Dare 21. Here is a screenshot of how it looks at the moment, although a lot of it is still placeholder art. As you can see, there are now achievements.

It plays a lot better than the compo version!

There’s also lot’s of new items and skills you can buy. More info coming soon!


 

I participated in last weekends Ludum Dare 48 hour game making competition again. This time the theme was “Escape”, and I made a game where you run from enemies and collect coins, called Coin Runner. This time I focused most of my efforts on the gameplay, hence the squares for graphics. You can try the compo version here: Coin Runner compo-version. I’m continuing to work on the game, so stay tuned.

 

Coin Runner

 

Cross posted at the LD site:

Waking up at 1:30 PM in the day today with aching fingers, I felt happy.

The game is actually pretty fun to play, and not too badly balanced. There are three zones of different colors, and each zone get’s a bit harder. The enemies get a little too fast and jumpy after a while though.

I don’t regret using Flashpunk this time, it really makes everything so much easier than using just as3 like last time. I spent many hours on a stupid bug though, and realised Flashpunk tilemaps do not actually clear tiles when you call clearTile() on them if the clear tile (index 0) is transparent. That was annoying and made me loose a lot of time.

I think the leaderboard can add a lot to the game. Sadly Playtomic has disabled it’s leaderboards due to some problems, but it should be working soon again.

I didn’t really make any graphics at all, but focused on gameplay instead. I think that was a good idea, but the game could really use some better graphics. The music and sound effects could be better too, but they do the job.

A breakdown of the time spent in different applications (tracked with ProcrastiTracker):

  • Flashdevelop 13h
  • Chrome 6h
  • Flashplayer 4h
  • XChat 2h
  • Photoshop 2h
  • Cubase 1h
In total 28 hours!

Entry page: http://www.ludumdare.com/compo/ludum-dare-21/?action=rate&uid=2311

Timelapse:

 

 

Ludum Dare 20 was almost three months ago, and I have been working on a new version of my game The World Above every now and then.

The original game had a lot of flaws. There was only one level, you couldn’t move for a few seconds when you collided which was very frustrating, the resolution was way too high making it unplayable on smaller screens, if you ran out of fuel it was a chore to continue playing as you fell and crashed over and over, and it just suffered from a general lack of playtesting.

Even though there was many problems, I feel like there is a good game in there. I’m especially happy with the controls and movement of the submarine, and I want to get it closer to it’s potential. Due to work over the summer, progress is slow, but I have fixed most of the problems in the LD version, added some new features such as time powerups and mines and replaced many of the rushed sprites with shiny new ones. There are now multiple levels instead of the huge single level, and the tiles in the level are now about half of the original size. (can’t remember why I made ‘em so huge!)

New animating title screen

Continue reading for more info and screenshots.

Continue reading »

 

Someone recently wondered how to pick a color of a pixel from the screen in as3. If you have a bitmap image you can simply grab the color value using BitmapData.getPixel(). But if you want to capture a pixel color value in the stage as the user sees it, including vector graphics, you need another technique.

The way I found was to make a 1×1 bitmap, and then drawing the stage to the bitmap using a translation matrix for the offset. The result is then in the single pixel of the bitmap.

public function pickColorFromStage(x:int, y:int):uint {
   var bmd:BitmapData = new BitmapData(1, 1, false, 0x000000);
   var matrix:Matrix = new Matrix();
   matrix.translate(-x, -y);
   bmd.draw(stage, matrix);
   return bmd.getPixel(0, 0);
}
 

I have made it possible to load/save presets as base64 strings, so that people can share brush presets easily. I used this lib for as3: base64-optimized-as3-lib. The nice thing about this is that the presets are text strings, and can be posted in comments, shared by mail or IM, or any other kind of text communication. The base64 string represents a serialized flash Object-object, storing key-value pairs for each setting, so it should be possible to make presets specifying just some of the settings, while leaving the rest, although in this version all the settings are stored.

You can save the base64 string in a text document at the moment as it’s not possible to save them in the application, but I have added some hard coded presets you can try using the numbered buttons. (they can be accessed with keys 0-9 aswell)

Presets window

To open the preset window, click Presets in the panel or press P. To make a base64 string for your brush, click “Generate base64″, and copy the text. To use a base64 brush that someone sent you, just paste it in the text area and click “Load from base64″.

Open FloralParticles 0.45

You can share presets in the comments below if you want. I might even add good ones as standard presets in the application. :)

 

Some of the new features:

  • Improved line rendering
  • Color mixing
  • Multi-step undo/redo
  • Fade-To-Color setting
  • Save to PNG (lossless and faster)
  • Background vignette (toggleable)
  • Fullscreen mode
  • Mouse smoothing
  • New spawner behaviours
  • Opacity setting, global and fading per particle

Open FloralParticles 0.4

Any suggestions or feedback are welcome, just post a comment below.

Floral Particles 0.4

© 2012 Danik Games DevBlog Suffusion theme by Sayontan Sinha