jamespierce

Members
  • Content Count

    199
  • Joined

  • Last visited

  • Days Won

    2

jamespierce last won the day on January 5

jamespierce had the most liked content!

2 Followers

About jamespierce

  • Rank
    Advanced Member

Contact Methods

  • Website URL
    http://browsergameshub.com
  • Twitter
    thejamespierce

Profile Information

  • Gender
    Male
  • Interests
    Ordered by priority: Programming, Gym & Running, Learning Chinese, Reading books

Recent Profile Visitors

2139 profile views
  1. Nice, I really like it! The puzzles are clever and the art style is beautiful! Sometimes I wish I could speed up the game a bit, to rotate & fall faster, and proceed quicker in the level
  2. I love the polish in this game! And actually getting 3 stars can be challenging especially if the RNG (next bubble to shoot) is against you. But overall I just have to repeat again how insanely polished this is from the menu to the level intro animations and sound effects, just everything! Very inspiring to see this 😮
  3. Game Link: Vocab RPG Vocab RPG is an Online RPG about catching Monsters & collecting Vocabulary Cards! Features: Open world with unique zones to explore MMO: Online multiplayer Monsters: Hunt, battle, and catch many unique monsters! Crafting: Collect different resources and use them to craft items & consumables Language Learning: Unlock vocabulary cards! Currently 4 vocabulary languages to choose from: Chinese, German, Japanese, Russian Overview: In Vocab RPG, you have all the elements of a monster-focused RPG: Hunting, fighting, catching, levelling, crafting, etc. But for every action that you take in the game, it will show you a vocabulary card! As a consequence, the more words you know, the stronger you also become in the game. The game starts very slowly with only 3 words unlocked. But as you progress in the game, you can unlock more cards and expand your vocabulary - at your own pace. Difficulties: To take into account different learning preferences, you can pick your challenge by choosing from 4 difficulty settings: - Normal: Wrong answers reduce your monster's attack or consumables (such as potions) by 25%. - Casual: Even if you answer wrong, you will attack and operate at 100% effectiveness. In other words, you see the cards but there is no consequence for answering wrong. - Hardcore: When you answer wrong, your monster's attack will fail! So answering wrong means 0 damage dealt. - Off: I also want people to enjoy this game, even when they are not really in the mood for studying vocabulary cards right now.... select 'Off' and you will not see any vocabulary cards in the game! Platform: Thanks to the power of Phaser 3, you can play this game on any device in your browser. No installation required. The game is mobile optimized, so whether you play on your laptop or phone / tablet, is only a matter of your preference. Game Link: If you are interested in trying the game, you can jump right into it: Vocab RPG Feedback: Any feedback is much appreciated! We also have a Discord server for the game where players are exchanging ideas, reporting bugs, and giving feedback: Vocab RPG Discord Credits: The game uses a lot of CC0 assets (like the monster sprites in this post) from various artists. I keep a list of all used assets here (which is also accessible from directly inside the game): Credits List
  4. 99.9% I build all UI inside the canvas using Phaser Objects (images, sprites, graphics, tweens, etc.).
  5. For Halloween, I added two new unlockable cards to the game! Any cardpack that you receive from levelling up can now contain these two new cards. Game Link: Pixel Memory
  6. The graphics object also has origin at 0,0. Moreover, graphics objects cannot have a different origin than 0,0. Sorry for sidetracking a bit but this is related info about graphics objects, especially if you are dealing with origins: When you add a graphics object to your scene, make sure you set the x,y coordinates. Else it will default to 0,0 and you might be confused why a graphics object in the center of your screen has its coords set to 0,0. Link to doc: https://photonstorm.github.io/phaser3-docs/global.html#GraphicsOptions If you want to detect input on a graphics object, you have to use a geometry object to manually set the input area. Link to doc: https://photonstorm.github.io/phaser3-docs/Phaser.GameObjects.Graphics.html#setInteractive__anchor You're right, the doc says it defaults to 0.5. I guess this needs to be updated in the doc. I think there is a place to submit change requests to the doc somewhere but I couldn't find it myself right now.
  7. Check out the tutorial series by the man who helped develop the tilemap system in Phaser 3, it's very good. In the second part of the series he is using a platformer as an example: Part 2 https://itnext.io/modular-game-worlds-in-phaser-3-tilemaps-2-dynamic-platformer-3d68e73d494a I still think you should go through the whole series, though!
  8. @blackhawx Okay I just kept typing and my post was getting a bit out of hand. So I decided to just write it out as a post on my dev blog here: How to Re-Use Phaser 3 Animations for Different Sprite Sheets I hope this was clear and useful! Feel free to "like" the post if it was good or leave feedback how I can improve it. Thanks again for helping me understand this process!
  9. Yes of course! I will post here the code snippet as soon as I've implemented it. I've just flown to Canada last night for a family visit for 2 weeks. So I don't know right now when I'll sit down and code again. But when it's done I'll post it here.
  10. This is even cleaner! No need for helper functions. I still don't use the setData() methods enough in my Phaser 3 projects. Thanks!
  11. Okay so that makes my "workaround" solution above terribly bad because animations are created when the object (npc with a sprite) is created! I'll go back to the way I had it before: Simple helper methods where I provide a string to return the animation-key for the corresponding sprite sheet. I apologize for my naivety in this topic but I'm happy I asked and got all this new information now. I know now the desired approach was unnecessarily "organized" at the cost of being terribly ineffective. Maybe I can extend the Animations object with my helper methods to provide a sprite key and animations key, and it will then play the right animation for that sprite sheet, i.e. 'spr1-walk', 'sp2-walk' etc. And then I'll load all animations from a JSON file! From everything I've understood now, I think this would be a proper approach to Phaser 3.
  12. I have that too xD Sometimes I get lost just optimizing my code or "beautify-ing" my code, when all I wanted to do initially was fix a bug... I know very little about the works behind animation, nor what exactly needs a lot of processing power. I should really start educating myself on such topics. Thanks for pointing this out, at least now I have some good keywords that I can google and research.
  13. I knew there was something to it that was beyond my knowledge! Thank you so much for giving this background information, I really appreciate it. I had no clue that it is actually advantageous to the performance. Since I will be adding tons of sprite sheets, I will really benefit from the way Phaser 3 does it. I will stick with it. Thanks again!
  14. In that case you can use the standard keyboard inputs but don't allow diagonal movement. Then on top of it, you only allow changing directions when it perfectly matches the grid, such as (same concept for y-coordinates): function allowChangeDirection() { if(player.x % tile_size === 0) { return true; } else { return false; } } Now the problem with this will be that if your tile_size is not divisible for the player's speed, then the check will never return true. To fix this, you can increase the range that you check by the speed / velocity value: function allowChangeDirection() { if(player.x % tile_size <= player.speed) { return true; } else { return false; } } Then when you finally change direction on the grid, round the player's coordinates to fit perfectly onto the grid. Else over time your player might end up a bit off the grid. if(allowChangeDirection()) { player.setPos( Math.round(player.x / tile_size), Math.round(player.y / tile_size) ); } This is just a general approach but you can play around with it and tweak the values for the checks & player coords which feel best for your particular game.