• Content Count

  • Joined

  • Last visited

  • Days Won


b10b last won the day on January 7

b10b had the most liked content!


About b10b

  • Rank
    Advanced Member

Contact Methods

  • Twitter

Recent Profile Visitors

7896 profile views
  1. I've also used the method described by @ZackMercury and it worked well enough to sequence events to audio reliably. One extra thing to consider (if setting animation based on audio elapsed time) is that visuals will be tend to appear one frame behind the audio. Because the frame is constructed and delivered after that time, whereas the audio will have continued. This is more obvious within low framerate environments (we were doing it at 20fps, rather than 60fps for example). A simple time offset is usually sufficient. A related issue is to consider "un-lagging" the inputs also (that is to say, consider when they were issued, not when the input was received by the main loop). Again this issue is less apparent at high framerates, but synchronisation should ideally be independent of fps.
  2. 300k at 60fps seems viable on desktop with ParticleContainer. Why do all the circles need their own interaction events? You may do better to use a "system" ... color map, distance calculation, tree search etc to determine which circles are "over". And those "circles" would be pretty small to fit them all on screen at once, are they all needed, and is it essential that every interaction occurs every update? Many ways to optimise, just change some of the upfront assumptions.
  3. @Jason908 LOL, I haven't done any DOM Javascript for a long time ... here's one approach for javascript.js: // get a reference to the box and cache the initial style for resetting const box = document.getElementById( 'box' ); const initStyle = box.style.cssText; // what to do when clicked, using the text within the button as identifier function onClick( event ) { switch( event.target.innerHTML ) { case 'Grow': box.style.width = box.style.height = '300px'; break; case 'Blue': box.style.backgroundColor = 'blue'; break; case 'Fade': box.style.opacity = 0.5; break; case 'Reset': box.style.cssText = initStyle; break; } } // add the click event listener to all the buttons [...document.getElementsByTagName( 'button' )].forEach( function( button ) { button.addEventListener( 'click', onClick ); } ); Please do better! My vanilla JS isn't so great after years of Haxe. I intentionally introduced a switch and a loop because they are fun to know. I also think that calling the DOM is dumb - so many risks with it not being as expected. Have fun!
  4. Yes you may have a chance. But I'd wager the chance of doubling your investment is less than merely breaking even. Otherwise everyone would do it and inflation would soar to keep up with the irrationality of the outcome (!?). But pragmatically - the chances of scalable-success are increased by understanding precisely who, why, how. It helps to avoid dismissing these as "random" etc, else success will also appear to be random (and therefore near impossible to scale). A good publishing partner will have considerable expertise and experience in this field. Worth rembering that anyone with more than 10 years experience in web games grew in the days of Flash - to dismiss partners with such heritage would be a loss.
  5. @mansimas first give yourself a slap for spending 5 years building a game while not simultaneously building an audience But to add to @mentuat's good advice ... Be very precise about who will play your game and why - then consider where that ideal audience already exists. Take ArmorGames as an example, perhaps this is a wonderful fit (speculation, I don't know your game or their audience)? Or if Kongregate served you well in the past it may be sensible to do that again rather than pin hopes on untested channels? Where are similar games doing really well, and what are they lacking? To explore this further requires you to ask hard but fair questions of a publisher - pitch your game, pursue a strategic plan on how they would take your game to market, exactly what will happen, when, by whom, what is the minimum revenue they will underwrite, what are the break clauses etc. Such questions are reasonable for exclusive licenses on a sizeable investment, and a serious partner will help to facilitate answers. But yes - to echo the good advice - initially start building your own community (self hosted lean version) - this will create a better game through feedback, realistic developer expectations, more commercial options, and a stronger negotiation position for you. Time spent on this may reduce commercial confusion and assist towards a focused publishing plan. Good luck.
  6. While playing the game (ok I admit I'm a little hooked now) I had another idea. It looks like the maps are seed generated chaos, with a half dozen having been hand selected, named, and set as presets? If so I assume an ~infinite number of potential maps already exist within the system. Amongst them is "Europe" - waiting to be discovered. So train the routine to recognise how close to Europe each random seed is, e.g. giving a score based on pixel matches to the reference image. Then let it run on loop for a week, and turn over a few quadrillion tries. Keep a record of the top 100 scoring maps. Manually review them at the end of the week and select a winner. Use that seed as "Europe". Total additional filesize: a few bytes. Why not look for other famous maps at the same time - e.g. The World, Westeros, etc ...
  7. I'm still unsure why bitmaps of this size are a concern to you, especially for a one-off map? A properly compressed 1000x1000 png will likely be less than a few hundred KB (and offer all the shading and smoothing you can think of). Or you can get fancy by overlaying textures based on conditions (e.g. edge glows) and grow the map collection without excessive bloat. I played your game btw, cool!
  8. This sounds like a fun challenge - to procedurally generate a map representative of Europe using a seed and some magic / chaos. Slartibartfast would know it immediately. However, I'm skeptical the resulting code would be significantly smaller than a ~1 mega pixel bitmap at load time. For reference an optimized lossless png of Europe (with 2 colors) is approx 6KB - attached. Perhaps you'd save 4KB absolute tops? The expanded video memory would be the same at runtime irrespective of whether the source was procedural or asset, so ... other than for the fun of it, why? Original image source: https://webstockreview.net/explore/europe-clipart-content/ Edit: looking at this map I did wonder how big a similar SVG bezier path would be ... perhaps ~1,000 anchor segments would do it ... each segment needs ~26 characters ... so 1000 x 26 bytes = 26KB? Could be optimized further and compressed, but I don't think it'd beat 6KB for the same level of fidelity, but it might come close? It would scale MUCH better though! A simpler outline (with artificial detail to backfill) could be the start of a procedural approach ... 2.6KB + procedure.
  9. Good question, I'd be interested to know definitively too. From what I've read it really is going, gone, done, extinct ... Windows Update will supposedly remove it? If so there will be some devious way to reinstall it, but expecting anyone to implement such a "malware" workaround is going to be increasingly unrealistic. I sympathise. Fortunately I moved on from Flash a long time ago, but I'm sad that the prior decade of work creating Flash content will unlikely be experienced anymore - even in sandboxed environments. I've not yet had much luck with auto-conversion tools (e.g. Ruffle) - perhaps once the #flashpocolypse occurs it'll be more important to spend a few days and figure it out once and for all. A wasm player should be feasible, so I remain optimistic.
  10. b10b

    To late?

    imo ... a well made HTML5 game is in a good position to see a lot of plays (e.g. a few million plays a year). Generally audiences are growing - playing a game in a browser (or embedded within a messenger app) seems less objectionable than it did in years past, and emerging markets seem to crave light-weight experiences. But it's not a mainstream marketplace and turning players into gold is not easy (in-game ads are always going to be low yield). Creatively making games in HTML5 is wonderful because time to publish is zero, barrier to entry is zero. So be cautious of platforms like FB IG etc because they contradict some of those benefits ... weigh up the benefits they claim (discoverability and monetization) vs the hassle (apple developer license, ios device cost, approval rounds, revenue splits, risk of deplatforming, being cloned etc). It's never too late to make games for the fun of it, or to make games that will make someone else happy to play.
  11. Revisiting Group-B inspired World Rally Car Racing we just finished our new racing game "RALLY CAR HERO" - a retro psuedo-3D racing game inspired by the original "SEGA RALLY CHAMPIONSHIP". 5MB of fast-five-minute-fun!. Play for free in your browser (no adverts): https://b10b.com/rallycarhero "Compete across the world as you race in the Rally Car Championship. Dodge opponents, boost around twisting corners, collect coins and upgrade your car for the next race. Are you the Rally Car Hero?" Technical: Like our other indie titles, this game was developed with Haxe + awe6 + CreateJS and designed to run on any device at ~30fps - which can be a challenge when dealing with pseudo-3D (no WebGL here, just lots of sprites!). RALLY CAR HERO is based on our GRAND PRIX HERO / STOCK CAR HERO / SUPERBIKE HERO engine and adds new multiple-environment textures and refinements to the controls (based on previous game feedback). We're always keen to make things better - let us know how it plays for you. Commercial: RALLY CAR HERO is available to license (on a non-exclusive basis) from our website: https://b10b.com Profiting from our games is easy to achieve - by licensing them commercially. We're easy to work with, we provide high quality SDK / API and branding implementations, great support and insights, we look after our partners and provide genuine value for money ... all in exchange for a fair-market license fee (or revenue-share). Get in touch.
  12. @TheCrock It's there, not sure why it's not showing up in your developer console "Sources" tab? Direct url below: http://atomicrobotdesign.com/blog_media/sprite_movement/js/requestAnimFrame.js
  13. Javascript "scope". When running in "strict" mode a function can only access members of itself. To access functions or variables outside of itself involves other approaches. Perhaps "Foundation Game Design" covers this topic? https://www.w3schools.com/js/js_scope.asp
  14. Generally, I'd say yes, do this. "Preloading" the bulk of your resources up-front makes life much easier as your loading logic is behind you and you can be confident the resource is available when called at runtime (no popins, no undefineds). Does it slow down everything? ... a preloader delay is a somewhat expected part of the UX so doesn't count against you even if it does slow things down fractionally. If that's a big concern then more advanced approaches can partition resources into multiple loaders (e.g. tier 1 = required by all, tier 2 = conditional based on user choices) and also individual loaders for on-demand content. Then trigger them (and wait for them to complete) at the appropriate point in the user experience. However this can count against you as it's not always expected UX to have to wait for a level, or a shop, or modal, etc to load - so adopt sparingly.
  15. Thanks @Noel, that's reassuring to hear. I can PM you the details if that's helpful.