• Content Count

  • Joined

  • Last visited

Everything posted by b10b

  1. b10b

    Website Embedding my Games - What can I do?

    @jamespierce oh thanks, and I didn't mean to cry a sob story or take anything away from your situation - you have every right to grumble! But yes, the primary goal is to avoid throwing away good energy on these issues and, instead, focus on first-to-market or domain-based IP protection.
  2. b10b

    Website Embedding my Games - What can I do?

    That's unlucky @jamespierce. I also see lots of our games there ... But what frustrates me more than seeing unlicensed games is seeing bad clones of our work. I see both our original "Slalom Hero" game ... and the cloned mess that is "Ski Slalom 3D" ... here's the story: Original: http://b10b.com/slalomhero/ Clone: http://www.game-game.com.ua/189841/ Someone, (aka devgru), decided to rip our game, change a few graphics and list it on Envato / Code Canyon. From there it proliferated ... today I see it popping up all over the place, and it's getting worse. Theft aside what really grinds my gears is how badly the ripoff was done - it's markedly inferior to the original with clipart graphics and watermarks! Envato totally duck any responsibility - sure they responded quick enough to the DCMA take-down but they took no action to notify their customers (who bought our item without our permission) that they should surrender / destroy it and get refunded - hence the proliferation. So - whatever you buy from Envato - be mindful that it may be stolen and you will never ever know. But, back to topic ... don't sweat the small stuff, there's always someone unoriginal and meaningless ripping something off. Whereas any party worth doing business with will be double checking licensing rights and permissions - and demanding assurances and quality! Deal with them.
  3. b10b


    Not at the moment no, still work in progress. We do post process everything - but not necessarily for clarity, more for effect or separation from other sounds.
  4. b10b


    We bought a couple of Blue Yeti's (~$300 for the pair). Decent sound, well supported with compatible arms etc, versatile for other purposes. Selected because of value to quality ratio.
  5. Within a NodeJS environment I like to use PhantomJS for server-side image creation. Reason being that it works pretty much exactly as client-side image creation and is single dependency. If wanting to "off-world" the Phantom process there is the excellent PhantomJSCloud.com service.
  6. b10b

    My web games site (4 games so far)

    Congrats, feeling solid. I enjoyed the nostalgia of the simplicity, muted palette, control schemes, and 1980s 8-bit retro vibe. But ... I didn't have sufficient fun to feel compelled to register my score. Perhaps if going so minimal add some whackiness too? The 8-bit era was full of crazy. Some simple SFX would not go amiss. Also I didn't enjoy not being able to replay the games without reloading the page - intentional? Self promotion angle is intriguing but was lost on me as a player. Add an infographic?
  7. Thanks @Noel - might this also impact updateAsync() in future (for the same reasons)?
  8. What would the initial library footprint be (in KB and time to load)? Does the library come all-as-one, or can it be modularized or have dead code eliminated? Does a WebGL requirement limit the audience / inventory? These may be relevant considerations for a playable-ad (or instant-game) when evaluating options.
  9. Looks like you're pushing the same blankRow into all the rows. So any change to any row will effect all rows. Whereas you probably want to push a new bankRow into each row? Solution: move the x loop into the y loop. You may also want to consider an alternative data structure to an array if you're doing higher level manipulation.
  10. I believe that once the screen is locked, no further JS execution occurs, hence the "visibilitychange" event never fires (so mute is not activated). This is appropriate behavior and also prevents any hacky JS suggestions. You might want to listen for a "document.blur" event? I'm doubtful it'll be fired either (if going directly from web app to lock via hard button), but probably higher chance than the visibilitychange?
  11. Hook up a method to check for "document.hidden" (and then mute or unmute accordingly) when the document receives a "visibilitychange" event. Note "document.hidden" might still be vendor prefixed?
  12. window.prompt() is convenient but may create some weird traps. My tip would be to separate the UI from the logic. Take a few steps back and define what the data validation function looks like, implement that first. Then call the prompt (whether window.prompt or an alternative UI) "while" the validation function returns a falsy. Then it'll neatly repeat until a valid name is supplied. No recursion should be needed - ideally each function should do a single thing, and return as soon as that thing is done.
  13. @trial I'm pleased that worked out for you! Lucky shot on my part. Nothing special ... Sound.play() using the "loops" parameter. I'd bet there's still a 10ms gap in there, even with ogg - but the style of music and cut of the loop can make a big difference to perception. Another trick (not used here) is to have some ambient sound effect looping at the same time, but out of phase with the music loop - so there will never be "silence".
  14. You decide. Have a quick play on any of my games (http://b10b.com) - to date, all are using CreateJS / SoundJS and have looping music. No special encoding techniques used, just the "easy" methods I described (plus a healthy dedication to precision). Is it perfectly seamless? no ... Is it acceptable? totally. Just a thought ... are you running your game through a http server? If not then "localhost" will degrade SoundJS to HTMLAudio, where gaps are often more significant.
  15. Consider that mp3s don't loop seamlessly by default - they require dedicated and specialist approaches to avoid the apparent lead-in and tail fades created by the encoder. As a simple solution it may be better to switch to mp4 and ogg - neither will create genuine seamless loops, but their gaps are less apparent (in my experience) and the formats solve other problems (licensing and compatibility). The choice of music, and where the cut is made is also another easy win. And remember, looping 4 times in the audio file will reduce the apparent gaps by 400% @trial beyond that, there are ways to achieve genuine seamless loops, but I'm not sure if they're worth the effort to describe or implement if your focus is using Animate CC?
  16. It's not comparing Apples to Apples. Designing a (decent) Facebook Instant Game is about tightly coupling the "Context" of a group chat into a game. That's not something that fits readily with other mobile app platforms (where "social" tends to be a bolt-on), and stands as a fairly unique value proposition. Granted FB were not the first with this paradigm, nor the last messenger to roll something like this out. Annoyances like inconsistent platform monetisation (iap on some platforms, ads on others, Apple developer account, etc) is a reflection of the fractured native-app eco system, not FB in particular? Granted I wouldn't rely on direct monetisation through this platform yet, but nor would I care to see FBIG become yet-another App Store with the same-old games, same-old discoverability issues, same-old monetisation bad habits. I'd rather see a new type of game emerge, one that can can grow beyond the walled gardens.
  17. b10b

    Encode Every Pixel into Array Quickly

    Sounds like a fun programming exercise ... translating a 1D array into a 2D array based on a fixed length row. Keywords might be "array", "slice", "splice", "chunk". Many ways to do it. Or, given that it is a Boolean array, string expressions could be leveraged: var _1d = [0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0]; var _2d = _1d.join('').match( /.{1,5}/g ).map( p_s => p_s.split('').map( Number ) ); This assumes a row width of 5. But probably tidier to do directly from the ImageMapData where you already know the width. Map!
  18. To do the elaborate stuff you'll benefit from a custom backend. https://developers.facebook.com/docs/games/instant-games/guides/bots-and-server-communication Up to you what state it manages, how rapidly you communicate with it, how, and for whom. Full stack territory.
  19. b10b

    Encode Every Pixel into Array Quickly

    https://www.w3schools.com/tags/canvas_imagedata_data.asp Worth taking some time to read the APIs around Canvas, there aren't many methods - but each is very powerful so it's a high signal to noise ratio.
  20. b10b

    Encode Every Pixel into Array Quickly

    https://www.w3schools.com/tags/canvas_getimagedata.asp Running a map to turn that ImageData (per pixel) into a boolean array is pretty fast with modern js. You probably only need to do it once on init? When the Player moves that's unlikely needed in the pathfinding array (just the start position changes)? If it is needed then make only the difference change(s). But running pathfinding every loop is probably a bad idea anyway - do it less often - e.g. when the circumstances change.
  21. b10b


    For larger scale own-IP projects I'd launch independently and tightly integrate it into a social network to make it server / domain authoritative. Initially a reduced content / early access version - holding advanced levels and features back for phase 2. Purpose of Phase 1 would be to get initial player feedback, build traction and secure IP (to an extent). Armed with demonstrable value (traction) I may choose to seek sponsorship / partnership for unique content or licensing of the domain / IP. That being said, often anything that is complex to take to market, has an after-thought sales or partner plan, or has limited monetization routes is commercially weak - often requiring luck to break even. Which sponsors did you have in mind and have you dealt with them before at this scale of game?
  22. b10b

    What editors do you use? (/recommend)

    I take two bottles into the shower ... VSCode for Typescript and HaxeDevelop for Haxe. IMO both are equally competent for vanilla JS, HTML, CSS. Please remember to support whichever free IDE you adopt
  23. Hey, what's the problem exactly? 'Game Board.js' manages to pick up the reference to 'canvas' ok (using 'window' as the common container). Not saying that's a good idea, but it works as far as I can see? There are lots of alternative approaches for working with multiple js files (or using them as modules), so some background reading or exploration might be valuable? "js build tools", "js transpiler" are good starting search keywords.
  24. b10b

    Footballers image

    An old-school approach was to keep the (generic) game data in a plain format so that Players could mod their copy of the game with fan-created content packs.
  25. Nice, makes total sense to have a sub-forum for this and attract questions and answers in one spot. The Facebook group is quite active but sometimes doesn't lend itself as well to examples or code snippets imo.