jackstouffer / simple-dungeon-crawler Goto Github PK
View Code? Open in Web Editor NEWA tactical, turn-based adventure game written in Typescript
Home Page: https://jackstouffer.com/games/Simple-Dungeon-Crawler/index.html
License: MIT License
A tactical, turn-based adventure game written in Typescript
Home Page: https://jackstouffer.com/games/Simple-Dungeon-Crawler/index.html
License: MIT License
Remove the log from the game window and have an infinite scrolling div
of log p
s next to the game window. This allows the player to view all game messages from the past and removes the need to keep game messages in memory.
Also makes it much easier to implement tutorials
Sometimes a ghost of the player @
character will appear behind an enemy character when the enemy occupies the previous tile of the player.
UI code shouldn't be strewn about other domain code. Emit events and have the UI listen for them.
The win/lose/opening cinematics should be done as game states. Move rendering and input handling into render
and handleInput
.
With the move to webpack, the functions are no longer exposed to the dev console. Find a way to re-expose these functions or add new ones onto the window object to help in game testing.
Displays dmg
for the value stat in the spell data. Add a spell type to spell data to control how it's displayed in the spell list.
Investigate if volumes should be rolled into game objects, since these volumes are going to have to have graphics.
Easiest way to do this is to load all levels into memory at the start of the game. Then, loading a level is a matter of taking the level state in memory and pointing the current state to it.
Level state is pretty small (> 1MB), so this should be a workable solution even as the game gets larger.
The @ symbol gets drawn again every the player doesn't move. If you try to move into a wall you'll see the @ symbol get thicker and thicker.
Enemy AIs should loose the target and go back to their default state after not having the player in their sight range for n
number of turns.
Find some way to have an on screen touch interface. The graphics don't lend themselves to a phone sized device however, so this is a low priority item.
It's sort of odd that the player is put into an inventory or spell selection state when doing either of those actions. Instead, the game world should be put into those states. That way, UI handling is separated from player AI logic. The UI input handling functions would have to tell the player AI what was chosen.
Save current world state to local storage, including all game object state.
This needs to be done after Issue #4 .
async function readKey() {
return new Promise(resolve => {
window.addEventListener('keypress', resolve, { once:true });
});
}
map.isBlocked has a confusing return value scheme. Instead, it should return something like
{ object: null, blocks: false }
when it doesn't block,
{ object: null, blocks: true }
when it blocks but there's no object
{ object: {}, blocks: true }
when it blocks and there's an object
menu for selecting stamina based skills for knight and rouge builds
Have an open door graphic and allow the player to close the door.
Before any movement occurs, the tile that the actor is spawned on will not receive any light and will appear completely black.
Must be done after Issue #5.
Add tutorial messages to the game log. These messages will have a different background color than a normal message. When a tutorial is displayed, set a flag in the game state that marks the tutorial as already played.
Possibly use event emitter to listen for events to trigger messages.
Also add toggle button to top of the game log to turn tutorial messages on and off.
Having them dump all of their spells on you in the first three moves isn't fun.
Make spell weights larger and larger as mana decreases.
Nothing currently happens when the keybinding menu is shown. The user should be able to rebind all of their keys.
Statistic effect that reduces mana by something ridiculous number like 100000.
Add mocha tests for the remaining exposed functions.
mouseLook should only work on visible tiles
Implement the system which checks for the damage type and multiples the incoming damage by the affinity. Data is already there, just need to write the code and then implement an enemy with non-standard affinities to test.
Currently, each object acts in the order in which it appears in the GameObjects array. This precludes the usage of a speed stat or buff which allows mobs to move faster than once per turn
I need to find some way to implement the ROT speed scheduler while still having the game manager Manager
object update things in a timely fashion.
Sleeping in a bed
Will be the only way to restore mana and stamina outside of potions.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.