Giter Club home page Giter Club logo

game's People

Contributors

agitperson avatar brainfart-be avatar brandonarmand avatar ccrosario avatar cnmullins avatar debjyoti-dutta avatar drachenfrucht1 avatar erezvish avatar greenkeeper[bot] avatar lanpai avatar maxrumsey avatar michaelw25 avatar mteam88 avatar naknode avatar omegacoo avatar sergeiguedel avatar srichter 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  avatar

Watchers

 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

game's Issues

Inventory tab should always be the default tab upon login

What is the current behavior?

Go to another tab that isn't the Inventory tab. Log out. Log back in. The tab is now the Logout tab.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Go to Wear tab.
  2. Logout.
  3. Login.
  4. Verify the tab is Logout.

What is the expected behavior?

When you log back in, the default tab should be the Inventory tab.

Additional context

This should be really easy to fix.

Convert NPM scripts to be OS agnostic

What mechanics does this feature affect?

The npm scripts dev:node and any custom script that requires rm -rf or changing directories.

How hard would it be to implement this feature on a scale of 1-10 (10 = hardest)?

4

What is the feature request?

Change the build process so that the NPM scripts can be run on any OS without a problem. Due to the way Unix and Windows treat folders differently, right now, the current solution is to lean on the Unix side of things but Window devs will encounter errors.

We need to find a way to absolve them of this issue by implementing (probably another NPM script) a way so that all NPM scripts work on any OS and they can buil/develop the game just fine.

World Items object adds unnecessary information to items

What is the current behavior?

