Thursday, January 26, 2012

Menus, lasers and a level

Changes 22/01/12
  • Added a simple menu system.
    The menu currently only allows you to load another level and change your resolution.
    It currently lists the largest couple of resolutions returned by love.graphics.getModes() that are at least 800x600. The menu obviously needs to be expanded to allow custom resolutions and such, as well as a way to rebind controls, set volume and etc.
    It currently looks like this:
  • Fixed annoying bug where standing in certain places would produce artifacts on walls. - Nevermind. It's still a problem. Here is what it looks like:
Changes 24/01/12

  • Cleaned up some entity code to avoid a lot of unnecessary garbage collection.
  • Added wall lasers and timed wall lasers.
  • Added switches which can be hooked up to doors, lasers and etc. like pressure plates
Changes 25-26/01/12
  • Minor changes to drawing code to avoid drawing stuff off-screen
  • Added windows, glass doors, some more floor types (grass and stone slabs) and signs to put messages in levels
  • We've added a much better test level called "los" (don't ask).
  • Getting seen still has no consequences but this level is a pretty good images of what kind of gameplay were aiming at. Also beware that the level is pretty hard, especially if you try to do it alone.

    Screenshot from the level

    4x enlarged version of los.png which, along with los.lua defines the map
    To try out the test level, open the in-game menu (press Escape), select "Load level" then "Load 'los'".

Rolling and stuff - Fri Jan 20, 2012 7:53 pm

  • Gave Herbie ability to roll by pressing the action button when no other action is available.
    Image
    Bad idea? Should each player have a second button?
    Also, there's only a rolling animation for the naked skin right now.
  • Added gradient to horizontal doors for easier alignment.
    Image
  • The game adjusts zoom level upon loading level in case the game runs in a huge resolution.
  • Containers now contains a function rather than a string.
  • The "open" argument tells whether the container was opened or closed. If the function returns true it will be called again. Otherwise the function will be removed from the container. Example:
    local function toiletfunc(open)
      if open == true then
          addMessage("You opened the toilet!")
          return true
      else
        addMessage("You closed the toilet!")
      end
    end
    add("toilet", 1, 1, toiletfunc)
    
    This way a message will only appear when the toilet is opened and then closed, then never again.
  • If a string is given as the first argument it will load that level instead of the apartment.
    Example:   love rob.love test   will load test.png and test.lua.
  • Pressing action at the telephone will load the level "test" for those who might want to play around with it.

First update - Thu Jan 19, 2012 6:57 pm

Herbie & Jamal is a co-op stealth-ish game I'm currently working on with a friend of mine, lukaserritsoe.
I'm in charge of programming and doing some of the artwork while Lukas is doing level design and artwork.

We're close to a month into development so much of the core functionality is already implemented. I'll use the next couple of posts to summarize what we have so far and will be using this thread as a devlog from now on.

The source code is available at https://github.com/SimonLarsen/rob and criticism is very welcome, but bear in mind that we've been designing the game along the way which is reflected in the code, and thus needs some serious refactoring.

Gameplay
The basic premise of the game is that you control Herbie and Jamal, two master thieves, trying to break into office buildings and steal whatever valuable stuff they are hiding (e.g. money, gold, rare video games).
The office buildings are guarded with robots, cameras perhabs laser sensors and other stuff.
You have no means of defence and must at all cost try to remain unseen.

The protagonists
To force the players to actually cooperate the characters will have a set of different attributes/abilities.
As an example Jamal will be able to crawl vents to reach places Herbie can't (due to his huge head). Herbie on the other hand will be able to hide behind crates and stuff and are thus more suited to get places without being seen. We're still figuring out what other attributes/abilities might be.

Graphics/setting
The game features (surprise!) low res pixel art with a somewhat limited color palette. The game is set sometime around the 50's, but with robots and stuff.
Below is screenshot of the protagonists' apartment which will serve as a menu, where you will be able to select levels, change skin and music.

Here is also the current look of the skin selection screen, which is opened when a player presses the action button at a closet.

Music
We're imagining the most suited kind of music for this game is bluesy/jazzy chiptunes. Neither of us are chiptunes artists or jazz/blues musicians but I've been working on some tracks to see whether it's possible. Here are the two firsts drafts:
They are both made using SunVox which is awesome.

Enemies
We're planning on having a number of different enemies in the game. Below is the two currently implemented as well as a security camera

They both simply patrol a predefined path, but while the left one can only look forward, the right one rotates its head to look in all four directions.

We're also planning on having some boss levels with some special enemies that are a lot smarter than the regular ones. As an example the detective one might follow the players in their footsteps and the square one will appear in the paintings placed around the level.
Below are some mockups Lukas did: