Temple of The Roguelike Forums
Game Discussion => Early Dev => Topic started by: penguin_buddha on May 10, 2013, 05:35:24 PM
-
Hey guys, I've decided to stop just lurking and post about my current project, Escape into Black. Escape into Black (EIB) is going to be my first RL and I plan on reusing its engine for my future, more ambitious, projects.
Escape into Black
Overview: Escape into Black has a simple story. You are a citizen of a mountaintop city who was framed for murder. You were judged guilty and given a choice, a clean death or the Pit. The Pit is a large hole in the ground near the center of the city which drops into a large series of catacombs that are said to spread all the way to the base of the mountain. Legend says that there is an exit from the catacombs, though it has never been confirmed. Most don't even survive the drop into the cavern floor, but you decided to try your luck. You stand on the edge of the large hole, looking down at the corpse littered cavern floor nearly 50 feet below. You feel the steel tip of a guardsman's pike pressing against your back, forcing you closer to the edge...
Completed Features:
- randomly generated caves (modification of BSP)
- field of view using shadow casting
- inventory system
- loading from XML files
- A* pathfinding for AI
- looking and targeting
- melee, ranged, and thrown weapons
- action-delay based turn system
Planned Features:
- monster dens
- rivers flowing through the map
- stealth
- additional skills (currently only have combat related skills)
- crafting
- injuries (currently just have simple hp system)
- hunger/thirst/exhaustion
- experience
- character creation
Ill add to the to-do list as I go. The game isn't playable yet but here are some screenshots of its current state. Note I'm using squidlib for my graphics.
(http://s18.postimg.org/iikj1vov9/EIB1.jpg) (http://postimg.org/image/iikj1vov9/)
(http://s11.postimg.org/shu3ydukv/EIB2.jpg) (http://postimg.org/image/shu3ydukv/)
Let me know what you think!
-
Sounds like it should shape up to be a nice project indeed should all go well---keep at it and keep us posted! 8)
-
A* pathfinding? Nice.
I've been trying to get it to work and failing.
Edit: was there supposed to be a download link?
JO
-
The game isn't quite playable yet. Should be within a month.
-
Just thought I'd give a brief progress update.
(http://s8.postimg.org/64h9wxkap/Screenshot_1.jpg) (http://postimg.org/image/64h9wxkap/)
Progress
- Natural looking rivers
- Separate levels which retain their items/monsters after leaving and returning
- Facing and a limited field of view based on the character's perception skill
- Sounds and hearing
Details
Rivers:
I'm thinking of eventually just creating a height map and creating rivers in the lowest areas but for now I created rivers using vectors. For each river I want to create I make a vector on the edge of the map pointing inwards. Then in steps I just draw a line of river based on the vector, move the vector to the end of the line, randomly alter the vector, and repeat. There is also a chance for the rivers to split. The rivers can change in width as well.
Facing:
I decided to add facing to the game and limit the angle of view for characters and npcs. This makes the game a little bit more more suspenseful as you don't know whats behind you. A character can change their facing without actually moving from their current tile but doing so takes a small amount of time. The angle of view also lets pcs sneak up on npcs, though I haven't added any stealth attack bonus yet.
Hearing:
I decided to go with a rather simple solution for sounds. Each time a sound occurs I use A* pathfinding with a modified heuristic from the sound's origin location to each agent within a distance of the sound less than the sound's volume. If the pathfinding algorithm finds a route the sound reached that agent. I subtract the length of the path (the distance the sound traveled to get to the agent) from the original volume and based on the agent's perception I determine if they actually heard the sound. I haven't added them yet but I plan on having some blind monsters that can only hear.
Obviously my original estimate of when this game was playable was off but I'm steadily chinking away at it.
-
Just a quick hint. Make text and the interface less bright as bright white stresses the eyes against a black background, specially with repetitive patterns like "- - - - - - -"
-
Another progress update
(http://s15.postimg.org/r9co1pf7b/Screenshot_2.jpg) (http://postimg.org/image/r9co1pf7b/)
Progress
- Improved Graphics
- Gaining and Spending Experience
- Effects and Events
- Feats and Traits
Details
Improved Graphics: I've begun messing around with colors and have been making use of Squidlib's built in methods. It has a great library with built in blending functionality. I've also altered how light is treated, creating a more natural gradient from light to shadow.
Gaining and Spending Experience: The player now gains experience from slaying monsters. The amount of exp gained is based on the difference between the player and monster levels. Experience can be spent to upgrade attributes, skills and to buy feats.
Effects and Events: Most of my time has been spent on this. I went though a few frameworks before I finally settled on this one. Whenever anything occurs that would affect an object, an Event is created. The Event determines what objects are affected and then applies Effects to them. The Effects can do anything from dealing damage to boosting stats. The system is very robust and I feel confident I can make almost any spell/ability I could think of. Thanks to AgingMinotaur and all the others who posted in my thread requesting help on this.
Feats and Traits: Traits are things innate to an object, such as blindness. Traits are essentially just flags that the code checks for. Feats are essentially traits that the player can purchase with experience.
Whew, well back to work. I'm working on creating a whole set of cave creatures, each with their own unique AIs. There will also be essentially an ecosystem within the game with an fairly complex food chain.