The world.items object on the server (can be accessed via http://localhost:4000/world/items populates the items on the map. When viewed, some items have extraneous information like so:

[
  {
    "id": "bronze-pickaxe",
    "respawnIn": "8s",
    "x": 20,
    "y": 112,
    "uuid": "26a4ead5-4fd1-49bd-b2bc-6db2d792f613",
    "respawn": true,
    "pickedUp": false,
    "timestamp": 1558666693612
  },
  {
    "id": "bronze-shield",
    "respawnIn": "1m 30s",
    "x": 18,
    "y": 113,
    "uuid": "fa4990da-859a-46b3-b2e2-93aa5517933d",
    "respawn": true,
    "pickedUp": false,
    "timestamp": 1558666693612,
    "context": "item",
    "name": "Bronze Shield",
    "examine": "Reliable shield for all-around combat made of Bronze.",
    "price": 41,
    "type": "armor",
    "slot": "left_hand",
    "stats": {
      "attack": {
        "stab": 0,
        "slash": 0,
        "crush": 0,
        "range": 0
      },
      "defense": {
        "stab": 3,
        "slash": 5,
        "crush": 10,
        "range": 6
      }
    },
    "graphics": {
      "tileset": "armor",
      "row": 6,
      "column": 0
    },
    "actions": [
      "take",
      "examine",
      "drop",
      "equip",
      "unequip",
      "deposit",
      "withdraw",
      "buy",
      "sell",
      "value"
    ]
  }
]

If the current behavior is a bug, please provide the exact steps to reproduce.

Drop items. Observe world.items value. (itemsDropped)

What is the expected behavior?

To only contain needed information.

Additional context
Add any other context about the problem here.

A player who logs out still stays painted on other player's game canvas

What is the current behavior?

When you logout, you stay painted on the screen on other player's screen.

If the current behavior is a bug, please provide the exact steps to reproduce.

Have two sessions open (one in 1 browser, second one in incognito.)

Log into both players. Log out of player 1. Confirm on player 2 that player 1's session is still painted on.

What is the expected behavior?

For the canvas not to paint the logged out user

Additional context

This should be pretty easy to fix as all the pieces are in place. Not sure why it's happening but you need to send back the new player list upon logout to all other clients.

We are doing that upon login (obviously) so we can start looking there.

Actions and context-menu should be server-side

What is the current behavior?

The context-menu and actions are built client-side.

If the current behavior is a bug, please provide the exact steps to reproduce.

Right-click or do an action.

What is the expected behavior?

The list should be generated server side and the actions should be executed server-side.

Execute the generation of the context-menu and actions server-side

Additional context

This had to be @done.

Settings updates

I'd like to push two minor changes regarding settings if that's alright:

  1. a script for package.json for globally installed nodemon:
    "dev:node_global": "set NODE_ENV=development && nodemon --exec ./node_modules/.bin/babel-node --no-babelrc server.js --presets @babel/preset-env --plugins @babel/plugin-transform-modules-commonjs"
  2. add '*.history' to gitignore. This should ignore the history directory, which I use for local history.

If you approve this issue I'll add and push the commit.

Thanks

Suggestion: Integrate the game client into Vuex store state management

What mechanics does this feature affect?
Application architecture (this suggested change has a system-wide effect)

How hard would it be to implement this feature on a scale of 1-10 (10 = hardest)?
7

What is the feature request?
Delaford has a game client with a couple of subs (engine, map) which is an object that is essentially responsible for handling the application state.
The application also uses a Vuex store for state management (I believe it was added later), which also allows persisting the state. It is essentially another object responsible for state and currently handles login and accounts.

Since we have two objects that share some common responsibilities, I suggest merging the client into the store, creating a single source of truth for state.

What will we gain?

  1. A single source of truth for state
  2. Take advantage of goodies that are part of Vuex (actions / mutations, getters, ect)
  3. Refine the data that is passed to components (currently several components get a reference to the game client and I think they all go through the Vue update cycle whenever something changes in the game object. While Vue should be smart enough not to re-render, I think we can spare it some work of going through the updated life cycle hook)
  4. We will probably be able to utilize the persistent state for more than accounts and logins (I'm less familiar with the plugin).

@naknode , I'll be happy to hear your thoughts on the matter.

Erroneous login goes back to first-connected player on Socket.emit()

What is the current behavior?

The socket message of a player logging in with wrong password goes back to the first-connected player in the world.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Go to client log-in on Browser 1 (Chrome)
  2. Go to client log-in on Browser 2 (Firefox)
  3. Login with bad password on Browser 2.
  4. Verify that Browser 1 go the message.

What is the expected behavior?

The socket message to go back to the original player.

Browser, OS, and Node version

Additional context

To get a feel of how to solve this.. on the server folder, look into the fetch:items handler on how to construct the data.

Add weight-system to context-menu items

As of right now, the context-menu items are in the order they are declared in the Action class.

That means, when more actions are piled on (Mine ore, Trade with, etc.), that the context-menu will need to be shifted to provide great user experience.

The weight will need to be dynamic obviously with Cancel being always at the bottom and present and Walk here almost always at the top and also present.


As of right now there is no need to rush this as there are only two playable options (well, really one). But once you monsters come in (soon!) and once the first few skills come in (mining, smithing, fishing, cooking), then it will be needed.

In-game context menu does not go away even after clicking anywhere else but game

What is the current behavior?

Right-click in-game anywhere to open a context-menu. Now, when you click on, for example, inventory tab or anywhere but the game canvas, the context-menu stays visible.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Right-click on game
  2. Left-click on any slots (inventory or friend list or anywhere else)
  3. Observe context-menu in-game is still open

What is the expected behavior?

The context-menu in-game should close when the mouse clicks anywhere outside of the game.

Additional context
Add any other context about the problem here.

Access class context inside `do` method

When you right-click on the game Game.vue, it emits the event and coordinates to ContextMenu.vue, which then executes openMenu here:

https://github.com/Navarra/game/blob/43ae63275617a2caaab16d7c197653ca7731fe61/src/components/sub/ContextMenu.vue#L81-L96

By this point, the menu is build and just shown to the player.

Once we click on a menu item, we fire off selectAction():

https://github.com/Navarra/game/blob/43ae63275617a2caaab16d7c197653ca7731fe61/src/components/sub/ContextMenu.vue#L46-L56

The menu is closed and the emitter sends their regards:

https://github.com/Navarra/game/blob/43ae63275617a2caaab16d7c197653ca7731fe61/src/core/engine/actions.js#L5-L9

and by now, we execute the actionable item on the static method:

https://github.com/Navarra/game/blob/43ae63275617a2caaab16d7c197653ca7731fe61/src/core/engine/actions.js#L17-L22

Of course, I passed the Action object in the selectAction menthod in ContextMenu.vue and now gets in the same Action file. I am not an expert at the lexical scope of Vue.js and Classes yet, but I'll look at this whenever I can. If you know how this can be improved -- let me know!

The solution I am trying to do is to be able to access this correctly as set forth by the constructor inside the Action.do method when it gets instructions and I think it may because I am not binding correctly in the Action class in this line: bus.$on('ITEM:DO', Actions.do); It is the Vue.js instance.

You can bank more items than you have via context-menu

What is the current behavior?

You can bank more items than you have via context-menu even if you don't have enough of what you allowed.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Have 1 item in your inventory.
  2. Bank 'Bank gnome'
  3. Select Deposit-10 of ITEM of that item
  4. Observe 10 of that item in your bank.

What is the expected behavior?

You should only bank no more than what you have in your inventory.

Additional context

This will be revisited when stackable items (coins, arrows, bait) are added in in a few days.

Chat message should only appear for user's who are "close" to hear it

Do you want to request a feature or report a bug?

bug

What is the current behavior?

When a user types on chat, everyone in the map can see it.

If the current behavior is a bug, please provide the exact steps to reproduce.

  • Player 1 logs in. Goes to (24, 20).
  • Player 2 logs in. Goes to (243, 93).
  • Player 1 says "Hello world."
  • Player 2 sees "Player 1: Hello world."

What is the expected behavior?

Player 2 should only see a message from the player who is saying a message if they are theoretically in their viewport. So 15x11 tiles should be their chat range.

Incorrect login not notified

Do you want to request a feature or report a bug?

bug

What is the current behavior?

When a user attempts to login with invalid username/password -- nothing happens. In the backend, however, a 401 request is returned (unauthenticated.)

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Login with invalid credentials at login screen

What is the expected behavior?

A message or modal of some kind should appear letting the user know of their attempt

Most-right inventory item is cut-off

What is the current behavior?

The view of the inventory item (32x32) is cut off by width on every right-most slot.

image

If the current behavior is a bug, please provide the exact steps to reproduce.

Get an item on any (4n) 4th slot.

What is the expected behavior?

The item should be fully-visible. All 32 pixels in height and width.

Additional context
Add any other context about the problem here.

Player movement is too fast (rewrite walk engine?)

Problem

If you click really fast, you'll be able to move around the game map fast. This, by far, surpasses the 150 ms tick between each step as player works their way to through the trail formed by the pathfinding algorithm.

It seems like multiple walk-loops are enacted during this process. (not 100% verified but it seems like it.)

Bug in effect
walking_issue

Code affected

The Player class, the walkPath method would be a good place to start.

Notes

By encapsulating the walk loop in its own IIFE (Immediately-invoked function expression), I thought I could queue up the walk-loop so its not affected by other actions.

I am 100% sure I could improve the walkPath (walk-loop) method better with some refactoring.

Database - Relational vs Non-relational

That is the big question, huh? I'd love to start thinking about how Navarra will handle saving and loading of characters so we can start getting some iron ore in the bank and saving a hard day's work.

I've used NoSQL before with previous games and it's been alright. I've never needed to "scale out" or have too much problem but picking either NoSQL (CouchDB, MongoDB, etc.) or a relational DB is just a big question.

But, I've never been a big fan of document-oriented database -- like MongoDB. In MongoDB, a document is a big JSON blob with no particular format or schema. (yuck)

Personally, my vote is for MySQL. It has rows, columns and it's mature. The game is not that complex (nor do I plan on it being a ULTIMA-like complex).

I like that the data is structured. I like that I can create complex queries because you know that once I can start doing that, I'd love to blast some data-viz on Navarra so that we can figure out who fished the most salmon on Tuesday. (to be honest, 90% of the data-viz will go on the admin panel but that's for another time)

I like data-viz and having structured data and complex queries are a big thing for me. I can't wait to combine it with D3 so players can ooh and ahh over their progress in a sublime graphical layout.

However, my primary job is not a DBA. What is your take on a game like this for game-development? Looking forward to hear your comments.

Add a game-loop using requestAnimationFrame

At the moment, in its infancy, Navarra does not have a game-loop and this needs to change. Yes, it's <canvas> game that is also lacking in bits for graphics, but I think it would be imperative to add a game loop not only for the graphics (which would more than handle it) but also for the readability and logistics of it.

I propose we start using: requestAnimationFrame.

The window.requestAnimationFrame() method tells the browser that you wish to perform an animation and requests that the browser call a specified function to update an animation before the next repaint. The method takes a callback as an argument to be invoked before the repaint.

The <canvas> will be refreshed and all will be well. The monsters will be in their places, the items dropped will be there and of course, eventually, other connected players.

This means that the game.js file will slowly be migrated over to engine.js and that's where the game will kick off in a more apt manner.

Let me know if any of you have any objections. I think this is a step in the right direction.

Scrollbar in <ItemGrid.vue> should allow toggle and out of the way.

What is the current behavior?

It seems like the scrollbar is getting in the way in Firefox and, I believe, hides some of the graphics in Chrome. We should include some CSS to make this behave correctly.

If the current behavior is a bug, please provide the exact steps to reproduce.

Get more than 4 items in your inventory on Chrome. Observe the last item being cut off. We believe this issue is related to #56.

In Firefox, observe this:

image

What is the expected behavior?

Not cut off any graphics in the inventory and be pleasantly appealing in Firefox and not show and only when needed.

Additional context

Modularize import statements

What mechanics does this feature affect?

code only

How hard would it be to implement this feature on a scale of 1-10 (10 = hardest)?

  1. Just a bit of work.

What is the feature request?

Using an npm package like link-module-alias or similar, to replace all of the import or require statements with proper module aliases.

Right now, we have import statements like import EXAMPLE from '../../../../, you get the idea. With this change, it would be import EXAMPLE from '@server/test.js.

Dropping stackable items on map does not work

What is the current behavior?

Drop a set of 10 coins on map. You will see ONE coin graphic and when you pick it up... no quantity.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Go to bank.
  2. Withdraw 10 coins.
  3. Drop on map
  4. Observe map drop graphic is incorrect
  5. Pick up coins. Observe no quantity anymore.

What is the expected behavior?

Show the correct graphic for quantity stated and when you pick up, have that same quantity on the item.

Additional context

This really isn't a bug... more of like: I didn't get time to add this in but if you wanna take a stab! :P

Add a player's guide

What mechanics does this feature affect?
None (Docs)

How hard would it be to implement this feature on a scale of 1-10 (10 = hardest)?
1

What is the feature request?
Currently there's no player's guide (or if there's one, I couldn't find it). As a result, it confuses as to what the controls are and what's possible in the game world.

Can you make your guide more specific?

I can't seem to figure out what I need to do in order to play this game/ host a server. It would would be helpful I could know the following: What software I need to download in order to do this, and what to do with that software. If there is any software to download. It's just really confusing, and I would like to play.

Cancel button on login screen should back to main screen

Do you want to request a feature or report a bug?

bug

What is the current behavior?

When you click Cancel on the login screen -- nothing happens.

If the current behavior is a bug, please provide the exact steps to reproduce.

  • Go to the login screen.
  • Click cancel button
  • Observe (nothing happening).

What is the expected behavior?

The view should take the user back to the main menu.

Uncaught SyntaxError: Unexpected token _ in JSON at position 0 during npm serve

What is the current behavior?

When you follow the instructions to install on any Windows machine, you go to the webpage after npm run serve and you get Uncaught SyntaxError: Unexpected token _ in JSON at position 0

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. git clone
  2. cd game
  3. npm install
  4. npm run serve

What is the expected behavior?

For the game to run without errors on a Windows machine

Additional context
Add any other context about the problem here.

Color should coordinate with the item instead of the action.

Do you want to request a feature or report a bug?

feature

What is the current behavior?

Color coordinates with the action being taken.

If this is a feature request, what is motivation or use case for changing the behavior?

Color should coordinate with the item instead of the action.

This would better distinguish the impact a player makes when an action takes place. When we right-click we already know what we're looking for so we want to find it quick in the menu. If we have two colors, like 'Take Bronze Sword' and 'Examine Bronze Sword', it can confuse people. If the Bronze Sword is the same color for whatever action acted upon it, it would be better, I believe.

As it stands this is how it is:
captura de pantalla 2018-01-21 a las 9 58 15 pm

https://github.com/Navarra/game/blob/1f0a921605bba79f5234d9718a4c0521d291f788/src/core/player/actions.js#L25-L29

Which, in retrospect, is a bit confusing because it makes me think there are two different items at a cursory glance.

I think a better idea would be to group the items to have their own distinct (bright) color so we know what to look out for. For example:

Items: orange
NPCs: yellow
Players: white
(and so on)

Context-menu applies same color to all objects (npcs, items, etc.)

Do you want to request a feature or report a bug?

bug

What is the current behavior?

The context-menu color applies same color to the same item on the menu (orange).

image

If the current behavior is a bug, please provide the exact steps to reproduce.

Find where an item and an NPC are in the same square. Right-click to open context-menu.

What is the expected behavior?

The NPC (Baynard) should be in yellow text instead of orange.

Second tileset needs ID accomodation

Do you want to request a feature or report a bug?

feature

What is the current behavior?

Anytime we reference a backgroundTile, we have to accomodate the Tiled export. Like this:

https://github.com/Navarra/game/blob/6722b7d5a57643e1020b1078995e6c00d16f064e/src/core/map.js#L180-L195

https://github.com/Navarra/game/blob/6722b7d5a57643e1020b1078995e6c00d16f064e/src/core/map.js#L305

This is because Tiled has a gid and if I wanted to have a tile ID start from 0 for each tileset... well, from the creator:

You wouldn't, because you wouldn’t be able to determine from which tileset that particular tile is (not without additional knowledge at least: only you know that you have only two layers that only use a specific tileset for each).

The way to get from 253 to 0 is to subtract the “firstgid” associated with your second tileset. In the general case, this system allows a tile layer to use any number of tilesets. You can read more about this in the documentation1 (the JSON format works the same way).

Because what if each layer has associated with their own tileset?

It doesn’t matter, Tiled supports multiple tilesets per layer so it can’t change its output format to rely on there being only a single tileset per layer. It could be introduced as an option, but Tiled currently has no such option.

But, you can always implement your own map format, and teach Tiled how to read/write it by implementing either a C++ or Python Tiled plugin. Then you can simplify it as much as you like.

If this is a feature request, what is motivation or use case for changing the behavior?

Cleanliness and less-hacky way.

I think the solution may lay in the Tiled editor program that Navarra uses. But my degree of expertise is not as much as I would like. If you know of a solution, send a PR!

Picking up dropped items does not happen

What is the current behavior?

  1. Drop an item.
  2. Pick it up.
  3. Observe that you went to place of dropped item.
  4. Observe that you did NOT pick up the item despite the item disappearing from the floor.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Drop an item.
  2. Right-click, Pick up ITEM

What is the expected behavior?

For the item to be slotted into your inventory -- if allowed.

Additional context

Chat log does not clear upon re-login

What is the current behavior?

Examine the world, items or do other stuff. When you logout, and then login again, the chat stays the same.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Examine an object or NPC.
  2. Verify the text in the chatbox.
  3. Logout.
  4. Login.
  5. Verify the same text still in the chatbox.

What is the expected behavior?

To clear the chatbox every time upon logout.

When you log back in, it should just say Welcome to Delaford.

Additional context
Add any other context about the problem here.

NPC movement not taking into account foreground objects

Do you want to request a feature or report a bug?

bug

What is the current behavior?

NPCs are ignoring whether they should go through blocked foreground objects.

If the current behavior is a bug, please provide the exact steps to reproduce.

Watch an NPC go through a NPC.

What is the expected behavior?

They should stop and not continue forward.

Standardize asset loading

Do you want to request a feature or report a bug?

feature

What is the current behavior?

Explicit declarations to load assets (JSON, graphics, etc.) from both development and production environments.

What is the expected behavior?

Load assets dynamically using path module and via a method -- would be great.

If this is a feature request, what is motivation or use case for changing the behavior?

It looks gross right now.


In our webpack config: webpack.base.config.js:

  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
    }
  },

