dimanche 12 janvier 2014

balancing is hard...

But I think the game is much more playable now (link) that it was when I originally posted it. Beta tests of the 3 levels available gave rather balanced rates of victory. Instead of producing many levels, I'll spend the rest of my time tuning the 3 that I've designed.






Cheers,

Steve

time lapse

Hey, just to tell you that if you are interested here is the time lapse that summarizes my last 48 hours in 3 minutes :

Well it's there

I just submitted pet theft as an entry to the mld48 (link).
The game and rules are accessible on my personal webpage (link).

I don't consider it as finished, and I'll spend part of my afternoon trying to improve it. I'm actually waiting for feedback from my friends, and trying to make sure the game levels seem balanced.
The problem with multiplayer games is that they are actually hard to test by yourself :).

My little brother told that the sound gameplay was underexpoited; I agree with him and think that it's an interesting idea that deserves more experimentataion. But using puzzlescript as an engine constrained me in this regard. I have one or two ideas to make it more interesting that I'll also test if I have time.

I wish good luck to all of those who are working hard to ship their probably-more-ambitious-than-mine game on time.

Cheers,

Steve

samedi 11 janvier 2014

first playable version of pet theft

Hi there!

Here is the link to the first playable version of my game, which I call pet theft.
http://fatprimate.free.fr/games/pet_theft.html

Any comments on this early version are more than welcome.

Here are the game rules:

Required material:

  • A headset
  • a web browser
  • a friend :)

Game description:

Pet Theft is a two player infiltration game. The first player (player1),  controls a red character .
Its goal is to steal one of the three pets available in the map: a horse , a cat , or a bird .
The actual target is randomly determined at startup, and player1 is the only one to know which
pet is its real objective.

On the other hand player2 alternatively controls 3 characters (green , yellow  and blue ) to prevent player1 from reaching a target. 

This task is hardened by the fact that the red character is invisible, unless a straight line, free of obstacles can be traced between the red character and any other character.

Possible actions:

  • Moving a character is achieved using the WASD keys or the directional arrows. It is recommanded for the player1 to use the WASD keys. An icon in the top right corner indicates which character is to be moved.

  • Pushing a crate is done automatically when a character walks into a tile occupied by a crate.Several crates can be pushed at the same time. Crates won't be pushed into tiles occupied by a wall, a character, or an objective.



  • The red character is only visible if no obstacles between him and any other character. Obstacles can be:
    • crate 
    • wall 
    • an objective  

  • Once per game, player1  can press X and create a doppelganger on the tile he is currently occupying. This can be used to trick player2.


In-game walkthrough:

  •  Player1 starts. Before performing its first move, he must make sure his headset is on. After its initial move a sound is played. The sound matches with an animal and indicates to player1 its real objective.
  • Player2 plays after, moving the green, yellow and blue characters successively.
  • Then it's player1's turn, and so on.
  • Player1 wins if the red character "walks" on the objective.
  • Player2 wins if any character "walks" on the red character.

raycasting in puzzlescript

Another little technical issue I encountered was to determine whether player1 is visible by a soldier or not. After determining a set of obstacles occulting the view,  I came up with the following algorithm:


  • First, I pick a direction (say left), and, starting from the soldier, I mark every obstacle in the direction:


 LEFT [soldier |...| Obstacle no mark] -> [soldier |...| Obstacle mark]


  • Then, I do the same in the opposite direction, this time starting from the agent. If the ray encounters a marked obstacle, it means the obstacle is between the two players, and I mark the player as safe.


RIGHT [agent |...| Obstacle mark] -> [agent safe |...| Obstacle mark]


  • Finally I cast another ray from the soldier in the first direction, this time looking for the agent. If it is not marked as safe, it means it is visible, so I switch its state consequently.
LEFT [soldier | ... | agent no safe] -> [soldier | ... | agentvisible]


  • Before going on with the other directions I make sure to unmark the obstacles and the agent.

[mark] -> []
[safe] -> []

vendredi 10 janvier 2014

sleep made me smarter

As I told you before, I'm not really good at using puzzlescript :).

I was kind of proud of my state switching procedure, but then I just realized upon waking up that I could simply mark my objects to only apply one rule per turn:

Coming back to my 2-state scenario (A and B).
 If in the legend I have defined

state = A or B

I can proceed as follows:

[state] -> [state x]
[A x] -> [B]
[B x] -> [A]

This way, the transition is only made once per turn.

I m glad no one is reading this blog because otherwise some puzzlescript developers would be probably laughing while reading those lines...

Anyway, going forward...

to bed

