b10b

Members
  • Content count

    361
  • Joined

  • Last visited

Everything posted by b10b

  1. b10b

    [Phaser] Mafia Pool Tricks

    @enriqueto I enjoyed this (solid feel of the ball was very satisfying) and played several opponents before encountering an issue with black-select-pocket and rage quit. My main comment would also be about the "Thinking..." delay. It was strange that the opponent thought for so long and then made such a poor shot. I understand the need to assess and compare multiple outcomes for advanced level NPC but perhaps a random shot (decided instantly) would be just as poor, but a whole lot faster, for the lower level NPC?
  2. b10b

    Infinite car game

    You've done well starting there - I think the codeincomplete tutorial is one of the finest out there. And it includes accompanying MIT licensed source code and github link - a perfect starting point. It also references Lou's pseudo 3d page which is fun reading on the broader subject and introduction to retro 2.5D engines and beyond ... http://www.extentofthejam.com/pseudo/ HTML5 canvas results can be quite convincing when combined with further visual effects, and optimal enough to run on mobile devices without the need for WebGL: http://b10b.com/grandprixhero Mastering this 2.5D illusion might take several attempts (probably a month or two for a newcomer?). If your project's budget might accommodate specialist third party involvement, give me a shout and I might be able to help.
  3. b10b

    [Phaser] FootChinko WC18

    @enriqueto I get a 404 on whoopass.ttf, so the text goes squiffy. Game was original to me and I liked the audio!
  4. b10b

    [Phaser] Soccer Snakes

    Great fun, played well, nice style, easy to play!
  5. b10b

    PIXI current versions in the future ?

    Risk is minimal. Minor updates are usually for specific reasons - a particular feature or bug fix. So there is often only need to update if such feature or fix directly affects our project, sub-library, or user base. Generally this is rare for a library as mature and well tested as Pixi. Major versions (and resulting deprecation) can be very exciting for early adopters but should be considered a "new book" - before opening we should check if we've finished the previous book and pre-identify why the new book is better.
  6. @bambo thanks, you encouraged (or shamed) us into making dedicated women sprites ... 4 days of customization now ... enough, it's only a 10-minute game, so onto something different
  7. What would you do? For example in a Soccer / Football game where the Player takes on the role of a National Team. They will face specific opponents of other National Teams. What's the optimal approach: Customization. Allow the Player to pick their Nation from dozens of Flags. Dynamically arrange the opposition so that they will not face "their" team in the competition. Specialization. Pre-allocate the Player a predefined Nation - either a specific Flag, or a generic Flag representing no particular Nation. The opposition are specified, so the Player may potentially face their "real" Nation. Generalizm. No Nations, just Colors or a collection of Generic Flags - let the Player infer their own meaning. Additionally, my constraints are: Cheap is best Less UI is better UI If using Generic Flags, what might they look like? THANKS
  8. b10b

    Pseudo 3d racing?

    http://b10b.com/grandprixhero Thanks - all our games are built using Haxe + awe6 + ( createjs || pixijs ), but that's maybe misleading for the 2.5D? The 2.5D in GRAND PRIX HERO (and SLALOM HERO) is a proprietary software renderer (using canvas.context2d.drawImage). For a psuedo-3D primer a great tutorial can be found here: http://www.extentofthejam.com/pseudo/
  9. Update. Thanks again for your answers - following advice we went with option 1, Customization. We ended up putting 70 teams in the game (but reusing 8 kits). AND IT INCLUDES FINLAND! We disabled using Geo-IP lookups for team selection because I didn't feel comfortable relying on a third party service. The team customisation layer consumed about 3 days of development time. The final result, SOCCER HERO, can be found in this post:
  10. b10b

    Soccer Hero

    With World Cup 2018 about to kick-off we have just released ""SOCCER HERO" a simple football inspired HTML5 game. Play for free in your browser (no adverts): http://b10b.com/soccerhero "Choose your hero and compete against 70 international opponents in the World Soccer event. Avoid the attacking players to approach the goal line. Once in front of the goal, time your shot to score! Will you be the Champion?" Technical: Like our other games SOCCER HERO was developed with Haxe + awe6 + CreateJS and designed to run on any device at ~30fps. SOCCER HERO is based on our HOCKEY HERO engine. Commercial: SOCCER HERO is available to license (on a non-exclusive basis) from our website: http://b10b.com
  11. There's also the opposite risk that "zooming in" too closely can create retrospective-relevancy. For example, of the 2% who did select a team they were the ones who played longest. Does that mean that the team selection mechanic influenced their prolonged stay - so we should add more? Or does it mean that they were the type of players who move slowly, systematically, and experiment with everything? The way I see it are that stats are great for posing interesting questions / testing assumptions, but their data should only influence future tests / insight.
  12. @mentuat thanks, you make a compelling case for doing it thoroughly, and also provide a viable concept for a generic flag (user avatar). Likewise when I made my first sports games I put all the teams from the real-world event in the game, added assets to cater for full customization (kits, flags, stats, skin tone bias, player name generators, national anthems ...) and dynamically created the player journey according to team selection. So I got super miffed when the in-game analytics showed that the default team selection was used for 98% of the play sessions! Your idea of using geo-data (and core audience) is great - a solid enhancement that may fix what I experienced. But I still wonder if @Ninjadoodle 's "illusion of choice" (as I call it) is sufficient to tick most of the patriotic fervour and leaderboard benefits, without the cost of asset creation? Decision time. Time permitting I'll adopt an incremental approach to test things out ... wide flag selection (fast carousel selection), followed by minimal customization (e.g. 4 kit colors, with opponents simply renamed and recolored based on initial flag selection)? Then review and enhance based on player analytics.
  13. @Ninjadoodle thanks, this is really interesting because .... exactly like when the video says ... "one thing that really really really bugged me about this game was that there was no Finland, no Finland!" ... and the Canada team wasn't even wearing Red (or C64 Brown!). So given that this "Customization" isn't really customized at all - my follow up question would be: do you genuinely like this, or is it just nostalgic? I'm trying to figure out (if implementing full-nation Customization) whether it is required to do it properly (all the teams, all the colors, no clashes) or whether doing a fake job of it (like "Summer Games") is actually good enough? Thanks!
  14. b10b

    [help] Slot game - How to spin the reels

    Sounds correct. On the side you'd store the full array of all Symbols. They needn't be Sprites, they can just be a simple reference which can be used to create the Symbols' Sprites on demand. The "current" index of that array is incremented to determine which are the displayed 5 Symbols.
  15. b10b

    [help] Slot game - How to spin the reels

    Hey Miguel! Another way to think about things is to see the Reels as a Stack of Cards. We see 4 at a time, there are only 4. The Reel spins when we add another Card to the top ("array.unshift"), everything moves down, the bottom Card drops away ("array.pop"). The transition / inbetweeing (or "Tween") occurs as an animation between these states - the y axis movement is just for effect, masking as described above is useful. To make a non-glitchy animation we'll need an extra Card at the top of the stack (5 total). Benefits of this Stack approach are that the circular nature of the Reels is resolved with a "modulus" index, and that the graphic memory used is optimised to just the 5 visible Cards per Reel (no need for really tall Reels, or 2 really tall Reels). Excluding the Tween, this approach closely resembles retro-scrolling.
  16. b10b

    Pseudo 3d racing?

    @FezMonki I have some experience at pseudo-3d racing games and made at least a dozen commercial titles using that tech over the decades (including multiplayer). I found the approach and visual effect fascinating and agree - with the right time and attention - HTML5 results can capture the pre-3D early 90s arcade quality. But I'd echo what @Antriel says, unless there is a particular technical reason to limit the engine to 2D blitting then a "true" 3D engine (emulating the retro 2.5D effect) will typically be more performant and easier to extend and maintain (especially in terms of mods and customs which is where the life of a game exists). Happy to answer specific questions about the techniques involved (many are visual tricks rather than technical tricks) or quote for upscale commercial projects (multiplayer or otherwise). I have existing engines (some simple, some advanced), if you have existing assets, or captive audience, then a partnership might be viable.
  17. b10b

    Images disappearing

    Righto, so if imgFile is already loaded, no need for the new Image for each player (and the async onload that is likely causing the glitch). Just use ImgFile in the context.drawImage command (synchronously): context.fillText(player.name, rectX+(rectWidth/2),rectY+(rectHeight/2)); context.drawImage(imgFile, x, y, 85, 201); Unsure what's populating x, y? Game looks interesting!
  18. b10b

    Images disappearing

    Just in case I wasn't very clear, I was suggesting a gameloop / tick on the client (view). Server side can usually be limited to emitting changes. One concern with your code (as presented above) is the img.onload is async, so who knows when it will occur - it may (theoretically) occur after the next context clearRect, or even the next? What's the goal with img and imgFile because it looks wasteful to me?
  19. b10b

    One more question

    Ignoring GDPR might be ok for non-EU markets in the short term. But if gaming is a global market with a global audience why delay? The GDPR regulations represent good practice (and what Generation-Z expect, EU or otherwise) - and a process-oriented small business will already be (mostly?) compliant. I think the commercial incentive will become more apparent over the next 6-12 months, as dealing with non-EU parties in non-EU territories will soon stipulate GDPR compliance for their vendors (a trickle-down effect). Entrepreneurs, you're now a DPO
  20. b10b

    One more question

    Ask your DPO Which areas have you ticked off: Breach Notification Customer Consent Data Protection Officer Data Portability Data Requests Increased Territorial Scope Privacy by Design Right to Access Right to be Forgotten Terms of Service As a first step write up a "Data Protection Plan" with these as headings, detail your processes involved in each - and how they relate to your services and partnerships. Seek third party expertise as appropriate. Reference and review regularly so it becomes cultural and part of every process.
  21. b10b

    Images disappearing

    @mla hard to give you solid advice on that without knowing a lot more. Generally I favour using a gameloop / tick for interactive applications as there's usually something happening on a heartbeat? Within the loop I'd visit the render method(s) and return-early if there's nothing to do. The data model can usually be asynchronously updated independently without interference. Sometimes it works better to buffer the async requests until the gameloop visits that section of the model, and then process / consolidate them all at that time. But no definitive rules, and my experience may relate to a different style of game than yours.
  22. b10b

    Images disappearing

    @mla From the code supplied, it appears to be clearing the context every time a setPosition message is received. And because you are sending multiple setPositions (one for each player during that disconnect) the issue you describe would be explained - i.e. only the last received player will show, but "who" was last will vary based on latency etc. But please don't patch this, redesign it - your message usage is flawed (you're shoehorning functionality into a message intended for something else). SetPosition should probably only set the position of a single player, not all of them in rapid succession, and not to include all of their static data every time too. SetPositions (plural) with an array of positions might be an improved approach, reduce messaging demands and allow for improved message handlers that will encourage you to decouple messaging from gameloop or rendering loop. Similarly there is likely no need to send ImgFile every time SetPosition occurs? Send it once when a new player connects, with a dedicated message, reference it later. Otherwise the size of your packets could get significant, and latency will increase. As a general rule, only send the smallest packet to describe the singular change needed to synchronise client and server. More bam,bam,bam rather than blahblahblah. And lastly, learn additional Javascript methods ... things like array.filter etc ... it will make everything easier.
  23. b10b

    Images disappearing

    Server-side: Why send "ImgFile" on every update? Is "playerById()" method accurate? Client-side: "context" is cleared every update (per player), only last entry will survive. That could explain the erratic results?
  24. b10b

    HTML5 games market again

    Down? Was it ever up? I wouldn't be surprised to see everything HTML5-games being sucked into FIG for the next year. But most will be noise - it'll take a different style of game to utilise it well and rise to the top. Are you making such a game?