SiegeDev

DO WHAT I SAY, LIGHTING. JUST DO IT.

  • Home
  • My Artist: Zaljin
  • About

Update: Item interaction, armors, tilesets, and tweaks

Posted by siege on March 25, 2013
Posted in: Current Project. Tagged: armor, Dungeon, item, items, tileset, tweak, update. Leave a Comment
 
3m25d2013y
New dungeon tileset, armors, and tweaks
3m25d2013yp2
Ability to drop(throw)/pickup items online
3m25d2013yp3
Just checking
3m20d2013y
Actors can now wear armors (this one isn’t right, but still)
3m11d2013y
Did some work on lighting: working on making unique shadows
2m11d2013yp3
10×10 shadow
2m11d2013yp2
An example

Explanation: Dungeon Wall Generation and updates

Posted by siege on February 26, 2013
Posted in: Current Project. Tagged: Barrels, Destructible, Dungeon, Generation, Houses, tiles. Leave a Comment
 
2m25d2013y
Loading system introduced for generating levels beforehand.
2m26d2013y
Dungeon tile set, level-loading from file, and dungeon creation online.
2m26d2013yp2
Yep, can still break barrels.
 

Here’s a little explanation on the dungeon level generation:

First, for simplicity I had the level generated based off of an image loaded at boot. Here is an example of what that image might look like:


a5a872bc124528f996cdc146b2010c5e
 the map: each pixel representing a tile

Next, I set up a sprite sheet representing all of the possible positions of wall pieces to create the dungeon.  With these and the knowledge of adjacent wall pieces, we can create a dungeon with connected wall pieces throughout.

Deciding which tile to use can be simplified to what surrounds it. Here is a figure I’ll be referencing:


positions
 

Say the 1, 2, and 4 tile are present. We would then select from our sprite sheet the wall piece that represents a bottom right corner. If 5 is present, we’d have to choose an entirely different block.

I’ll use a notation for defining its position using a set of necessary boolean values (booleans not affecting the output tile omitted). For example, the bottom right corner piece requires position 1, 2, and 4 to be true (I already said that), but it also requires that 5 and 7 be false (otherwise they’d be different pieces). However, the value of 3, 6 and 8 make no difference in this case. Therefore, we can abbreviate this tile piece to: (1, 2, 4, !5, !7).

tilepiece

(1, 2, 4, !5, !7) tile

How do you know whether a tile position is require not (!tile) or not relevant (not included in notation or check)? Well, using the 8-bit system that I’ve been describing you’d have to consider that each tile has numerous exit points.

5975b5c0ecebe6c5cfb8659d3a3703de

possible exit points (the point to which the graphic extends)

These are all of the possible positions of which the tile’s graphic can end. Positions 2, 4, 5, and 7 fill the adjacent wall’s graphic out to the shortest exit point. If two of the cardinal positions are true and adjacent ((2, 4), or (2, 5), for example),  and the in between corner position is occupied (1 and 3 respectively), then that corner’s exit point is pushed to the wall (corner point). Here are some pictures showing that action taking place.

03026d903c11de8fcb357c81e370f79d

positions 2 and 4 are occupied, so the exit pointof the graphic is close to the corner, but because the corner piece is not occupied, it it not filled to the corner like the other corners.

77655f66047e0d270e39d6953bc84d83

Pic 1: (tiles not to size), Pic 2: adding an 8 tile, Pic 3:  with appropriate fill

69424130c8bca8b287e900297085ae1e

The thought process of removing a corner piece

This means that sometimes the corner pieces are relevant to the selection of the tile (both nearby cardinal tiles are occupied), and other times the existence of corner tiles makes no difference. This is how we’d decide whether a tile is !tile or just non existent in the notation.