We use @ to state whether the import resolves to the source or not. If not, it is production. For example, right now on game.js:

https://github.com/Navarra/game/blob/4b05ff7e1612c9bfcbd14136d7cb2f767801c24c/src/core/game.js#L1-L5

I'd like to make this simpler. Prettier, too. If anyone wants to take a shot at fixing this issue, go for it. path module is your friend here.

Order of items dropped does not reflect last dropped

Do you want to request a feature or report a bug?

bug

What is the current behavior?

When you drop items, the order in the context-menu when you right-click the tile is in the wrong order.

image

If the current behavior is a bug, please provide the exact steps to reproduce.

Drop a a sword, axe, dagger. The order when you right-click is

Sword, Axe, Dagger

What is the expected behavior?

You should see the items in the list in the order you dropped them or rather when they appeared on the map.

Allow networking

Do you want to request a feature or report a bug?

feature

What is the current behavior?

players cannot connect

If the current behavior is a bug, please provide the exact steps to reproduce.

What is the expected behavior?

to allow players to connect

Popup screen does not close when moving away

What is the current behavior?

When you open a popup screen, usually via trading, and you click someone on the edge of the canvas to go somewhere on the map, the popup screen stays connected.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Trade a vendor.
  2. Confirm screen is visible.
  3. Click on edge of canvas to go somewhere in map.
  4. Confirm the trade screen is still up.

