b10b

Members
  • Content Count

    646
  • Joined

  • Last visited

  • Days Won

    22

Everything posted by b10b

  1. @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!
  2. 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.
  3. @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.
  4. 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 ...
  5. 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!
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. @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
  11. 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
  12. 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.
  13. Thanks @Noel, that's reassuring to hear. I can PM you the details if that's helpful.
  14. This story gets even sadder. We just received a lawyer threat from a self-important game studio because one of our (stolen) games is published on Facebook Instant Games (not by us) and altered (not by us) to include aforementioned studio's precious trademark and logo (some minor game title that we'd literally never heard of outside of a descriptive term for a road surface).
  15. Server authoritative, excellent. On the engagement aspect, one bit of advice would be to have a more dynamic title. "Puzzle Astronauts" might describe the game from one perspective but doesn't emote much to a potential player? Whereas things like "Astro Escape" or "Moon Masters" combined with a little extra narrative and jeopardy can go a long way to create curiosity, intrigue and the big retention booster ... will they make it to the end?!!? Just ideas. I'm generally lazy with narrative and this is something I'm aware of.
  16. I played the game for a few levels and liked it. I hope the prize gets you some early traction - it's an interesting incentive method to overcome that early discoverability riddle! I can't offer a better suggestion right now, but I felt you might be susceptable to a quick cheat or someone (validly) claiming it within the first hour (and then it not providing much incentive beyond that). Good luck, let us know how things unfolded.
  17. As a primer and insight into the not-always-obvious I'd recommend a read of @Antriel multiplayer platformer devlog:
  18. I ended up using a similar approach to create "Billboard" sprites - setting their Affine to POINT and then scaling them manually per-update based on getDepth(). Sqrt2/2 was somewhere in the mix iirc. Also the value of getDepth can be used to z-cull (POINT will not cull otherwise, with something behind the camera showing in front). Still felt a bit hacky, but got the job done. I was unsure whether one of the existing Affine modes did this already, but didn't have any luck with them.
  19. Undoubtedly @ivan.popelyshev shader approach is going to be fastest - if performance is everything, or realtime transitions are needed, you gotta dig into custom shaders and his example is a great place to start. Whereas ... if you are ok with another "fast enough" approach (that's easy to understand, implement, and extend) ... use the same Sprite method as explained for Circles. Swap the Circle Bitmap texture to a Rectangular white fill texture. Then adjust the X scale for length, Y scale for linewidth, move the anchor to (0,.5), then move and rotate the Sprite based on start and end point (Math.atan for angle). In my quick test this is faster than the Circle test. So 50,000 circles + 30,000 lines in under 200ms on desktop. Then cache! Edit: for reference, these are the "kludgey" approaches we used when drawing lines with Flash before the draw API was introduced in "Flash MX" (pre 2004). So ... in 2020 learn shaders XD
  20. Many ways, here's one ... Draw a single big white circle (2048x2048) into a RenderTexture (or use a Bitmap asset if preferred). Then use that Texture for each new Circle (as a Sprite) ... x 50,000. Add them to a Container, then Position, Scale, and Tint the 50k Sprites accordingly. Cache the container to save redrawing it every update (e.g. cacheAsBitmap). On my quick test I was able to draw 50,000 Circles between 0...1024 pixels radius, randomly tinted and positioned in approx 120ms (on Desktop). Once cached fps returned to 60fps. Other methods may be faster again, but this approach is likely "fast enough", while being easy to implement, understand, and extend?
  21. Is it worth it? Probably not XD. But if you're happy to collect a few dollars a day from a simple game then Web will be a more probable proposition than App Store. When I said "resurgence" I meant a relative increase in trust of web applications (rather than needing to install or use through a proprietary layer). You may or may not have had direct experience in web applications prior to 2008 for comparison?
  22. Yes, it's beautiful, smart, effortless digital design ... it looks so cool because the designer has an eye for awesome and a talent for visual story-telling. You might do better coming at it from the other direction? For example first describe what you see on screen (e.g. cloud textures, scaled by distance, rotated and offset by sine wave, alpha by distance, masked with meta balls revealing nebulae textures underneath, using similar scaling technique to clouds, combined with filter to add distortion effect to edge of mask) ... then go about building it upwards piece by piece, bringing more detail to each observation. Good news is you already know it's possible!
  23. Interesting ... is there any reported downside to this? For example, should we all just do this by default, regardless of whether we've personally encountered performance issues or not?
  24. That is certainly my experience - performance is often split into a fixed-component and a marginal-component that scales with complexity. Or, we should consider that an "idle" Pixi application isn't actually idle. I would also question whether there is something up with your rig to cause the minimum application to create an observable performance burden? But by running the complex test and making a comparison you may be able to separate these speculations?
  25. https://en.wikipedia.org/wiki/Consignment Why no logos or out links during Consignment? Are you being transparent to your clients about the source of the games offered? How would a license transfer work if not acting as a sub-licensor or connecting licensee directly with licensor? How do you ensure that the supplier of games has the rights to those games? Have you completed such deals before and, if so, how did these marketplace issues not arise? Thanks!