Now that I have each tile’s value, all I have to do is determine the current tile’s value and find the matching tile (from the sprite sheet). Finding the current tile’s value requires checking the existence of an identical tile type in each of the (1 through 8) tile positions.  For example, if a tile at position 1 exists, set 1 to true else to false (!1). Afterward, find tile of identical criteria and place tile. There should only be one tile with each criteria if done properly.

tiling
 All of the tile positions (pre rotation)

ieTiles

The finished product

Do remember, using a large number of boolean values would be silly despite what was described prior. You should try implementing a bit field containing all of the positions’ values, explained in further detail here:  Adventures in Bitmasking

Lighting Update

Posted by siege on February 19, 2013
Posted in: Current Project. Tagged: light, lighting, new. Leave a Comment

2m10d2013y2

Is this right? I can’t tell.

2m11d2013yp3
Some order is made. Detection of closest face online.
2m11d2013yp4
Distinction between visible faces somewhat established.
2m16d2013y
Cutting of faces (for blocking blocks) online.
2m18d2013y
The loop through all of the wall points has been created.
2m18d2013yp2
Getting closer.

 

If I know anything about this lighting, it’s that I’m pretty close to finishing this portion. And by portion I mean the “light detection” or where the light beams should go. Afterward, I’ll have to tackle the lighting effects (how the lighting affects the environment) and I’ll probably put up a write up on my light detection method. Back to woik.

Progress Made Up Until Now

Posted by siege on February 10, 2013
Posted in: Current Project. Tagged: current, evil, game, games, mage, orc. Leave a Comment

1m3d2012

Oh god, how does box2d work?

1m8m2012y

box2d/sfml data synced up

1m16d2013y

Joints online

1m27d2013y

The beginning of the user interface. Inventory created with synced information to in-game items.

1m29d2013y

What have I done
farmersAssemble 
Can’t blame them with the economy nowadays.

1m29d2013yp3

Inventory gets a graphical upgrade. Equipping/unequipping online. I guess Zaljin didn’t like the original color scheme. 
2m7d2013y
 Bobby Heinrich joins the party. UI messages online.
newcharacters
New characters added.

2m6d2013y

Inventory gets an upgrade. Mahogany online.
doodooodoooo
  In an attempt to appeal to larger audiences, Blue has been introduced. As suggested by Patrick.

2m10d2013y

Lighting has begun.

 

Old Things: Lots of arrows

Posted by siege on February 10, 2013
Posted in: Old Stuff. Tagged: 2d, arrow, arrows, beetle, beetles, breetles, fucking, game, games, lots, of, old, shooting, side-scroller, things. 1 comment

5bd2b5dcf8036fb602a8e4d614809db6

Arrow physics and collision detection online.

8af06fd2f34b428898fd750f0feec36c

“Breetles” on treads and basic AI online.

da9bfbc0e2f78f8a9947de97d94ec214 (1)

Small environment created, I drew some stuff.

9c722572cee55c13482da7a08237f00a

Zaljin decides to give me some art to work with.  Animations and health bars introduced. Arrows are replaced by glowsticks.

12m10d2012y

More art, collisions upgrades.

12m14d2012y

Oh god, that rock. 

 

Written in Java using the LWJGL and SlickAndCode.

Zaljin’s work:  zaljin.com.

Old things: Super Snake

Posted by siege on February 10, 2013
Posted in: Old Stuff. Tagged: classic, game, games, old, retro, snake, super, things. Leave a Comment

79ff7d6bb1c90d44dada2099bf1cbecd

df84c96e0c35a347e2d4ba495db30ecd

f614f89163c1a15d28d0a022bc5c00b7

 

 

My first finished game that I wrote in Java. I used some strange library called the “Game World library.”

The purple blocks represent a spacesplosion created when the snake runs into an obstacle.

Posts navigation

  • I'm siege and this is my blog. Independent game developer and "artist".
  • Archives

    • March 2013
    • February 2013
  • Categories

    • Current Project
    • Old Stuff
Proudly powered by WordPress Theme: Parament by Automattic.