For my first dare I decided to go easy on me, therefore I decided to sleep tonight.

I'm rather confident about the game.

The basic mechanics are there. Tomorrow I'll start working on the graphics and request any friends to actually start beta-testing the game.

I added a power to the secret agent player and I have not measured its impact yet. I think I'll spend a lot of time balancing the game and fine tuning the levels.

I'll be busy tomorrow night, therefore I expect to finish the game by sunday morning (Paris time).

See you

Steve

random made me do it

Going forward with the game. I spent some time looking at other people code and I ve got the feeling that I m not really good at using puzzlescript :).

Anyway.

The agent has to reach one of the three objectives displayed on the screen. Two questions appeared once I made this choice :
- How to represent the objectives ?
- How to indicate which objective is the target ?

Well, in the bank sound available with puzzlescript there is a bird singing; That will do for our first objective :). Ever since, I'm repeatidly hammering the random sound generator until I obtain 2 other specific sounds that I'll like.

So far I've also gotten a siren, so maybe my second objective will be an ambulance. Because who cares about coherency hmm ?

congratulations, it's a puzzle!

My first idea was to get inspiration from the classical board game "mastermind"[1]
and to apply it to american football in a tile-based environment. Players would be team coaches  trying
to figure what tactics their opponent would try to employ, and find the best defense. I ran some tests ont paper but found out that fine tuning even a simple system would take me much more than 48 hours.

Instead, I decided to go for a turn based infiltration game. One player is a secret agent, the other controls from one to three soldiers.

The trick is : if you play in the same screen, how is it possible for the secreat agent to remain
concealed ? My first idea was to make each player wear color glasses that would filter some screen content, but requiring extra material is not really a cool thing.

Then I thought that most people have access to headphones, and that I could communicate
information to only one of the players by acting this way.

So this is where I'm heading!

There is a tool that I find absolutely fantastic called puzzlescript[2], which, as its name states,
makes it possible to easily create puzzle games(One of my favorite is the party leaver[3]). And I've decided to make my game with the engine. The only problem is that it is NOT suitable for multiplayer and provides no functionality for multiplayer games. I'm a really stubborn person, and I think I found a really dirty trick that should allow me to make it work anyway.


UPDATE:
Hehe, so I managed to make to have from 1 to 4 players walking in turn.

NEW UPDATE: actually there is a much more easier way to do this, as explained here...

The problem with puzzlescript is that, while you can have keyboard inputs binded to several entities in your game, you can not control only one of those at a time.

To overcome this, I use the "background tiles" as states for my game.
At each turn, each tile is transformed into another tile with wich only one player entity can interact. But given the particular rule evaluation system of puzzlescript this is a little tricky to do, and actually require 4 states.

Indeed, if we considered two states B and D, and naively wrote the following rules:

[B] -> [D]
[D] -> [B]
Well obviously, we would never leave the state D.

For instance, if I want to allow 2 players to play, I create 4 tiles of type A, B, C, D.

Now considering that the rules are applied in the order in which they are defined I create the following rules:

[B] -> [C]
[D] -> [A]
[A] -> [B]
[C] -> [D]

In the first turn, (if we start say in state B), the first rule  [B] -> [C] applies, which leads us to the state C. Then rule fourth [C] -> [D] also applies. This leads us into state D. No other rule is applied,
 and the player moves.
 The next turn, rule 2 [D] -> [A] and 3 [A] -> [B] apply and we end up in state B.
And this goes on, allowing us to alternate between states B and D.
How to exploit this then ?

We add a rule such as

[>  player1 | B] -> [player1 | B]
[>  player2 | D] -> [player2 | D]

that will prevent the engine from moving one player each turn.

This can easily be extended to integrate more players.

Anyway, that makes a lot of rules :)


[1] http://en.wikipedia.org/wiki/Mastermind_(board_game)
[2] http://www.puzzlescript.net/
[3] http://gamejolt.com/games/puzzle/party-leaver/18980/

Well, I decided to make a game 5 min ago

Hi there,
my name is Steve T.,
and I've just created this blog to record my first participation
in a ludum dare [1].
I've only created one game before, which of course really sucked.
The theme I chose among those proposed for this event is "deceit".
As far as I'm concerned, themes such as conspiracy or scheme
will only lead me to really stereotypical idea.

So far, nothing has been decided, except that it will be a local
multiplayer game.

The challenge I'm thinking about is to propose a game opposing 2 players,
with an interface allowing to discretely communicate a set
of actions to the program.

I'll officially start working on it tonight, (French time), and I plan on spending
1.5 days on it.

See you in a few :),

Steve