What is the expected behavior?

When you move somewhere on the map, the online screen should close for an easier UX experience and viability of bug abuse.

Expand the Sass stylesheet base of Delaford

As Delaford slowly grows, its needs for custom design and unique view of a game world grows. We are using Sass (.scss) and thus, slowly we build our stylesheet over at /src/assets/scss.

What this folder will hold will be pretty much like its own mini-project (maybe even a sub-repo). But basically, it's going the base framework of Delaford and its stylesheet. You know we're going to need to define button element on how it will look in the UI versus a pop-over pane screen.

What I'd like to mimic and borrow from is Bulma.io's architecture. I feel like they have a strong overview of how to design a SCSS framework. Obviously, not everything there is applicable to what Delaford needs but the base framework of a working one is the one we're aiming for the 0.0.1 launch.

Context-menu should apply weights

Do you want to request a feature or report a bug?

bug

What is the current behavior?

Items are not sorted by their attributed weight property as dictated in src/core/player/data/actions.js.

That way, you get things like this:

screen shot 2018-04-21 at 8 22 17 pm

Common game theory dictates that severe (and damaging) action items like Drop should be at the bottom while popular action items like Equip should be at the top.

If the current behavior is a bug, please provide the exact steps to reproduce.

Right-click on any place allowed to display the context-menu.

