[BGMC16] Duelity

I’ve been sitting on this idea for a little while, and have just waiting to start building it and see how it holds up against the Spaghetti Test – throw it against the wall and see if it sticks!

DUELITY is a two-player hot-seat style competitive turn-based game with mechanics about as simple as you can get. It is played in a single-screen grid-based arena from a top-down POV. The goal is to score more points than the other person.

The Black Ninja and the White Ninja are at eternal war with each other. They must sneak around, and attempt to assassinate their rival more often than they get assassinated themselves.

The players take turns moving their ninja one tile in any direction (except diagonally). If one Ninja enters the other Ninja’s tile, the other Ninja is assassinated and a point is scored to the victor. The victim then instantly respawns and the process repeats until one player gives up and goes home.

The Catch: The Black Ninja is invisible on black tiles. The White Ninja is invisible on white tiles. You are so sneaky you can’t even see yourself!

I just hope that having two human players isn’t too high a requirement. Judges may have to borrow a friend to help play this one.
I could incorporate an AI, but I really don’t want to. I don’t think it would be any fun playing against a bot in this game. The fun has to be generated by the interaction of the two people playing against each other; trying to distract each other and psyche each other out. Getting pissed at your friend for being a sneaky little turd, or getting pissed at yourself for making a dumb move or getting lost. This is the sort of game play I’m aiming for here.

It’s a very simple game, but has a few elements I’ve never seriously attempted before. Silly things like rigging, and menus… :o

Things To Add:

-Rigged/animated models
-Gory death sequences
-Random Power-Ups and Traps
-Pre game menu with level selection, points needed to win, and a good tutorial/how-to scene.

This looks pretty awesome will the characters always remain cubes? will you give them the same texture you have applied to the floor?

Model, basic material, rigged and posed black Ninja w/ sword:

I just can’t figure out how to get any animation to play in the game. I will have to go pour through some tutorials…

the character looks cute i like it

Nice man! Looks great!

What’s to stop a player just moving back and forth in the same spot? (or, rather, never crossing the other colour?) Should some penalty be introduced for such behaviour?

A boring match? LOL

I have been thinking about issues like that. A timer (which ticks down with turns, and resets with each kill) should give players incentive to go after each other. The consequences of said timer running out would be little random events (thinking: that scoop-and-ball game I can’t think of the name of they play in Tron) where tiles start dropping out, making the arena an ever-increasing hazard. The players can keep the board ‘clean’ by being quick and making good kills. Or turtle it (like you suggest) and use the hazard to their advantage, potentially.

For now though, I am finishing up on the animation. As much as I liked the idea of making each ninja a unique model with unique animations, they may just be palette-swapped clones. At least for now. The idea is to have 4 different kill/death animations, one for each ‘side’ you come in at them from. A cool idea would be to have ever-increasingly Cool death sequences based on kill streaks…maybe a “Go for the Turkey” throat-ripping sequence for getting 3 kills in a row.
(This game will very soon contain intense cartoon violence, BTW) Updates when I get there.

How about when you move off a tile it drops away and you can’t move back on (for a couple of turns maybe)? then your enemy would know you are on one of the 8 surrounding tiles, but not which one.

looks realy cool and fun , i had a similar idea , and this reminds me of
http://www.chambaragame.com/
Ninjas look good so far.
Also more a few maps would be cool.
and like @Smoking_mirror coment , mabie as a differnt game mode

I was woken up in the middle of the night last night, with a great idea of what to do with this.
Hopefully today I will be able to implement what I want. It’s almost too hard to explain, basically going to ‘animate’ the tiles like pixels in a video sequence.
If done right, I think I could do it without it being a logic nightmare for the CPU…

I have made a few different maps. I put together a real simple map-building system that uses lists of strings to generate the grid. It’s not nearly as intuitive a level-building system as I had hoped it would be, but it works. For example, the yin-yang arena you see in the video looks like this:


YinYang = [
    '....BBBB....',
    '..BBBBBBBB..',
    '.BBBBBBBBBB.',
    '.BBBBBBBBBB.',
    'BBWWWBBBWWBB',
    'BWWWWWBBWWBB',
    'WWBBWWBBBBBW',
    'WWBBWWWBBBWW',
    '.WWWWWWWWWW.',
    '.WWWWWWWWWW.',
    '..WWWWWWWW..',
    '....WWWW....',
    (8,5,3,7)
    ]

(doesn’t look like a blob of crap when you see it in unispaced font :wink: )
Bs are black tiles, Ws are white tiles, periods (or any other character) are blank space. The four numbers in the last entry are the x y coordinates for the respawn points for the two ninjas.

Here is the bit of code that builds the arena, if anyone is interested. This is your basic method for creating those fun rogue-like random dungeons!


def generate(map,brush):
    scene = logic.getCurrentScene()
    mapx = len(map[0])
    mapy = len(map)-1    #last entry is starting point coordinates
    for x in range(mapx):
        for y in range(mapy):
            char = map[x][y]
            if char == 'B':
                scene.addObject('blackTile',brush)
            elif char == 'W':
                scene.addObject('whiteTile',brush)
            brush.worldPosition.x += 1
        brush.worldPosition.x = 0
        brush.worldPosition.y -= 1

If you want to “draw” the tiles one by one use your script to add them to a list then pop and draw them from the list with a delay…

Things like this make me very, very happy.

Visibility is not working right anymore, obviously, but that will be an easy tweak. I just really wanted to show this off :o

The “Disco Ball” (as I’ve fondly labelled it) can be controlled. A game timer could cause it to gradually speed up, or a pick-up could reverse its direction, or change the reference color entirely. Either way, this should make things more interesting.

Pretty straight-forward rig, really. A ‘copy’ of the tile map is created 4 BU above the board, in an array of empties. Each empty holds color information, and sends a ray downward. When it hits a tile, it sends its color info to the tile and tells that tile to update its color. A central “Discoball” invisible spinning cube hovers over the middle of the board, which all the empties in the array are parented to. The spinning grid shoots its info down to the board, like a disco ball firing rays of colored light against the dance floor.

Wow nice job. When do you implement the ninjas?

Nice work Nines , good luck!

I have not had a chance to touch this project (or any projects) for the last three days. There is little point in trying to enter this in the competition as it is. I will release what I have on this thread, when I get around to it.

Good luck to everybody else!