Popular Content

Showing content with the highest reputation since 04/29/20 in all areas

  1. 3 points

    Hangman - Pixijs and Effector

    Hi, I wanted to share a small game I made to try out Effector the state manager with Pixijs. hangman demo I wrote an article about it also Read more
  2. 2 points

    Cross origin problems with video

    I needed to add: const myLuckyVideoElTmp = document.createElement('video'); myLuckyVideoElTmp.preload = "auto"; myLuckyVideoElTmp.setAttribute('crossorigin', 'anonymous'); Now it works
  3. 2 points

    PIXI Sound mp3 loop 'pause'

    The mp3 looping problem is caused by the format. It can be mitigated by fiddling around the original sound source and compression: https://www.compuphase.com/mp3/mp3loops.htm I'd suggest using multiple formats and drop them based on browser support. Most of the audio libraries have alternateExtension -configuration (or something similar) to handle this. I usually go with ogg as first choice and then mp3 for those that dont support ogg.
  4. 2 points

    pixi-layers : PIXI is not defined

    @charlie_says thank you for your answer, even though it didn't work in my case, it putted me on the way to what @bubamara said, I had actually found the solution but a bad config in my webpack conf was compiling the code in the wrong location 🤦‍♂️ So yes: simply providing PIXI through the webpack config is the way, thanks everyone for your help.
  5. 2 points

    Pixi.js Showcase

    I built this website that was projected on to a transparent touchscreen for an exhibition at Museum of Science and Technology in Stockholm, Sweden. It might be hard to see in the video but visitors are challenged with a range of ethical questions about technical and medical development at three of these stations. I mainly used Pixi for all the great filters like Pixelate and CRT. It really worked out great! The whole project took 1 month from the first line of code till the premiere. Just when the exhibition launched, the museum closed due to covid-19. Fortunately it’s going to be around for 3-5 years hyperhuman.mp4
  6. 2 points

    Generate bitmap font

    If anyone faces the same issues, I have discovered the problem. In the fnt file: <font> <info face="testFont" size="72" bold="0" italic="0" charset="" unicode="" stretchH="100" smooth="1" aa="1" padding="0,0,0,0" spacing="0,0" outline="0"/> <common lineHeight="80" base="57" scaleW="361" scaleH="512" pages="1" packed="0"/> <pages> <page id="0" file="testFont.png"/> </pages> ... On line 2, face="testFont" must match the name from line 5 (file = "testFont.png") Apparently, this undefined size error is a facade for anything that might be wrong with the font file.
  7. 2 points
    Never mind, this can be handled by @expo/browser-polyfill
  8. 2 points
    You can also use an external 2d canvas for a bit more of drawing api. You could even use p5js to draw that, then use that canvas as a source for basetexture.
  9. 2 points

    Pop-Pop Kitties

    We just finished POP-POP KITTIES, a kawaii styled bubble-shooter. The game is made with HTML5 and runs in the browser on mobile or desktop. https://b10b.com/poppopkitties/ Gameplay: Play a cute puzzle as you pop-pop all the kitties using strategy and reflexes! With 100+ challenging puzzles and adorable kitties this kawaii Match-3 Puzzle Shooter game will charm players for hours. Can you collect all the stars? Technical: Based on our earlier game (POP-POP CANDIES) this version is also made with Haxe + awe6 + CreateJS and designed to run on any device at ~30fps. Many of the assets originated from royalty free sources and most level designs came from a level pack designed for Frozen Bubble, so big thanks to contributors there. The levels (and star ratings) were sorted based on completion time of sample plays - so they should feel progressively harder. Commercial: We made POP-POP KITTIES as a followup to POP-POP CANDIES because (despite its unoriginality!?!) it was well received, played in the millions, with average play sessions beyond 45 minutes - it's the kind of game that once you start it's hard to stop! This game is available to play or license from our website: https://b10b.com
  10. 1 point

    physics library

    I meant that problem usually to set up physics lib for your game , its not hard to connect pixi to it
  11. 1 point

    pixi-layers clarification

    Ok I think I understand the intention now, thanks Ivan!
  12. 1 point
    Sky Alpha

    [Phaser 3] Bouncy Woods

    It's a very nice game, I already can see millions of people playing it.
  13. 1 point
    I'm currently looking for a way to represent a large number of points, following the example of 'particles' and 'particles-patched' ... these work very well for me, they allow me to zoom in and see the points very well. Example particles example particles-patched By changing the code a little to get the same result as in the example but with the most real coordinates and quantities, the rendering fails me and I get the following: When I zoom, the points disappear. Generate a very different shape than the texture I'm sending you (the same texture I use for the first image) with this function I generate the texture for both cases: generateCircleTexture(radius) { const gfx = new PIXI.Graphics(); const tileSize = radius * 3; const texture = PIXI.RenderTexture.create(tileSize, tileSize); gfx.beginFill(0x000000); // color base gfx.drawCircle(tileSize / 2, tileSize / 2, radius); gfx.endFill(); this.rendererPixi.render(gfx, texture); return texture; } this code create of containers this.pixiContainer = new PIXI.Container(); const innerContainer = new PIXI.ParticleContainer(400000, {vertices: true}); this.pixiContainer.addChild(innerContainer); This is the route I do in the firstDraw for the example markers.forEach(function(marker) { const projectedCenter = project([marker.latitude, marker.longitude]); const circleSprite = new PIXI.Sprite(that.texturePixi); circleSprite.x = projectedCenter.x; circleSprite.y = projectedCenter.y; circleSprite.center = projectedCenter; circleSprite.anchor.set(0.5); circleSprite.scale.set(invScale); innerContainer.addChild(circleSprite); cirlceSprites.push(circleSprite); }); And this is the route that I already do with what I need _.forEach(points.features, function (feature, position) { if (feature.geometry !== null) { _.forEach(feature.geometry.coordinates, function (point, posCoordinate) { const projectedCenter = project([point[1], point[0]]); const circleSprite = new PIXI.Sprite(that.texturePixi); circleSprite.x = projectedCenter.x; circleSprite.y = projectedCenter.y; circleSprite.center = projectedCenter; circleSprite.anchor.set(0.5); circleSprite.scale.set(invScale); innerContainer.addChild(circleSprite); cirlceSprites.push(circleSprite); }); } }); Do you have any idea what may be happening?
  14. 1 point

    Exploding Shapes

    Hello! I created a new game Exploding Shapes - be fast and push out different shapes out the view before they explode! Game available at kongregate.com: Play Exploding Shapes Enjoy!
  15. 1 point

    Hangman - Pixijs and Effector

    Hey there, It is for beginners that's right. I just checked the first article and I linked to the source right there. Here's the exact sentence. Don’t worry though, here is the public Github repository, so that you can clone it and run it locally to play around with, or use as a starter for your own projects.
  16. 1 point

    Splash Screen Removal?

    Look at the Loader class. There is lots of attributes, that you can modify to change the loader appearance: http://panda2.io/docs/api/Loader Also there is tutorial on how to create custom loader: http://panda2.io/tutorials/loader
  17. 1 point
    did you take a look in some sample projet on codeSandbox? Just in case, sometime people forget search here before. https://codesandbox.io/s/app-architecture-3-t6cfv https://codesandbox.io/s/92qj013rvr?file=/src/index.js https://codesandbox.io/s/km262qnqr7 https://codesandbox.io/s/youthful-hertz-jzl912w7k9
  18. 1 point

    Setter/getter usage in PIXI

    small stuff: 1. no need to extend Graphics, simple Container is enough in your case 2. PIXI.Sprite.from is not a constructor, you can omit "new". big stuff: your setters and getter are recursions. use `myRadius` inside, and in setter you have to check - if it was changed - "myButton.clear()" and make drawRoundedRect in it again.
  19. 1 point

    Way to build image pixel by pixel?

    const canvas = document.createElement("canvas"); //draw what you want to canvas.. //Build the basetexture, texture and sprite using the canvas const canvasTexture = new PIXI.Texture( new PIXI.BaseTexture(canvas)); const sprite = new PIXI.Sprite(canvasTexture); //Add the sprite where you want. If the canvas changes, you need to call update to basetexture. (Or it might detect it automatically, cant remember right now). And if you want to make it a bit faster you could use offScreenCanvas -element instead of canvas. Though that is not yet widely supported. https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas
  20. 1 point
    https://pixijs.io/examples/#/textures/texture-rotate.js 0,2,4,6 rotations 8,10,12,14 flip-y then rotate you flips are below 8, that isn't correc on its own, vertical is 8, diagonal is 10, horizontal is 12. just make three IF's for flags and set rotation to one of those . There shouldn't be two flags active at the same time, right?
  21. 1 point
    @ivan.popelyshev This is my code for rotation, it might not be the best way to do it but it works. /** * rotate single tile * @param data - Tile Data Id ((Taken from JSON) */ private checkTileRotation(data:number):number { let rotation = 0; if (data & Env.FLIPPED_DIAGONALLY_FLAG) rotation += 4; if (data & Env.FLIPPED_VERTICALLY_FLAG && data & Env.FLIPPED_HORIZONTALLY_FLAG) rotation += 4; else { if (data & Env.FLIPPED_VERTICALLY_FLAG) rotation -= 2; if (data & Env.FLIPPED_HORIZONTALLY_FLAG) rotation += 2; } return rotation; } // In LOOP (drawing) // now remove last 3 bits data &= ~(Env.FLIPPED_HORIZONTALLY_FLAG | Env.FLIPPED_VERTICALLY_FLAG | Env.FLIPPED_DIAGONALLY_FLAG); export enum Environments { // Flags for map -> Tiles (Rotation) FLIPPED_HORIZONTALLY_FLAG = 0x80000000, FLIPPED_VERTICALLY_FLAG = 0x40000000, FLIPPED_DIAGONALLY_FLAG = 0x20000000,
  22. 1 point

    Why is this not allowed?

    Good. This technique is used not only in canvas rendering, it will help you in other places too - two big copies flip-flopping data.
  23. 1 point
    @ivan.popelyshev Well, I found plugin Tiled for pixijs, when i already did it by myself 😄 I also checked viewport plugin but id like to build my own, actually for my game i do not need anything complex. Viewport in 2D is just about pivoting and positioning of the main scene which is actually view. For 3D projection or 2.5d it is much harder. It is not very hard to make own viewport for 2d projection with full support. But there is lot of super cool plugins that i will definitely use like Pixi-Tilemap which is superfast and cool. I'm using it with tiled editor
  24. 1 point
    That was it - I'm rendering this from a single BaseTexture, which is required by the ParticleContainer. The sprites that tend to have seams are those with textures that border differently-colored textures. I think the textures are being anti-aliased somehow and some of the border pixels from neighboring textures are bleeding in. I've started framing the textures with a 1-pixel padding; other suggestions welcome.
  25. 1 point
    export class Camera { public static cameras:Camera[] = []; private _cameraFocus:any; public static activeCamera:Camera; private id:number = 0; private _pos:any = { x: 0, y: 0 } public zoom:number = 1; public canZoom:boolean = true; public zoomSpeed:number = 0; /** * Create a new camera for game * @param id - ID of Camera (Unique ID) * @param x - Position of camera * @param y - Position of Camera * @param scale - Scale of FOV (Zoom) * @param active - If camera is Active * @param follow - If camera should follow spirite/Obj */ constructor(id:number, x:number, y:number, scale:number, active?:boolean, follow?:any) { this.id = id; if (active) Camera.setActiveCamera(this); this.setZoom(scale, true); this.setPosition(x,y); if (follow) this.setFocus(follow); Camera.cameras[this.id] = this; return this; } /** * * @param camera - Camera Object (Optional) * @param id - ID param */ public static setActiveCamera(camera?:Camera, id?:number):any { if (camera) Camera.activeCamera = camera; if (id) Camera.activeCamera = Camera.cameras[id]; if (!Camera.activeCamera) { console.warn("Warining: Camera.setActiveCamrea - Cannot find active camera..."); return; } // Set View for camera Camera.updateZoom(); Camera.updateView(); return Camera.activeCamera; } public static updateView() { // change view only for active camera if (Camera.activeCamera) Game.scene.pivot.set(Camera.activeCamera.position.x, Camera.activeCamera.position.y); } /**** Camera */ /** * SetCameraView (Position X/Y) * @param x - X coords / global * @param y - Y coords / global */ public setPosition(x:number, y:number):void { this.position = {x: x, y: y}; if (Camera.activeCamera && this.id == Camera.activeCamera.id) Camera.updateView(); } /** Set position of camera * @param val -> Object with properities (x, y) */ public set position(val:any) { this._pos.x = val.x; this._pos.y = val.y; } /** * Get method for position */ public get position():any { return this._pos; } /** setFocus (focusing spirite/object) * @param obj - Object which are focused in camera FOV */ public setFocus(obj:any):void { this._cameraFocus = obj.position; } /** Remove focus */ public clearFocus():void { this._cameraFocus = null; this.setPosition(this.position.x, this.position.y); } /** * Update zoom of camera (FOV) * @param value - Value (Scale value) * @param update - force update screen */ public setZoom(value:number, update?:boolean):void { this.zoom = value; if (update) Camera.updateZoom(); } /** * call to Game.resize to correct values */ public static updateZoom():void { if (Camera.activeCamera) Game.resize() else throw new Error("ERROR: Can't update zoom because active camera does not exists!"); } public static update(delta:number, deltaTime:number):void { if (Camera.activeCamera._cameraFocus && Camera.activeCamera) { // Update camera position //this.activeCamera.position = {x: this.scene.pivot.x, y: this.scene.pivot.y}; } // Smooth zoom test if (Camera.activeCamera.zoomSpeed != 0) { let zoomSpeed = Camera.activeCamera.zoomSpeed > 1 ? 1 : Camera.activeCamera.zoomSpeed; Camera.activeCamera.zoomSpeed += zoomSpeed > 0 ? -(zoomSpeed * 0.15) : Math.abs(zoomSpeed* 0.15); if (Math.abs(Camera.activeCamera.zoomSpeed) < 0.2) Camera.activeCamera.zoomSpeed = 0; if (Camera.activeCamera.zoomSpeed > 0) { if (Camera.activeCamera.zoom < 2.5) Camera.activeCamera.setZoom(Camera.activeCamera.zoom + Math.abs(Camera.activeCamera.zoom * 0.01 * zoomSpeed), true); } else if (Camera.activeCamera.zoom > 1) Camera.activeCamera.setZoom(Camera.activeCamera.zoom - Math.abs(Camera.activeCamera.zoom * 0.01 * zoomSpeed), true); } } } This is my whole Camera class im using (it is only very basis) ill expand it later, maybe someone will use it. Thanks for the answer. Have a nice day. PS> Should be re-named to Viewport (camera does not exists in 2d i know :-D)
  26. 1 point
    updateCurvePrint(cable, offset) { const curvePrint = [ 0, 0, 0, -90, 0 + offset, -200, // example offset 0, -320, 0, -400 // texture width 400, height 27 ], curve = new Bezier(curvePrint), this.curvePoints = curve.getLUT(30); } createCable() { this.rope = new PIXI.SimpleRope(this.cableTexture, this.curvePoints); } Okay, thanks. But I think this task is very often, so maybe my solution will be helpful for other peoples. I used bezier-js https://pomax.github.io/bezierjs/ to create curves. When curve created, we can get each point of curve and apply to rope. First and last point in curvePrint should be fitted to texture sizes. After that we just create Rope once and call updateCurvePrint each frame, if we want update curve. The rope working with it well enough
  27. 1 point

    Colorize complex shape

    Thank you for your reply, Ivan! It is very useful.
  28. 1 point
    Thanks a lot for clearing this up for me!
  29. 1 point


    It is really fun game, good job! The screen feels a bit overwhelming with all the animations running all the time though .
  30. 1 point
    If I understood correctly you want to animate habbo to coord1 in a loop and then continue the loop after animation is done? That is not possible with await as tween does not return a promise. You would have to have your tween in a separate function and have it return a promise and then have it resolve the promise in completion. That would make your code pretty complex for no good reason. I assume that you want to animate the habbo-character from coord1 to coordN right? You could do that with tweenjs chaining: const moveChar = (char,points) =>{ const tween = Tween.get(char); let coord = null; for( let i = 0; i < points.length; i++) { coord = points[i]; tween.to( {x:coord.x, y: coord.y}, 500) tween.wait( 50 ); //Wait 50 milliseconds before moving to next to make the movement nicer? } //Add callback to chain ending. tween.call( () => { console.log("FINISH: " + coord); }); } moveChar( this.habbo, [ {x:0, y:0}, {x:100, y:0}, {x:100, y:100}, {x:200, y:100} ]); If I misunderstood the problem please describe it a bit more. As usually having synchronous code requirement inside a for loop is an issue that should not happen when doing rendering related stuff.
  31. 1 point
    Hello, I'm trying to load sprite sheets to build a tiling map in Pixi. I have my spritesheets defined in a custom data structure like so: { "image": "../aside/tileset_1bit.png", "spacing": 0, "tile_height": 16, "tile_width": 16 } Now, I add the json file to the loader, and hit loader.load(), calling an onComplete function: let loader = new PIXI.Loader(); let path = './data/spritesheets/dev_tileset.json'; loader.add(path); loader.onComplete.add((loader) => loadSpriteTextures(loader)); loader.load(); function loadSpriteTextures(loader) { for (let key in loader.resources) { if (loader.resources[key].extension == 'json') { let data = loader.resources[key].data; let { image, spacing, tile_height, tile_width, } = data; let sheet = new Spritesheet(image, spacing, tile_height, tile_width); spriteSheets.push(sheet); loader.add(sheet.image); } } } Except, when I call loader.add(sheet.image), I get an error: "resource-loader.esm.js:1992 Uncaught Error: Resource named "../aside/tileset_1bit.png" already exists." I know for a fact that the image "../aside/tileset_1bit.png" does *not* exist in the loader. If I don't call the add() and try looking, it's not there (as expected). I need the second load() step to actually load the images into the loader, which I'd later reference from my Spritesheet object, but this error is baffling me. Any ideas what cause this? Is it a bug?
  32. 1 point
    Oh, that! That's one of basic exercises with transforms, solves with javascript functions "Math.min" and "Math.max", or pair of IF's. sprite.position.set(app.screen.width/2, app.screen.height/2 ); //same as your innerWidth sprite.anchor.set(0.5); sprite.scale.set(Math.min(app.screen.width / sprite.texture.width, app.screen.height / sprite.texture.height); PixiJS does not have its own alignment/reflow system. Dfiferent people write it different way => we supply only basic transforms.
  33. 1 point
    After looking through the docs I realized there's a function that solves my problem. I called: game.physics.arcade.moveToObject(bubbleBullet, bubbles.getAt(0), 800); this grabs the first spawned bubble (therefore closest to the cannon) and has the bullet move towards it.
  34. 1 point
    Thanks again! Appreciate your work!
  35. 1 point


    You should probably put one of your bundles in production (that's the version that will be surfaced when accessing your game). Otherwise, your game is not accessible. You could also set it as "Stage for testing". Please read this part of the documentation: https://developers.facebook.com/docs/games/instant-games/test-publish-share#testing More general request: don't post in another language than English, and give a better title than "test". Something like "How to have testers on my instant game?".
  36. 1 point
    Did the trick! Thanks again!
  37. 1 point
    That is the problem out of scope of pixijs. https://github.com/bramstein/fontfaceobserver/ Just dont render text before all fonts are loaded. By render i mean 1. render is called from app ticker 2. your text is somehwere in app.stage subtree. You can set "text.renderable=false" before its actually ready, or call text.updateText() when everything is ready... If you use any hacks - prepare to read pixijs Text code
  38. 1 point
    use pixi-legacy (npm pixi.js-legacy, vanilla pixi-legacy.js file) , it has generateCanvasTexture() - that will be AA-ed in canvas2d
  39. 1 point

    Input in PIXI

    OK I know it's a renderer. Not complaining at all I just wanted to figure out how to go further in pixi.js. Thank you for the information I've googled but didn't really get what accessability module is in vanilla pixi (I mean whatever I found doesn't really seem to be what I was looking for). I've found this https://github.com/brean/PIXI.DOM.Sprite plugin. Not sure yet if it's compatible with the current version of Pixi. Thanks for your time. I'd be very grateful if you go into details a little bit more 'cause I kinda feel lost. Finding some examples would be awesome too!
  40. 1 point

    Kaiju Krashers - Puzzle Strategy Game

    I make a Kaiju Strategy game called Kaiju Krashers. Please let me know what you think of it, I'm open to all criticisms. I'll be complete soon and available for licensing.Controls-Arrows- MoveZ- Move BackX- Atomic BlastR- Restarthttps://retrobolt.github.io/KaijuKrashers-V1.0/
  41. 1 point
    Hi, i want to be a html5 game publisher for my new app. I've contact with some of developers (famobi, gamepix etc) and most of them wrote me for payment i have to send them invoice. Does anyone know how will i send invoice? what i need for it? thanks
  42. 1 point
    Find https://www.amazon.com/JavaScript-Definitive-Guide-Activate-Guides/dp/0596805527, there are many pirated versions in internets. Learning Pixi+JS at the same time is hard, because PixiJS team focused on clear internal code, not on clear advancement for people without pre-knowledge. To read that code you need some experience with JS, and to advance faster you have to use chrome devtools like professional who already debugged a few projects and has experience with finding strange JS-related bugs. If you need inputs or physics, or something else that pixi doesnt have from default package - i suggest to move to Phaser. You can always move back to pixi when you have more experience and know which things you need
  43. 1 point
    EDIT: Checked my account and they actually paid me the November earnings in January. So they are still paying actually. At least to some of us... I think they will pay the publishers as they are more dependent on them. If you are a developer, you are probably out of luck.
  44. 1 point
    I can't talk about Unity because I don't know it, but AFAIK it currently doesn't generates pure HTML5 code. One needs a plugin to run it on browsers. @Roth You'd better off picking a javascript framework. In this case i highly recommend Phaser.js .js. It is the best 2D framework hands down. If you intend to generate games for MS Windows, MacOS, Linux, Android and iOS, there are tools that allow you generate binaries for these platform from your javascript code. Other frameworks I'd recommend that generates HTML5/javascript framework are cocos2d-x (I'm talking specifically about its tool named Cocos Creator). For the above mentioned frameworks its required you understand how to program in javascript. If you don't know / don't want to learn it, you have other options. Gideros mobile: - its programming language is Lua. Lua is a very easy programming language. It resembles python (but it is easier). Also, lua is the fasted script language. Under the hood Gideros engine is written in C++. You write your game once in Lua and export it to MS Windows, MacOS, Linux, Android, iPhone and to WEB. For WEB, the code generated is WASM instead of JavaScript. It has the advantage of make it harder to retrieve your source code than those written in plain JavaScript. Also Gideros allow minification, compression and encryption of both assets and source code. Its an extra layer of protection that will make reverse engendering harder. I'm learning it since November 2019 and I'm loving it. I highly recommend it. Cocos2d-x also allow you to develop in C++ and Lua. You can export code to Android, iPhone and to WEB (the code generated in this case is in javascript). I'm not sure if it exports to consoles (but I think so). Openfl is a wonderful framework. You will code using Haxe programming language. Think of Haxe as ActionScript 3 on steroids. Openfl exports to MS Windows, MacOS, Linux, Android, iPhone, WEB and consoles. There are a lot of frameworks I didn't talked about. You can search for them on Google. I highly recommend Gideros for those that don't want to code in JavaScript and Phaser for those that want to use it. But in the end, you should study a bit of each framework that you think is nice, make some projects with it and then make an educated decision on which to use. Now that I talked a bit about which tools to use, let's talk about some options on how to make money with game development. 1. Develop games as a freelancer. You can sign-up yourself in sites like upwork, and freelancer and take jobs to make custom games as well as convert games made in Flash to HTML5. Drawbacks: 1.1 you must have a good experience making games in order to delivery what was requested. Otherwise you won't be paid. 1.2 you won't have any rights of games delivered. 1.3 Once a game is delivered you have to look for the next job. 2. You can sell exclusive licenses of your own games. You decide which game you want to do (based on your experience, on your personal taste, on what you think market is demanding, or even by asking directly to probably clients). You have to get in touch with sites like Y8 and deal with them directly. Drawbacks: 2.1 you may develop a game market is not interested in. 2.2 you have invest your time developing a game that may not be sold. 2.3 you have to invest your money buying assets (images, sounds...) 2.4 you have to digg for contacts of clients and sometimes its harder to get them. Sometimes they don't deal with an independent developer. They acquire their games directly from a partner. 2.5 it's a time consuming task to deal with many possible clients. 2.6 the process, from contacting a prospect until get contracts signed and receive the money may take months. 2.7 Your game must be well made, attractive and have a great playability in order to attract attention of your prospectors. The more amateur the game looks, the less it will be worth. Even with all this drawbacks, it's one of the best way to make money. 3. You can sell non-exclusive licenses of your own game. It's very similar to selling exclusive licenses. The differences are that in exclusive licenses the value paid by client is higher but you can sell the game just once and that in non-exclusive licenses, value paid is lower but you can the game many times. Usually you would earn more selling non-exclusive licenses. A very important think you must bear in mind if you want make a living selling non-exclusive licenses: NEVER, EVER sell non-exclusive licenses to game distribution services like famobi, game distribution, gamonetize, and others like them. They will distribute your game to all portals that use their services to get games and you will never be able to sell another non-exclusive licenses of that game. No one will pay for something they can have for free. You were warned! 3 - Monetize your games with ads. It basically works this way: you submit your game to a game distribution service like famobi, gamonetize and game distribution after adding their Ad SDKs. Read what I wrote here: I'm sure that there are other ways to monetize, but those are the ones on the top of my head.
  45. 1 point
    If you are asking this question then you are probably planning to make a game first, then hope to find an audience / monetisation second. If so use whatever tool you like - it really won't make much difference to the financial outcome but will make a huge difference to your enjoyment and productivity in the meanwhile. Be mindful that Unity is proprietary, it is offered as a service, there is no entitlement to it. Therefore Godot might be worth a direct comparison for similar tooling.
  46. 1 point

    Xbox One HTML5 Game Dev

    I've been having some fun playing around with Xbox One HTML5 game development the last few days. Is anyone else doing this? I thought I'd share what I've experienced so far. * Setting up my retail xbox as a dev kit was not too bad. Following the online docs rather than the on-xbox prompts worked better. I already had a windows developer account. * I've signed up for the Xbox Creators Program, but that hasn't mattered so far - I think it'll only matter if (A) I want to access more xbox-specific APIs, and (B) if I want to release a game in the Xbox store. * Making a universal windows app out of an existing HTML5 project was OK - The way I like to arrange things means I have to wrestle with VS2017 a bit to keep it from thinking it is in charge of my project from now on, but actually getting the game running is straightforward. I found this to be true with Win8/Win10 html5 development as well. * With Windows app development these days, HTML5 and Javascript are first-class citizens. I can do anything I've needed to do, including all the regular HTML5 stuff I'm used to (fancy canvas stuff, gamepadAPI, etc.) as well as system-specific things like user account info. * After setting up the project, the process of launching on Xbox One was a little fiddly and flaky, but it's working well now. My game runs, displays everything correctly... * The development setup is actually pretty slick. You can point a browser at your newly enabled dev kit and get performance charts, memory usage, screen captures, etc. (It's a little inconsistent and not always functional, but when it works, it's neat). * I followed some documented instructions for turning off (in code) overscan and scaling, which was not as easy as expected (some API object names have different upper/lower case than documented), and I can run at 1920x1080. * I'm running at 60fps normally, though I found some cpu-intensive calculations slowed the system down to 10fps at one point. Everything looks smooth, though I'm suspicious of a tiny little hitch in one evaluation I did that seemed like it might be a regular garbage collection issue I used to see in some other Xbox-related work I did a while back. * I'm doing all this work in a custom engine of mine, and most of my engine is working great on the Xbox, including a ton of custom canvas stuff, audio, gamepadAPI, some server interaction with POST calls, and pretty much everything I expected to work. It's very much like an Edge-hosted web page, with some extra APIs. I'd love to compare notes with anyone else doing this! Lots more info on various pages connected to this page: https://docs.microsoft.com/en-us/windows/uwp/xbox-apps/getting-started
  47. 1 point
    @KoolieTheKangaroo just use dark tint. https://github.com/gameofbombs/pixi-heaven
  48. 1 point

    Collider in group does not work

    Don't add the collider inside the socket function, or it will create a brand new collider ever time that function is called, which I'm pretty sure is not what you wanted. Instead, try and get it working without using a Socket connection at all - do the bombs work locally? If so, I think it's likely just a scope issue.
  49. 1 point

    How to know the current fps in phaser 3?

    Appears to be in game.loop.actualFps.
  50. 1 point

    Gradient shader

    Hi everyone ! I have a small gift for you Here is a small gradient shader : http://www.babylonjs.com/cyos/#LFNPG And here is the application of this gradient shader on a skybox : http://www.babylonjs.com/playground/#1G2LLJ Update the colors as you wish. It may be useful for some of you. Cheers !