What is the expected behavior?

The action items should be sorted by their weight property.

No skill stats showing in pane & console TypeError

What is the current behavior?

  1. Console error:

TypeError: string.charAt is not a function at VueComponent.capitalizeFirstLetter

  1. Stats tab is not showing skills

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. login into the game (I'm using the guest login)
  2. open the console
  3. observe the error
    *if the error doesn't appear try moving the player around a bit

What is the expected behavior?

  1. No error
  2. When clicking the stats tab in the right pane, observe a list of skills

Additional context
This error seems to be due to the behavior of the v-for in Stats.vue . My Vue is a little rusty, but I believe the syntax used is suitable for working with object properties, whereas the stats are received as an array.
This results in capitalizeFirstLetter method getting the number 0 and failing.

To fix the issue, the v-for should probably be on skill in skills and the capitalizeFirstLetter method should receive skill.name
*capitalizeFirstLetter should protect itself by addressing cases where non string input is received is not a string. Alternatively we can replace it with css text-transform: capitalize.

@naknode
I'm opening new issues for new things I encounter if I'm submitting a pull request shortly after. I think I read somewhere that pull requests will only be accepted for issues, and even if not, I thought it's a good such things documented. Please let me know if you want me to keep doing that or just submit a pull request.

Server does not take into account purchasing items with no coins

What is the current behavior?

When you try to buy an item from a vendor, with no coins in your inventory, the server throws an error.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Make sure you have no coins in your inventory.
  2. Go to Ludovico's axes and buy (any amount) of axes.
  3. Observe the server console stream for error.

What is the expected behavior?

Let the player know, via chat, that their action has resulted in "insufficient funds."

Additional context

During the Shop.buy() method, we assume that we always have coins on hand because we run this.inventory[this.coinIndex].qty without regard to seeing if they have coins or not and thus, when you don't, you get the error.

You can only sell 1 item at the General Store

What is the current behavior?

When you sell more than one item to the general store, and they do not have it, you will only sell 1 of it.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Have 3 or more items to sell to a store.
  2. Confirm that the store does not carry it in their inventory.
  3. Sell "5" of the item.
  4. Observe only selling 1 as you get money for 1 and their stock goes up by 1 and yet all of your items you sold vanish

What is the expected behavior?

Sell accordingly.

Additional context

Should be an easy fix.

Mouse allows to walk on blocked tiles after path lands mouse on a blocked tile

Do you want to request a feature or report a bug?

bug

What is the current behavior?

When you right-click to walk somewhere, your mouse will still show "yellow" when the path finishes and your mouse is hovering on a blocked tile.

mouse_wall_issue

If the current behavior is a bug, please provide the exact steps to reproduce.

Make sure that your mouse will land on a blocked tile when player is finished walking.

  1. Right-click on a walkable tile
  2. Click on 'Walk here'

What is the expected behavior?

For the mouse selection to turn red and thus not click be attempt to walk there.

When banking items, set default tab to Inventory

What is the current behavior?

When you bank items, the player slot does not change.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Click on Wear tab.
  2. Bank on 'Bank gnome'
  3. Observe tab does not change to Inventory.

What is the expected behavior?

The tab should show immediately Inventory.

Additional context
Add any other context about the problem here.

Terrain with objects (foreground tiles) that allow passage cannot be walked on

What is the current behavior?

When a user tries to walk across a (for example) a body of water that is allowed passage through a foreground tile (like a bridge), it will not let it.

If the current behavior is a bug, please provide the exact steps to reproduce.

See this:

image

What is the expected behavior?

To allow passage.

Browser, OS, and Node version

Additional context

Make the cursor change to yellow to make clickable and change the UI for mouse accordingly as well.

Multi-dimensional layers of the game map

As it stands, the game map of Navarra is currently 1 layer and this has got to change.

It can be so much better. The tileset itself will need to be re-worked and changed to better fit the needs of the game. A lot of it can be extracted into its own layer which would be transparent. The trees, signs, dirt roads and more can be put into a different tileset. Then those tiles can go anywhere in the background which is static and does not change.

This is just a no-brainer and will definitely allow more improvisation as Navarra's game map fleshes itself out. An extra layer can also add the ease of item-to-tile or user-to-tile interaction. Since they're transparent, meaning they go into multiple places and can have dynamic actions and we can locate them.

This will add another layer or two during background image processing but will be well worth the flexibility as Navarra's lore grows to accommodate its narrative.

Luckily, I have (somewhat) experience in Gimp and this will be nothing short of just a time-consuming task. Over 600 or so tiles to go through. With the tileset, the posibilites then will became a lot more than 600.


I'm using Tiled to edit the game-map. Once I get it all sorted out, I'll re-upload it with the .tmx file along with the new tileset images.

Can pick up items twice

What is the current behavior?

If the current behavior is a bug, please provide the exact steps to reproduce.

  • Log in as a guest
  • Pick up the shield
  • Move away from the current screen completely
  • Come back, and the items (including the shield) are still there
  • Pick up shield again
  • Shield shows up in inventory

delaford.png

What is the expected behavior?
The shield on the ground should disappear once picked up
or
The menu should say "You already have the shield"
. . . unless this behavior is related to gameplay

Additional context
I was logged in as a guest, so maybe it affects gusts only (unlikely, though)? 🤔

World map compression and encoding

Currently, the world map is using arrays. Egads, right?

For even a 200x200 map, that's still a lot of data that can be compressed and encoded and a lot of bytes to save! Ideally, we can do

  • Gzip compression
  • Base64 encoded

And 200x200, or whichever, can be called upon as a nice, compressed string which would be decode and uncompressed. The map editor I am using is Tiled to do the encoding and compression.

There are tons of gzip and base64 libraries on NPM that we can use to get started.


No rush, as I don't see the need for the map to go over 100x100, yet... but there will come a time where this must be done.

Introduce (dropped) item spawn functionality

What mechanics does this feature affect?

Player, Map, Items

How hard would it be to implement this feature on a scale of 1-10 (10 = hardest)?

  1. It's a just a matter of defining architecture.

Describe the solution you'd like

When an item spawns on the floor, and someone picks it up, have the game respawn that same item after a certain amount of time at the same location.

Also, when someone drops an item from their inventory, have it be removed from the game after a period of 1 minute of inactivity on the item.

Name Change [Navarra -> Delaford]

Welcome to Delaford!

We have (err, I) have decided to change the name from Navarra to Delaford for a few reasons.

First of all, while I love the name Navarra, I could never justify it as it was somewhat hard to pronounce and harder to spell.

The URL itself was uncannily long. Having a hyphen in a URL always bugged me and not having [gamename].com did as well.

I've been meaning to change the name for a while now and Delaford stuck into my mind. It's gothic, medieval and most of all, it's short. And for you Jane Austen readers, you'll know what it means.

We're now located at delaford.com. Much better.

Now, let's get back to the game developing!

Double-clicking a queueable action item puts it in queue more than once

What is the current behavior?

You hover over an item on the ground. Double or triple click really fast to "Take" the item. Observe your multiple of items.

If the current behavior is a bug, please provide the exact steps to reproduce.

See above.

What is the expected behavior?

Only allow once.

Additional context

Should be really easy to fix.

You can login twice via fast-clicking the login form.

What is the current behavior?

When you click the login button fast twice, the server will login and have two sessions.

If the current behavior is a bug, please provide the exact steps to reproduce.

  1. Go to login form.
  2. Fill out player details.
  3. Quickly press the LOGIN button twice.
  4. Observe server Player has logged in twice.

What is the expected behavior?

To only allow the player to click login once.

Additional context

You can simply disable the Login button during the POST of login and release it if its successful or errors out.

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.