• Content count

  • Joined

  • Last visited


About b10b

  • Rank
    Advanced Member

Contact Methods

  • Twitter

Recent Profile Visitors

3,133 profile views
  1. 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.
  2. 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!
  3. 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?
  4. 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
  5. 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.
  6. 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.
  7. 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.
  8. 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?
  9. 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?
  10. b10b

    center text on screen

    Slight optimization in case you're doing a LOT of them: getCenterX: function () { return ( sys.canvas.width - this._bounds.global.width ) * .5 }
  11. Good game. I got to 35 after a couple of plays, subsequent plays did not improve the score. Main critiques were that my "best" shots were often more accidental than skill. Therefore although the ray-scan-hint felt useful initially, it proved an increasingly ineffective strategy only slowing down the gameplay / chance of success. And when the end was near, loss felt unavoidable, rather than being able to use skill to escape (like in Tetris as an example). So more interplay and emergent strategies needed - ideally in the passive moment when waiting for the balls to do their thing. Why does the player need to wait for all the balls to return before starting the next volley? I'll play again later to see if I missed anything.
  12. Modulo Operations can be useful for offsets like this. It might work that each turret has its own "seed" (e.g. 1...12) . Then, each game-loop tick, increment an "updates" counter. Then lastly only consider firing if "updates%12=seed". Using unique prime numbers for the seeds can help make any emergent patterns more varied, or use consecutive seeds for quick succession.
  13. Tough break, and there is likely more to the story. My advice ... Avoid empty threats. Avoid destructive tactics. Professionally state the agreement and provide a clear ask that includes deliverables and schedule - reissue or revise as appropriate and make it simple for the other party to resolve. Beyond that avoid wasting more time and money pursuing dead ends. "Learning" is the payment for this job, and you can only spend it with yourself. Invest it in identifying better deals and structuring future agreements in ways that reduce everyone's risk. Somewhat trite but true nonetheless. If others are at risk you could consider publishing more facts - but only as a safety message, not as a criticism of other parties. Integrity and patience, good luck.
  14. b10b

    Audio Rhythm Syncing

    My quick response would be option 3 works just fine for simpler games.