Coder Social home page Coder Social logo

arcanorum / rogueworld Goto Github PK

View Code? Open in Web Editor NEW
99.0 5.0 24.0 380.09 MB

Everything for the game Rogueworld.

Home Page: https://test.rogueworld.io/

License: MIT License

HTML 0.91% CSS 0.13% JavaScript 4.25% SCSS 9.22% TypeScript 85.48%
mmo mmorpg game nodejs browser phaser phaserjs rpg hacktoberfest javascript

rogueworld's Introduction

Contents

Introduction

Greetings! ๐Ÿง™ You have stumbled upon the work area for Rogueworld, the free, open-source, browser based, massively multiplayer online RPG.

This area is intended for potential contributors who are interested in the project, but don't know where to begin. Any info that someone might want to find about joining and working on the project will probably be here somewhere, and if not, let me know and I'll update this documentation.

Rogueworld is open-source, meaning that anyone is free to see all aspects of how the game works on a technical level, and can also contribute to the project, such as adding new creatures, items, balancing, fixing bugs, and whatever else will make the game better.

Here you can find basically everything that goes into the game, what is currently being worked on, and how you can help!

The creation of Rogueworld is a collaborative effort, with content and mechanics able to be added by members of the community.

It is a non-commercial project, so there are no promises of "rev-share" or "backpay when the game makes money" or whatever. That isn't the goal here. This project is ideal for beginners, hobbyists, students, portfolio builders, work experience seekers, and of course regular players of the game curious to see how the magic happens.

Getting started

First, you should have played the game to get a feel for what it is like, what has been done so far, what looks lacking, and to generally get a good context for what you might want to get started with.

The main contribution areas are code, audio, visual, with other smaller ones like balance, translations and testing.

You probably came to this project already specialising in one of these. There are guides tailored for contributors that describe the general requirements for each field, that you can jump to if you just want to skip whatever doesn't apply to you.

Contributing

With so many moving parts to a video game, especially a one like this, it is important to keep the project managed well. I try to run the project like you would find in an actual software company, where each thing being worked on should be detailed, tracked, completed (or cancelled), tested and finally added to the game.

This is done using the main tasks backlog on the GitHub issues page.

There you can filter by whatever topic interests you using the tag filters.

This is where pretty much everything that is proposed to change about the game should start.

From there, any tasks that are to be grouped together into a larger piece of work, such as a new major feature, will be organised into the project trackers for the major things that are being worked on.

Once you have found something you want to have a go at, you should let me (or other GitHub project admin) know that you want to start something so it can be marked as in progress, so multiple people don't start the same thing. Don't just randomly submit PRs out of nowhere.

Tooling

"What engine is the game made with?"

This game doesn't use an off the shelf game engine/centralised project manangement GUI, like Unity, Unreal, GameMaker, etc.

As a game that is also a website, it uses many of the tools of the web development trade. The "engine" is a custom setup that brings together various tools that are all free, widely used, and reasonably well documented, that are each specialised for a certain task.

To be able to run and edit the game yourself on your own computer, there is a setup guide that should provide a quick and easy set of instructions to get everything working with minimal messing about, though general web development knowledge will be needed to be able to do any non-trivial tasks.

Though, setting up and running the game on your own computer is not necessary for many kinds of contributions.

A lot of tasks are fairly self contained, mainly creating assets (sprites, sounds), and can just be passed to someone else who does have the rest of the project set up, to integrate into the game on your behalf.

To let people see what the implemented asset is like in game, there is a public test server that is updated with recent work much more often than the live game, and is used for faster turnarounds for testing and feedback, before things go into an update for the live game.

Public test server: https://test.rogueworld.io/

Development setup

See this guide for going through setting up the project and getting it running on your computer.

Guides

"I want to add a..."

Features are divided into two general categories:

Mechanics:

Things like movement, collision, creating entities, AI, new systems, etc. that affects the fundamental flow of the game. Due to how they are often intricately tied to many other things, it is recommended to get some familiarity with the core components of the codebase first and the most common workflows (creating items, creatures, actions), then look for something appropriate in the tasks backlog that has been sufficiently planned out and ready to be worked on.

Content:

Things that make use of existing mechanics to give players stuff to do, such as points of interest to explore, resources to gather, items to craft, creatures to fight, structures to build, etc.

Below are guides for each, where you are encouraged to think of something different to add instead of just the examples given and to experiment with each step of the guide, so you aren't just copying the guide without understanding what is happening.

Attribution

Proper attribution of all work is expected. This includes original creations submitted by contributors, and anything used from somewhere else (such as opengameart.org or other asset sharing resource).

The credits page for the game lists the currently used assets for the game, and should be updated when new things are used by the project by more authors.

A "work" or "works" is a piece of artistic work you have created, such as textures, sprites, sound effects, music, story/lore, etc.

This project uses the MIT license, and as such can be copied, modified, redistributed, and even used commercially by anyone. Any works you wish to submit will also be included under the project's MIT license.

Under MIT, attribution is not required, but is given anyway as a courtesy.

An attribution may (but doesn't have to) include:

  • The specific works you did.
  • Your name and/or nickname/alias.
  • A link to your website, portfolio, or other profile.

For example:

Scamp character animation by Arcan (https://github.com/Arcanorum)

You should be asked how you want to be credited when you submit something.

However, if you do not agree to the MIT terms for your submissions, you can submit them using another license that suits your needs, and that one shall take precedence.

For example, if you want to require attribution (credit) for use of your work by anyone else who uses it (such as someone taking the work and using it in another game), you probably want to use one of the CC-BY licenses (https://creativecommons.org/about/cclicenses/). This can be discussed with a project maintainer (i.e. Arcan) as needed.

Links and resources

rogueworld's People

Contributors

andrewkchan avatar arcanorum avatar brendan-c avatar brunowxd1 avatar dependabot[bot] avatar gabriellemadden avatar martpie avatar r4gingpixel avatar ragingpix3l avatar rushab101 avatar sebasflow23 avatar simperfy avatar squirrel-master avatar stigkj avatar yanisakham avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

rogueworld's Issues

Agonite player armour animation

Task description

A new metal armour type is to be added in an upcoming update: Agonite.
Made of a red metal, higher tier than iron, lower than dungium.
It will be a variant of the basic iron armour, but with the armour restyled to a more red colour, and with larger horns on the helmet than the warrior, and the armour covers more of the body.

This is largely a lot of the same work for the berserker task: #65
Can just do this one and lay it over the base human character animation to create the berserker.
You will probably want the base human sprites to use as a guide for what it would look like when equipped by a player, as clothing items are just sprites layered over the top of the player sprite, matching the frame of the player animation.

References/notes

Iron armour sprites: https://github.com/Arcanorum/dungeonz/tree/master/client/src/assets/images/entities/clothes/iron%20armour
Human base sprites: https://github.com/Arcanorum/dungeonz/tree/master/client/src/assets/images/entities/characters/human%20base

Acceptance criteria

Visual

  • A set of clothing sprites for a red armour.
  • 3 animation frames for each direction (up, down, left, right (left but flipped)), to be played in the basic humanoid animation pattern used by other entities: 1 (standing), 2 (right step), 1 (standing), 3 (left step), repeating.
  • Uses the DawnBringer 32 colour palette used by the rest of the sprites.
  • Expected files:
    agonite-armour-up-1.png
    agonite-armour-up-2.png
    agonite-armour-up-3.png
    agonite-armour-down-1.png
    agonite-armour-down-2.png
    agonite-armour-down-3.png
    agonite-armour-left-1.png
    agonite-armour-left-2.png
    agonite-armour-left-3.png
    agonite-armour-right-1.png
    agonite-armour-right-2.png
    agonite-armour-right-3.png

Code

Runestones

Category:

  • Item

Feature description
A way to enhance an attack (projectile/melee) by adding an additional effect to it.
When equipped, adds an effect to each attack of another item.
i.e. attack using iron sword with fire runestone equipped, makes what the iron sword hits start burning.

Adds another item type "runestone" to the equippable item types (weapon, armour, ammunition).

Adds an additional layer of depth to existing items and makes other items that might not be considered valuable more useful in some situations.

Possibly dropped as boss only rewards.

Player death sound effect

Acceptance criteria

  • When the player dies, a gloomy sound should play for that player, and continue playing until the player respawns.

Duplicate/inactive player entities

Describe the bug
The infamous duplicate/inactive player bug. Sometimes when a player attempts joins the game, they will encounter an error that will cause them to restart their connection to the game, but a player entity for them has already been created for them the first attempt, so when they join on the second connection, they have another player entity for them is created, so now there are 2 at once for once player. The player only controls the latter one.

I have tried several times to track down what is causing this to no avail.

To Reproduce
The main problem is that there is no clear reproduction criteria. I have only ever seen it happen in the live game, never during development/testing.

Expected behavior
That a player joins the game and no matter what, a player entity only exists for a single player client connection.

Right click to pick up items not working

You used to be able to pick up items by right clicking. This hasn't worked since the upgrade to Phaser 3. Might just be a right click event missing/renamed somewhere.

Zombie followers not following master entity through portals

"Bug with enthralled zombies: when one enters a portal (for example to vampire island), one's zombie thralls do not follow. The weird thing is, the zombies are not even there when you immediately come back through the portal to where you came from" -et

Item consumed sound effect

Notes

Possibly can be split to different sounds based on item type (solids vs liquids)

Acceptance criteria

  • When a consumable item (food, potion, etc.) is consumed by the player, a munch sound should play for that player.

Reorganise the translations/text definitions spreadsheet

Different pages/sheets could be added to each workbook so that the list doesn't have to scroll down as far, with each page being for a category.

This can be done by just duplicating the current spreadsheet, renaming the new one, and removing anything that is not for that category.

Needed sheets:

GUI

Anything that only shows on a panel, tooltip, warning, buttons, etc.

Items

Item names and descriptions.

Entities

Mobs and other named interactable objects.

Stats

Stat names and descriptions

Tasks

Task names/descriptions.

Add adumbral spawn to vampire island

Add some entity spawners to the vampire island, that will spawn large adumbrals, generally in the more empty areas.

Acceptance criteria

  • Some large adumbral mobs can be found around the vampire island (during night).

GUI rewrite; Angular vs React

I would like to move the very unwieldy GUI setup to use a proper front-end framework, such as Angular or React (or other?), as it is a bit of a pain for me to maintain the GUI using raw HTML and JS.

Crafting rework

Category:

  • Item (weapon, armor, consumable, resource, crafting recipe, etc.)

Feature description
With the changes involved with the items rework #30 there is a also a need to change how crafting works. With the ability to carry many more types of items at more granular quantities,

The current crafting system while more perhaps more interesting than just "Get x items, go to crafting station, then click craft" is kind of annoying for any more complex items (such as armour, need to make 5 bars, then 5 rods, then 5 sheets, then combine them all...) and is limiting in terms of the combinations of items that can be included in the recipe ingredients at 5 max.

The crafting process itself isn't particularly fun and not what the core of the game is about, so this proposal is to make crafting simpler and faster and more like a generic video game crafting system, but with more ingredients of more exotic types required to put more emphasis on world exploration and gathering those ingredients by doing more fun activities.

crafting-design

Duplicate/blocking tasks

"When you complete some quests, you will, after some time, have 2 quests about kiling rats
You can do only one of the 2, and the other won't complete even if you kill all the rats of the map
This is minor, but problem is that it can just take over all your quests..." -Pigeon

Signposts

Category:

  • UI
  • Map

Feature description
It would be interesting if there were signposts around the game world that players could inspect to get information about the surrounding area, or a view of a section of the map.
This would be a better balance of giving people useful info and not distracting from the environment, and to not have to open the entire world map to find where you are if lost.

Signposts would be clickable (highlighted like crafting stations when near) and would open a modal when clicked to show the local info.

Perhaps what they show could be more detailed than the world map, i.e. shop types, dungeon entrance locations, rare resource node locations.

Make corpses not despawn in dungeon instances

Category:

  • Creature
  • Balance
  • Other

Feature description
It would be nice for necromancers if the corpses of creatures did not despawn in dungeon instances, so there is more chance to use them if wanted, like how item pickups don't despawn in dungeon instances.

Debug mode setting: Add option to show the FPS counter to settings in corner

Add an option to the bottom right settings list, that can be toggled on/off. This is the start of a set of debug utilities that will be added later (network latency, error log).

There is already a FPS text feature added, but it only works in dev mode when testing on localhost. This needs changing to be shown when ever the user wants.

AC: An option should appear in the bottom right settings list above all of the other options, that shows an bug icon (for debug mode), something similar to https://fontawesome.com/icons/bug but similar in style to the other settings icons.
AC: When the debug mode icon is pressed, the debug mode setting should be enabled, and the FPS counter text should show in the bottom right.
AC: The debug mode setting icon should show with the other setting icons when the settings list is hidden.
AC: The debug mode setting icon should hide with the other setting icons when the settings list is hidden.

Hints:

Dungeon key used sound effect

Acceptance criteria

  • When a dungeon key is used, a door/lock unlocking sound should emit to players nearby the unlocked door.
  • Perceived volume should decrease with distance from the door, up to a cut off point (done in code).

Audio; Introduction and plan

What has been done?

Some basic steps have been taken towards about adding audio to the game so far. Hopefully this much has become apparent after trying the game and getting a feel for the theme and pace.

What needs to be done?

Audio tasks backlog: https://github.com/Arcanorum/dungeonz/issues?q=is%3Aissue+is%3Aopen+label%3Aaudio

This is where I do most of the tracking/organisation of tasks that need to be done, and to show what can be started by anyone looking for something to pick up. Suggest anything you think needs to be added.
I try to provide whatever details I can about what is needed for each task, but can only do as much as my limited subject matter knowledge allows, which is mostly technical implementation.

Some kind of direction needs to be established for where to take the audio, as that is something that I am very inexperienced with, and will need to defer to others to provide a clearer direction to follow so other people have an idea of what is expected/somewhere to start.

The main areas that need covering are:

  • Overworld regional themes
    To be able to set trigger points/bounds in the map editor that would define what music should play in each area, so different regions have music that plays according to the theme there.
  • Dungeon themes
    Many dungeons have unique settings (ominous vampire castle, confusing forest hedge maze, ancient pyramid crypts, etc.) that would be better served with appropriate themes.
  • Action effects
    Audio confirmation/reinforcement of things that happen to and around the player, and for many of the kinds of interactions they can have with their items, other entities, and the environment.

How will it be done?

Phaser is used on the client for audio playback.
Examples of how audio playback in Phaser works for those technically inclined: https://phaser.io/examples/v3/category/audio/web-audio

The main constraint for the game is audio files, which usually make up a huge portion of the total download size of a typical game. Dungeonz is browser based and as such user expectation for page load times is typically quite demanding. There are techniques than can be used to load large assets like audio after the initial game load, but even then, they should still finish loading quickly and be ready for use ideally before they needed, but this is more of a technical problem to be looked at outside of the scope of this page.

Effects/foley aren't usually a big deal, as they are typically very short (under a second).
Longer music pieces are the main thing that will need to be constrained. The ideal music would be short, easily loopable, and not too prominent/distracting, so that other audio prompts that carry information/alerts to the user are the priority.

Format

The expected format for all audio files is currently WAV or FLAC, and then converted to both Ogg and MP3 format to be loaded into the game.
Ogg tend to result in smaller file sizes, but Safari doesn't support Ogg, so MP3 needs to be provided as a fallback.

image

The WAV or FLAC (or other high quality/lossess format) versions are used as the original source for the Ogg and MP3 ones to be generated from.

Submissions

Actual assets ready to be added to the game can be delivered either:

  • As a PR here on GitHub.
  • Uploaded to a site like Open Game Art and send a link to a GitHub contributor (i.e. me) for them to add.
  • Sent to a GitHub contributor (i.e. me) for them to add however they prefer.
  • Sent directly to [email protected]

References/expectations?

I haven't explored much so far so it is still subject to finding what other people think would be suitable. To be refined as a clearer direction is decided.

I'm open to whatever discussion/ideas people may have (here on GitHub, Discord, Reddit, where ever), and the actual community members on the Discord server who play the game probably have a better idea in their heads of what they expect to hear while playing than me, and are usually fairly talkative and give a lot of feedback, as anything done here for the game is not to impress or please me, but for the actual players.

You should also have expectations of what you decide to pick up, in terms of how well it is defined. I try to make some kind of workable unit of expectations for each task that I add to the backlog list, so if something would benefit from any more info then don't be afraid to ask for it to be added. I don't like working to vague requirements, and image you don't either, so ask for whatever clarification you think you need to be able to be more effective at whatever you are doing.

Various panels (stats, bank, etc.) look messed up on on Safari

I haven't tested the game at all on Safari as I don't have any devices for Safari, and no emulator exists for other OSes.
Have had to just rely on them applying the same standards that I use when deving for Chrome.

Needs a proper testing pass though Safari to find and fix styling inconsistencies across browsers, or change CSS tooling to something that takes care of compatibility automatically (Tailwind CSS)?

Collaborative map creation/editing

Currently there is no way for contributors to submit their own changes to the main overworld map, as I need to be able to check that nothing sinister has been done to the map as part of any changes that are made to it, such as game-breaking item/creature spawners being added or essential paths being blocked.

Making changes to the map involves submitting the whole map for approval, which given it's size is impractical for me to check the whole map to make sure that the submitter is telling the truth about what changes they have made.

Changes to the overworld basically involves someone telling me what they want to change, and me making those changes myself on their behalf.

Solutions to this problem may involve:

  • Splitting the overworld map into smaller sections which can then be edited and submitted for approval individually, as is already the case for dungeon maps.
  • Creating a tool that will compare the current and proposed map and show any changes, to make review easier.

Spatial audio

Task description

Need to figure out and implement a way to associate playing certain sounds with an entity on screen, and adjust the volume to be appropriate for the distance from the player.

References/notes

Some discussion around the topic.
https://phaser.discourse.group/t/sound-in-particular-place/2547/2

Acceptance criteria

  • A given sound can be associated with an entity on screen.
  • If the player moves towards/away from that entity, the volume of that sound will increase/decrease based on distance.
  • If the entity moves towards/away from the player, the volume of that sound will increase/decrease based on distance.

Make bats only spawn at night

There is a class config for mobs that will make them only spawn at certain times of day that needs to be added to Bat.js in server.

See any of the adumbral mob classes for how it looks there.

Bat.prototype.spawnableDayPhases = {
    [DayPhases.Dusk]: true,
    [DayPhases.Night]: true,
};

Other tree types giving invalid resources

Other tree types giving invalid resources (spruce logs).

I think this was partially implemented new wood type that got cut from the last update, and some trees are giving a resource that doesn't have the assets added for it yet.

Can just wait until that content is finished and added.

Make some items give extra light range in darkness when equipped

Category:

  • Item (weapon, armor, consumable, resource, crafting recipe, etc.)
  • Other

Feature description
It would be interesting if while certain items are equipped they would extend the normal range around your character while in darkness.

i.e. holding a fire staff, book of light

City theme 1

Task description

An ambient music track to play for players in the main city area.

References/notes

Something I thought fit the (mostly) peaceful, yet somewhat active, city vibe, or more specifically the inn/tavern near to the city centre. https://youtu.be/1vQvEerAnUI?t=383

City map:
image

image

Sort of how I imagine the city to look from ground perspective.
https://cdnb.artstation.com/p/marketplace/presentation_assets/000/120/577/large/file.jpg?1554224764

Acceptance criteria

Audio

  • A theme to play for players in the main city area.

Code

  • Add a bound around the city area that will trigger the currently playing music to fade out and then start playing the city theme music.

Generic humanoid creature dies sound effect

Notes

Will need to add some kind of entity taxonomy configuration system to entities that is available on the client, to play the appropriate death sound.

Acceptance criteria

  • When a human/goblin/vampire etc. creature dies, a gasp sound should be emitted to all nearby players.
  • Perceived volume should decrease with distance from the creature, up to a cut off point (done in code).

Item drop sound effect

Acceptance criteria

  • When an item is dropped, a generic drop/thud sound should play for that player.

Generic dungeon ambience loop

A generic background loop for any dungeons that do not have a specific one to use.

Should be appropriate for dingy underground themed dungeons, which is most of them.

Acceptance criteria

  • When a player enters a dungeon instance, a generic dungeon background loop should start.
  • When the player leaves a dungeon instance, the loop should stop.

Fireball projectile sprite redesign

Task description

The fire staffs shoot a fire projectile, but it looks a bit crappy and odd from the rest of the game. Could do with a new one making, with an animation.

Possible a particle emitter can be added to this kind of projectile too, for some trailing effects as it moves.

References/notes

Current sprite https://github.com/Arcanorum/dungeonz/blob/master/client/assets/img/entities/projectiles/proj-fire.png

image

Acceptance criteria

  • A loopable set of animation frames for a fireball type projectile, that can be used in any direction.
  • Files (in order that they should be played) named up to however many frames are decided as
    proj-fire-1.png
    proj-fire-2.png
    ...
    proj-fire-[n].png

Cooking

Category:

  • Stat

Feature description
Cooking: A new stat and set of items to gather, craft and consume.

Used to create food items. Food items will offer much longer duration effects (hours?) that are mainly for non-combat bonuses, such as increased exp gain rate, increased gathering rate, temporary stat boosts.

This allows them to be distinct from potions, which are about short term immediate effects for dealing with a particular problem, and require more deliberate use. Food would act as a passive complement to whatever you are doing.

This gives a meaningful reason to add more types of animals and plants to gather ingredients from, to increase the game's item and creature catalogue.

Add stat level up particle effect

Add a particle emitter that will fire when a player levels up a stat.

Hints

Need to add some new particle sprites to use for the particle emitter. A few different brightly coloured celebration effects.
Existing damage blood splatter effect. Add some new ones here:
https://github.com/Arcanorum/dungeonz/tree/master/client/src/assets/images/gui/particles

Create a new particle emitter. The damage one, that can basically be copied:
https://github.com/Arcanorum/dungeonz/blob/master/client/src/game/Game.js#L208

How the particles are actually emitted:
https://github.com/Arcanorum/dungeonz/blob/master/client/src/network/websocket_events/Entity.js#L193
Needs another one that uses the new emitter adding to the stat level gained event:
https://github.com/Arcanorum/dungeonz/blob/master/client/src/network/websocket_events/PlayerValues.js#L77

Acceptance criteria

  • When any stat level is gained, a spray of particles should burst up from the player, like one of those party popper confetti things, or maybe some brightly coloured sparks.

Berserker character animation

Task description

A new creature type is to be added to the game for an upcoming update, the berserker.
It will be a variant of the basic human warrior, but with the armour restyled to a more red colour, and with larger horns on the helmet than the warrior, and the armour covers more of the body.

Recommended to look at the agonite armour task first: #66

Berserkers are more aggressive than the warrior, and attack more often as their health decreases.

Their armour reskin is to showcase the new metal item category, Agonite, that will also come with the same update.

References/notes

Warrior sprites: https://github.com/Arcanorum/dungeonz/tree/master/client/src/assets/images/entities/characters/warrior

A basic concept I drew
image

Similar concept art
https://i.pinimg.com/originals/04/1b/33/041b335c498b98e0da20012f3a3b65a7.jpg

Uses a tower style shield, but with pointed top and bottom edges
https://upload.wikimedia.org/wikipedia/commons/6/64/Ag-obj-5959-001-pub-large.jpg
https://www.stainedglassexpress.com/var/images/product/300.300/84023.jpg

The code for this creature is already in place using the warrior sprites. Just needs new new assets to use.

Acceptance criteria

Visual

  • A warrior variant with reddish armour, with more exaggerated features.
  • 3 animation frames for each direction (up, down, left, right (left but flipped)), to be played in the basic humanoid animation pattern used by other entities: 1 (standing), 2 (right step), 1 (standing), 3 (left step), repeating.
  • Uses the DawnBringer 32 colour palette used by the rest of the sprites.
  • Expected files:
    berserker-up-1.png
    berserker-up-2.png
    berserker-up-3.png
    berserker-down-1.png
    berserker-down-2.png
    berserker-down-3.png
    berserker-left-1.png
    berserker-left-2.png
    berserker-left-3.png
    berserker-right-1.png
    berserker-right-2.png
    berserker-right-3.png

Code

Add close tab confirmation, Ctrl + W, close button

A prompt when the user goes to close the tab that will confirm if they meant to do that, to avoid accidental misclick closing the game, and should inform them that they can create an account if they haven't done so already.

AC: If the user is not playing with an account, the "Create account" panel should be shown when a user event tries to close the page (x button, ctrl + W)

Leaderboard

Category:

  • UI
  • Other

Feature description
It would be nice to have a leaderboard that shows various stats of how good individual players are at certain things.

This would be a web page (i.e. dungeonz.io/highscores) for viewing the highest scores for various activities, such as fastest dungeon completion time, highest exp in each stat, most of a creature killed, etc.

It would also have a player search, to view the stats of a particular player.

Dungeon hard mode

Category:

  • Map
  • Other

Feature description
Some dungeons are too easy, and with not good enough rewards.
An interesting way to add extra challenge without just making enemies stronger would be to limit the players options for how to approach the enemies.

Hard mode:

  • Players cannot take items in from outside. They can only use what they can find or craft in there.

This would encourage players to

  • Plan around what objectives are important and to use their items effectively.
  • Use the natural resources provided by the dungeon (pickups, resource nodes/crafting stations, environmental hazards,)
  • Use creature faction allegiances for dungeons with multiple enemy types that are hostile to each other, lure them together and get them to kill each other first.

Perhaps this mode would give some exclusive rewards on completion.

Move client to Phaser 3

Phaser 2/C.E. is pretty old at this point.

Phaser 3 has some interesting features that would be nice to have, such as multi-camera views for a mini-map, and rendering performance improvements.

Phaser 4 is in development and will be written in TypeScript, which is what I would also like to move towards for the rest of the codebase at some point.

Chatting player icon

Category:

  • UI

Feature description
Add a chatting icon above a player when they are typing out a chat message, so other players can see when they should stop to wait for someone to finish what they are typing. Currently you can't tell if someone is typing something or is AFK.

Accessibility: Text font and size settings

Category:

  • UI

Feature description
While the current font "Press Start 2P" is aesthetically fitting for the game, it can be hard to read for some players, and some players might prefer larger (or smaller) text.

Settings could be added to allow a user to change the font in-game text is rendered with, and also change the size, to something more basic.

Items rework

Category:

  • Item (weapon, armor, consumable, resource, crafting recipe, etc.)

Feature description
Many times players ask for more inventory slots. This is not an unreasonable request, but I don't think people will be satisfied until they can carry most items at once, so they would just keep asking for more and more slots in the future, and I think it gets away from the real problem; You often want to have options available to you for whatever you are doing, and it is kind of annoying to need to keep going to the bank to get access to what you want.

I think items and crafting can be improved by changing from a set 10 slot limit in the inventory bar, to a "bag" type system where you can store as many items as you want, but each item would have a weight, and you can only carry so much weight.

For example, with a carry weight limit of 100, and if an individual item, i.e. iron ore, weighs 2, then you can carry 50 iron ores at once. If one iron hammer weighs 20, you can carry 5 of them.

This would separate the kind of item from how many items you can carry, as currently you can only carry the same amount no matter what it is, i.e. carry 10 cotton, or 10 noctis armours, even though they have vastly different values.

This would make resource gathering less annoying, as currently you can only gather 10 resources per trip (also assuming you dropped/destroyed your pickaxe too).

The problem with being able to hold so many different kind of items at once (if each type of item has a weight of 1 with a max weight of 100, you could carry 100 different kinds of items), is that it hard to present that on the UI cleanly. So, this main "bag" where you can access all of your items, would be accompanied by a "hotbar" (which would be the current main inventory slots bar) for quick access to items in your inventory. You can add items from your bag to the hotbar and select/use them from there.

Notes
This would be similar to how the inventory and item carrying works in The Elder Scrolls games.

Night vision potion

Category:

  • Item

Feature description
A potion that temporarily increases your personal view range in darkness.

Crafted using glowcaps (new mushroom resource node) at a laboratory.

Notes
Glowcap resource node reference. They would emit light in darkness, like furnaces.
image

Make item pickup class generation automatic

The way every item type should have a corresponding pickup entity is becoming unmaintainable and a nuisance to have to do when adding many items.

Make each item class be responsible for creating it's own pickup, or at least have the pickup in the same file.

This was originally done so that there could be special interactions for certain pickups, but so far all pickups are functionally identical.

Exploding arrows

Category:

  • Item (weapon, armor, consumable, resource, crafting recipe, etc.)

Feature description
Arrows that can be created with explosive tips that causes AOE damage when they hit something.

Chat box

Task description

A commonly requested feature is a persistent, and ideally global, way of chatting with other players.

This is a standard feature for MMO games and has been implemented a million times so nothing too radical is expected here.

Basic summary:
A way to communicate with other players over longer distances, and have messages remain viewable for longer in a chat log. Currently it is annoying to have to quickly read someones message, or miss some what what they said and they need to type it again, or have to keep opening another app like Discord to have a better chat experience.

Chat scopes

Basically channels/topics/categories for messages.
Local: Nearby players within view range.
Global: All players across all maps.
Trade: All players across all maps.
Guild: Guild members only. (Future, not for right now)

Log

A chat log/history of previous messages is not needed to be kept on the server. Only messages that a client receives after they join the game will be what they can see and scroll back through.
A limit for the amount of messages kept in the client message history will be needed, after which the oldest messages will be popped off as new ones are received.

Limiting

Players/bots that spam messages will show up at some point, so a limit of how many messages a client can send in a given time will be needed e.g. 15 messages per minute, after which they must wait a few seconds to chat again. Higher limit = Allows more messages in the same amount of time.
This limit should be server configurable for each chat scope.

  • Trade: Lowest limit, as it is available to everyone, and should be used for players looking to find/buy/sell things, and not for extended chatting.
  • Global: Lower limit, as it is visible to everyone, and more players in total would be chatting into that scope at once.
  • Local: Higher limit, as it will be received by fewer other players, and would be mostly for players near each other having a conversation.
  • Guild: Highest limit/no restriction, as it will be basically like a friends chat, that is limited to those who choose to be in the guild.

Filtering

I think censoring profanity is usually a pointless battle to try and fight. People always find creative ways of getting around filters, and those filters often just annoy everyone else. I know of games with strict filters to the point that common words get filtered, such as "assassin" censored for containing "ass", "knight" censored for containing "nig", etc.

I wouldn't want to remove the freedom of being able to say "Oh shit!" when realising you made it out of a dungeon with 1HP left.

There are 2 viable solutions:

  • Client side filtering. A player can choose a setting to turn on/off chat filtering for the messages they receive. Everyone else (such as the sender) sees the message as it is. Particularly useful for people making a video/streaming (or taking a screenshot) for their chat box to not get filled with things they don't want to be seen in whatever they are making.
  • This game has the design potential to solve the problem of bad-mouthers in a more organic way, given that most of the game world is open PvP, those who make a bad name for themselves can expect to get hunted down, and that a lot of the content is collaborative (trading/dungeons/guilds in the future) which other players can choose not to include that other player in.

Interface wireframe

chat-box-draft

Serve client through Express server.

Currently there is a problem in that browser caches often get in the way of users getting the correct version of the client for the current version of the game, resulting in missing or incorrect textures, missing text/translations, and generally buggy behavior.

The game server itself can be used to serve the client files, instead of them being served over the current CDN, by using Express which I can have more control over regarding caching, and also so I don't have to separately update the FTP server with the latest client code, as the client code payload is less than 30 MB, which can be optimised further.

iframed game not resizing canvas to available space on portal sites

The game doesn't fill the available space when iframed on portal sites, such as iogames.space.
The game canvas should resize to the window size (i.e. the iframe size).

image

Getting weird CORS errors. First time I have noticed this since the upgrade to Phaser 3.

image

I asked in the Phaser discord and a contributor there didn't see what could be causing it, or that it is related to Phaser as such. They assume it must be a problem during boot because of the CORS error above.

Can still move around and do things in the game, but only within the initial 100x100px canvas.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.