Search the Community

Showing results for tags 'isometric'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • HTML5 Game Coding
    • News
    • Game Showcase
    • Facebook Instant Games
    • Coding and Game Design
  • Frameworks
    • Phaser 3
    • Phaser 2
    • Pixi.js
    • Babylon.js
    • Panda 2
    • melonJS
    • Haxe JS
    • Kiwi.js
  • General
    • General Talk
  • Business
    • Collaborations (un-paid)
    • Jobs (Hiring and Freelance)
    • Services Offered

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Twitter


Skype


Location


Interests

Found 93 results

  1. Arkona (working title) is an isometric retro rpg in a style you may remember if you played pc games in the 90s. :-) I'm looking for people who are just into this stuff. The game is in a relatively early stage and is meant as a hobby project only. I could use help with: - music/sound fx (there are none so far) - 3d artist: is toon-shaded creature animation your thing? - pixel artist: see screenshot below for reference - coder: phaser+es6+webpack, there is a lot to do (combat, inventory, pathfinding, etc.) - other: want to write conversations, design levels, etc? Get the source here: https://github.com/uzudil/arkona Thanks for considering! --U
  2. Hi! I search some tutorials about how to create an isometric game. Do you know some place where i can learn about the base concepts of isometric games and maybe a little Maths? Thank you
  3. I am having issues working with the isometric plugin without using world bounds. As an example, gravity will cause my sprite to continue to move when providing a velocity on z for jumping because it never hits the ground. I think I have a partial solution to this by checking if z is < 0 then set it to 0. This seems to work, but I now think that collision is not working right, or the sorting depth is not working. If my player character jumps, he will be in front of all other objects. Has anyone worked with the isometric plugin without using world bounds? If so, do you have any tips? Thanks.
  4. I've spent the last week or so putting together a fairly comprehensive plug-in for Phaser in the form of an isometric (axonometric and dimetric to be precise) renderer for Phaser. Not wanting to stop there, I decided to go the whole hog and port over Phaser.Physics.Arcade to the new renderer by adding in an extra dimension. You can get the plug-in here: http://rotates.org/phaser/iso/ - the page also contains a working example so feel free to view the source to get a feel for how it works. I'll be creating several more examples in the coming days and weeks, as well as improving the plug-in, fixing bugs and so on. As of yet, I am undecided as to whether to embark on trying to create an isometric equivalent to TileMap (with Tiled importer) but if there's enough interest I may see what I can do. Enjoy, and I'm looking forward to seeing what you do with it!
  5. Hello. I am searching for a good html5 isometric game engine. It can't be restricted to AABB collision. Need more complex collisions. What would you recommend? I found this MelonJs example that didn't seem bad. (not sure if it meets the requirements though). So Melon.js? I know phaser has an isometric plugin but I think the collisions are rather simple since it is based on arcade physics which are only AABB, @Milton? http://jsiso.com/? https://www.isogenicengine.com/ ? seems quite simple... idk http://jdan.github.io/isomer/ same I have a dought also. Those games like Diablo, are they grid-fixed?
  6. Hi, I'm starting with Phaser + Isometric plugin and is pretty cool. I think it has what I need for now, but now I'm stuck with some tests... I'm trying to detect when a srpite is hidden by another sprite in the isometric map. Something similar to? https://phaser.io/examples/v2/sprites/overlap-without-physics I tried with intersects without results, I think this is because colliding avoid intersections. I tried also with overlap, but I have results only when collides, and I want to know it without colliding. Scene A: Blue cube is not colliding but has a hidden part because of isometric ordering. That is what I need to detect. Scene B: Blue cube is not hidden on any part, so I don't mind... Any ideas? Thank you all in advance!
  7. DEMO: http://silashatfield.com/game/ I've been grinding away with all of my free time getting dragon bones to work in phaser and creating an isometric concept. It's been a HUGE learning curve for me but I wanted to share what I have so far. Also, big thanks for http://rotates.org/phaser/iso/
  8. Hello, I am running into an issue where I have an empty sprite and add lots of children items to it. When I debug this item, my frame box to show my sprite is very tiny. If I use body.setSize I can make the empty sprite get bigger, but I haven't been able to figure out how to do this programmatically because whenever I try to use width it gives me the scale size .3. If the empty sprite has no size the depth sorting does not work so it makes my sprite always behind everything, like the ground. If I try to use other functions like LocalBounds I get the x, y, .3, .3. I want to get the actual pixel size of what the sprite and its children make up even if the parent sprite is an empty sprite. Is this possible? I am also using the isometric plugin if that helps. Here is probably the most relevant code to get the idea. this.model is an isometric sprite. (<any>this.game.physics).isoArcade.enable(this.model); this.model.body.collideWorldBounds = true; this.model.body.x = this.game.world.width * 0.5; this.model.body.y = this.game.world.height * 0.5; this.model.anchor.set(0.5); this.model.scale.set(0.3, 0.3); this.model.body.setSize(150, 150, 300, 0); //i want to set the size to be the entire size of the empty sprite + it's children this.model.width is scale size .3, but it looks like setSize requires pixels? this.game.debug.body(this.model, 'rgba(189, 221, 235, 0.6)', false);
  9. down vote favorite I am working with Phaser and its isometric plugin. I have a sprite with this physical body ( as shown in blue). As you can see the physics body doesn't match the actually visible body. I think I would need to rotate the body in order to properly match the visible body. Because the sprite is an iso sprite but its position is not "isometric". I have no idea on how to do that and if there is another solution. Can someone help me?
  10. Hello. I have created a function that instances a sprite giving attributes such as phyisics and size , etc. In the end of the function I kill the sprite. I put a keyboard input that when clicked resets that sprite to the given coordinates. I am using the isometric plugin. However the reset happens the sprite image doesn't appear. I see the body if I debug it. However no collision is happening as well. I only see the cube. If I spawned it normally the image sprite image would appear and I could collide with it. Any idea my sprite has no image and seems to don't collide with anything? Probably it is something related to phaser in general and not with the iso plugin
  11. Hello. I created a empty iso sprite in order to make an hitbox. However I am not being able to set its body to collide with world elements. This is my code: hitboxes = game.add.group(); hitbox1 = game.add.isoSprite(0,0,0,null,0,hitboxes); game.physics.isoArcade.enable(hitbox1); hitbox1.body.collideWorldBounds = true; hitbox1.body.setSize(300,300,100,0,0,0); dude.addChild(hitbox1); I see the hitbox but it doesn't collide with anything. Why is that?
  12. Hello. I have been messing around with phaser again for the last couple of hours and I am trying to make a normal sprite collide with a isoSprite. I don't know if that is actually possible and if that should be even done since depth is missing for the normal sprite ... I think there was a problem with adding hitboxes in isometric because there was a "bug" when you add a isometric sprite to another sprite as a child ( the hitbox position doesn't get fixed to the parent). (I had discussed this already in here: http://www.html5gamedevs.com/topic/25092-phaser-create-hitboxes-in-isometric/). Well I am not sure if the problem was fixed or not. I tried fixing it myself but my knowledge is still very limited... Basically I am trying to do this hitbox strategy: http://www.html5gamedevs.com/topic/14840-separate-hitboxes-for-attack-animations/ in isometric. Probably having and isoSprite colliding with a normal sprite isn't a viable option at all so I believe the only solution is adapting the hitbox to isometric. I am also quite curious on how this game was made http://test.playwildterra.com/. It was made with phaser and I belive it was isometric... They must have found a solution. Well I am also trying babylon and it is also very cool. However I would like to get this problem solved just to try some things with phaser on a next level.
  13. Hello, dear Forum. Recently, I was toying with an idea for an intricate real time strategy game for use on maps provided Google Maps, particularly when utilising their road, building and traffic information: A police tactics simulator, much in the style of both the Police Quest and Emergency series, and further inspired by things like the Class 3 Outbreak Simulator, Prison Architect and Sim City. Much like in an Emergency game, you get to choose a building HQ on a designated coordinates of (preferably urban) terrain, from which you can patrol the streets on foot, car and air, respond to call-outs, execute warrants, organise raids and searches, handle hostage takings and public threats, surround buildings, cordon off areas, evacuate areas, participate in chases (both on roads and through pedestrian zones), set up road blocks, divert traffic, set up checkpoints, surveill and/or protect sensible locations, implement security zones, organise convoys and secure transports, police the traffic, police demonstrations, control large crowds, commence manhunts and rescue search operations, and even do some serious investigative detective work. All of it randomly spawned, all of it playable anywhere in the word on real life locations. The possibilities are - quite - endless in gameplay regards. The game would be designed to be either birds-eye view or (better yet) isometric; it would be 2- (or 2.5-) dimensional, with units, characters and effects consisting of 2d-sprites (themselves probably flash-based). There would be both a wide array of emergency units and civilian units randomly moving around the map on the roads and paths. Personally, I'd be really excited if such a complete game ever came out. There is one vital problem, however - I have little to no game development or coding experience. I don't know how to implement games like those on Google Maps (again, think of Class 3 Outbreak), nor do I know what game engines I could utilise to lay a basis for this kind of game. That's why I've decided to ask here: Can this sort of gaming concept popular? Could it take off? In how far would this be a sensible choice? And what engines or programmes can be used to make such a game a reality? How did other games implement Google Maps as a basis for their gameplay? Has this idea already crossed somebody's mind? Is anyone even remotely intrigued by this concept? Are there any games like this one out there already? Are there any in development? Thanks in advance for any tips, opinions and stimuli!
  14. Hello. I am trying to create isoSprites instead of normal sprites. I saw this on the phaser docs: Then I assume I can't add a Phaser.isoSprite using just game.create(). group_example = game.add.group(); group_example.classType = Phaser.isoSprite; group_example.create(3,3,"tree"); // in the console it shows an error in one phaser.js lines "var child = new this.classType(this.game, x, y, key, frame);" //"This object doesn't alllow this action" How can I do it then?
  15. Hello. I have included character movement in my phaser isometric game. This is the code that allows the character to move: // INSIDE CREATE // this.cursors = game.input.keyboard.createCursorKeys(); this.game.input.keyboard.addKeyCapture([ Phaser.Keyboard.LEFT, Phaser.Keyboard.RIGHT, Phaser.Keyboard.UP, Phaser.Keyboard.DOWN, ]); // INSIDE UPDATE // var speed = 100; if (this.cursors.up.isDown) { dude.body.velocity.y = -speed; dude.body.velocity.x = -speed; } else if (this.cursors.down.isDown) { dude.body.velocity.y = speed; dude.body.velocity.x = speed; } else { dude.body.velocity.y = 0; dude.body.velocity.x = 0; } if (this.cursors.left.isDown) { dude.body.velocity.x = -speed; dude.body.velocity.y = speed; } else if (this.cursors.right.isDown) { dude.body.velocity.x = speed; dude.body.velocity.y = -speed; } I can actually move my character, but two problems happen: The response time is not that good. I notice that when I click one of the arrow keys my character doesn't move exactly when I click it. Not like in this example: http://rotates.org/phaser/iso/examples/character.htm . Sometimes, when I just click one of the arrows and release it the character continues to move continously. I want my character not to be fixed to the isometric grid like in the example. That is why I have those extra commands in relation to the example I showed. Any help with this? Thank you
  16. Hello. I would like to know how a game such as street fighter or any kind of action fighting game could be made in phaser. I have lots of doughts related to this... How do you detect for collision between two characters? I mean collision between each other "actual body" and not the rect/square that composes the whole png? I am quite ignorant in realation to gaming development especially this... Can someone give my some ideas / tutorials on how to develop this kind of real time fighting games? Thank you.
  17. Greetings. I am using phaser isometric plugin. I generated a tilemap. I used this for loop for that ( similar to one the examples on the plugin examples): for (var xx = 0; xx < 500; xx += 38) { for (var yy = 0; yy < 500; yy += 38) { tile = game.add.isoSprite(xx, yy, 0, 'tile', 0, tiles_group); tile.anchor.set(0.5, 0); } } I would like to know how can I generate differente types of tiles having that tilemap as base: + something like this for the floor ( maybe even spawning randomly and replacing some the basic tiles); + to add walls and make buildings (basically tiles on top of over tiles); For adding different types of tiles that replace the grass ones and to add tiles on top of others, do I have to use the for loop method as the one above? If so how is that? Aren't there easier ways? Thank you
  18. Hey folks, wanted to share my upcoming Free HTML5 experimental game project GATHER you can now Follow On GameJolt! Discover the world, lead your minions, learn their language, and harvest sacrifice for the Gods. Free isometric adventure and exploration game set in an esoteric land. You control a Wraith sent to the idyllic land and must learn the rules of the world on your own. Powerless to affect the material realm, you must find arcane words to command and grow your minions, gather various items and discovering their use. The Krewski god demands sacrifice - but of what kind? And how will you appease them? Release Date: August 13
  19. The Game: AfterEffect Genre: Survival Horror RTS Graphics: 2d Isometric Style: Dark comic book style Storyline: This is a make your own adventure where as the game play varies depending on how you set it up. You could have zombies, or something else entirely in the game as well as manipulated difficulty. Early Concept of the story picker. Languages: HTML, CSS, Javascript, Possibly CoffeeScript Engine: Pixi.JS, Phaser.IO, Phaser Isometric Plugin. WebGL/CANVAS Start Date: December, 20th, 2014 The Team We are a small group of people who are working on a similar project. I am the main lead for the project as the idea is mainly mine but everyone even others not working on the project are welcomed to suggest ideas. I wont go into detail about the other members as they can talk about themselves once on the team but I can say that they are early in their stages of their area while I am more of a senior. I am of the 90/10 philosophy where as you take all of the ideas and put them down and then scrap about 90% of them to work on 10% that actually makes sense and will allow for a finished product. After you wrap that up then you can go back and add parts of the stuff left out. This allows to be able to actually finish a project faster and actually get it done. I am also a professional front end web developer by trade which is why I tend to make things for the web. Team Members Joel D. Programmer, Artist(I suck at), Sound FX(I suck at) Austin P. Sound Engineer Steven W. Programmer NEEDED 2d/3d Artist Screens Please excuse the the rather crummy graphics atm. I am by no means a graphics artist. Also note that there are more screens in the below comments Inventory screen with bag inventory and a battery stack The inventory screen now can open up inner inventories and now has stacking.
  20. Hello, I'm rendering isometric terrain (about +700000 sprites) in ParticleContainer(for speed) and i need hide some blocks(occulusion culling). But .visible for childs in ParticleContainer not work. Can you help me? Sorry for my bad english,
  21. Outside of camera dead zones when the sprite moves it seems to me that the sprite moves first then the camera catches up to it, Instead of both the sprite and the camera moving cohesively as one unit.. I am updating the players location by updates from server & I am using the Phaser Isometric plugin that requires use of Arcade Physics. I have been racking my brain on this for days so I finally decided to join this helpful community. Thank you in advanced! /// <reference path="phaser.d.ts"/> /// <reference path="socket.io-client.d.ts"/> var Arenaio = (function () { //Properties var socket = io(); var text; var coordString; //Player object var mPlayer = {}; //Arrays for players and sprites var players = []; var playerSprites = []; var hearts = []; socket.on('connected', function (data) { socket.emit('connected', data); console.log("UUID: " + data); }); //Get player initial location from server socket.on('init', function (p) { mPlayer.x = p.x; mPlayer.y = p.y; mPlayer.scale = p.scale; mPlayer.uuid = p.uuid; console.log("Should have received my player data"); console.log(mPlayer.x); console.log(mPlayer.y); }); //Get array of users from server on initialization socket.on('initServerPlayers' , function(v){ players = v; console.log('Players in the server: '); for (var i = 0 ; i < players.length ; i++) { console.log(players[i].uuid); } }); //This is going to be handled like sh** change this socket.on('heartUpdates' , function(inHearts) { for (var i = 0 ; i < inHearts.length ; i++) { var nHeart = game.add.isoSprite(inHearts[i].x , inHearts[i].y, 0 , 'heart'); hearts.push(nHeart); hearts[i].anchor.setTo(0.5); } }); socket.on('updateEvents' , function(updates) { //Change player values !!!!!!! change to only updates for (var i = 0 ; i < updates.length ; i++) { //Get players position from server and checks against player if (updates[i].uuid == mPlayer.uuid) { mPlayer.x = updates[i].x; mPlayer.y = updates[i].y; mPlayer.scale = updates[i].scale; } else { for (v = 0 ; v < players.length ; v++ ) { if (updates[i].uuid == players[v].uuid) { players[v].x = updates[i].x; players[v].y = updates[i].y; players[v].scale = updates[i].scale; } } } } updates = []; }); //when user connects add them to array socket.on('joinUser' , function(join) { players.push(join); var i = playerSprites.length; var newPlayer = game.add.isoSprite(join.x, join.y, 0 , 'char'); playerSprites.push(newPlayer); playerSprites[i].anchor.setTo(0.5); //game.physics.isoArcade.enable(playerSprites[i]); players[players.length - 1].spriteRef = i; console.log('Player Joined, UUID: ' + join.uuid); obstacleGroup.add(newPlayer); }); //Handle client disconnections socket.on('disconnect', function(socketId){ for (i = 0 ; i < players.length ; i++) { //Check socketId with array of socketIds if (players[i].uuid == socketId) { //Get ref to sprite and kill it from array playerSprites[players[i].spriteRef].body = null; playerSprites[players[i].spriteRef].destroy(); playerSprites.splice(players[i].spriteRef , 1); players.splice(i ,1); } } }); function Arenaio() { /* Deprecated var _this = this; */ game = new Phaser.Game(window.innerWidth, window.innerHeight, Phaser.AUTO, 'content', { preload: this.preload, create: this.create, update: this.update, render: this.render }); var bTile; } createLivePlayers = function() { if (players.length != 0) { for (i = 0 ; i < players.length ; i++) { var x; x = game.add.isoSprite(players[i].x, players[i].y, 0 ,'char'); playerSprites.push(x); playerSprites[i].anchor.setTo(0.5); game.physics.arcade.enable(playerSprites[i]); players[i].spriteRef = i; obstacleGroup.add(x); } } } Arenaio.prototype.preload = function () { this.game.advancedTiming = true; this.game.plugins.add(new Phaser.Plugin.Isometric(this.game)); this.game.iso.anchor.setTo(0.5 ); //background image because // this.game.load.image('logo', 'pic.jpg'); this.game.load.spritesheet('char', 'kaneki.png', 100, 100); this.game.load.image('tile', 'space.png'); this.game.load.image('heart' , 'heart.png'); this.game.load.start(); this.game.scale.fullScreenScaleMode = Phaser.ScaleManager.EXACT_FIT; this.game.scale.refresh(); this.game.scale.minWidth = 240; this.game.scale.minHeight = 170; this.game.scale.maxWidth = 7000; this.game.scale.maxHeight = 4000; this.game.time.desiredFps = 60; this.game.world.setBounds(0, 0, 10000, 4000); this.game.physics.startSystem(Phaser.Plugin.Isometric.ISOARCADE); }; Arenaio.prototype.create = function () { //console.log(mPlayer.x); //this.background = this.game.add.tileSprite(0, 0, this.game.world.width, this.game.world.height, 0 , 'tile'); this.game.stage.backgroundColor = "0xde6712"; this.game.physics.isoArcade.gravity.setTo(0 , 0 , 0); tileGroup = this.game.add.group(); obstacleGroup = this.game.add.group(); for (var xT = 4624; xT > 0; xT -=34 ) { for (var yT = 2890; yT > 0; yT-=34 ){ bTile = this.game.add.isoSprite(xT, yT, 1 , 'tile', tileGroup); bTile.anchor.set(0.5); } } this.charSprite = this.game.add.isoSprite(this.game.world.centerX, this.game.world.centerY, 0, 'char' ); this.charSprite.anchor.setTo(0.5); this.game.physics.isoArcade.enable(this.charSprite); this.charSprite.body.moves = false; this.charSprite.body.collideWorldBounds = true; this.game.camera.follow(this.charSprite, Phaser.Camera.FOLLOW_TOPDOWN_TIGHT); this.cursors = this.game.input.keyboard.createCursorKeys(); coordString = "( " + mPlayer.x + " , " + mPlayer.y + ")"; text = this.game.add.text(0, 0, coordString, { font: "65px Arial", fill: "#ff0044", align: "center" }); text.fixedToCamera=true; }; Arenaio.prototype.update = function () { this.game.input.update(); //to ensure that socket game has received initial players from server check if array is empty //if so give em life! if (playerSprites.length == 0 ) { createLivePlayers(); } //change this to tell server player is moving direction instead of handling on client if (this.cursors.down.isDown) { down(); } if (this.cursors.up.isDown) { up(); } if (this.cursors.left.isDown) { left(); } if (this.cursors.right.isDown) { right(); } if (playerSprites.length > 0) { //Possibly throttle data by only working with changes from previous states for (var p = 0 ; p < players.length ; p++) { /* Do i need to check for undefined? if (typeof playerSprites[p] != 'undefined'){ playerSprites[p].isoPosition.setTo(players[p].x , players[p].y, 0); } */ playerSprites[players[p].spriteRef].isoPosition.setTo(players[p].x, players[p].y, 0); } } //Text coordinates for player this.charSprite.body.moves = false; this.charSprite.isoPosition.setTo(mPlayer.x , mPlayer.y , 0); text.setText("( " + mPlayer.x + " , " + mPlayer.y + ")"); this.game.world.bringToTop(obstacleGroup); }; Arenaio.prototype.render = function () { /* obstacleGroup.forEach( function (each){ this.game.debug.body(each); console.log('ghe'); }); this.game.debug.body(this.charSprite); */ }; ////MOVEMENT FUNCTIONS SEND TO SERVER function left() { socket.emit('update' , 'moveLeft'); } function right() { socket.emit('update' , 'moveRight'); } function up() { socket.emit('update' , 'moveUp'); } function down() { socket.emit('update' , 'moveDown'); } var Player = (function () { function Player(x, y, uuid, scale, spritetype) { this.x = x; this.y = y; this.uuid = uuid; this.scale = scale; this.sprite = spritetype; } return Player; }()); /////////////////Helper Methods Arenaio.prototype.printUUID = function () { console.log(this.player.uuid); }; return Arenaio; }()); window.onload = function () { var game = new Arenaio(); //this.game.state.add('Start'); //game.state.add('Game', Arenaio.Game); //game.state.start('Game'); };
  22. Hi everyone. I'm trying to create a 2D spinning ball, but in Isometric projection. I'm using the following code: http://www.angryoctopus.co.nz/java4k/PoolTest.html which seems to work fine for top down view. (If Java doesn't work for you, this is my HTML5 test: Pool Press X to toggle aXes display.) Now I try to use this same code for my Isometric engine. So I rotate by 45 and 30 (yaw/pitch). It seems to work fine, as long as my ball's axes are World axes aligned. If they're not, I'm not sure what is happening. Also, when I rotate my view, what would be the correct rotation? Spindizzy (Canvas) Spindizzy (WebGL) Press H for help. (A Aabb, W Wireframe, X aXes, 1/2 Rotate).
  23. I'm trying to create simple isometric game using @lewster32's iso plugin, where player needs to transport his/her hero from point A to point B in simple city. Nothing special there. However, some buildings start flickering and I can't figure how to stop it. Only solution I came up with, is that I place them in air but that's not very good because small character can go below them. It seem that the issue is with body.immovable = true and body.moves = false commands. If I give those for the field itself, flickering starts. My code: var kentta; var house; var cube; var game = new Phaser.Game(1280, 800, Phaser.AUTO, 'test', null, true, false); var BasicGame = function (game) { }; BasicGame.Boot = function (game) { }; var isoGroup, player; BasicGame.Boot.prototype = { preload: function () { game.load.image('cube', 'police_dep.png'); game.load.image('kentta', 'kentta1.png'); game.load.image('house1', 'house1.png'); game.load.image('house2', 'house2.png'); game.load.image('house3', 'house3.png'); game.load.image('house5', 'house5.png'); game.load.image('house6', 'house6.png'); game.load.image('park', 'park.png'); game.load.image('factory', 'factory.png'); game.time.advancedTiming = true; // Add and enable the plug-in. game.plugins.add(new Phaser.Plugin.Isometric(game)); // Start the IsoArcade physics system. game.physics.startSystem(Phaser.Plugin.Isometric.ISOARCADE); // This is used to set a game canvas-based offset for the 0, 0, 0 isometric coordinate - by default // this point would be at screen coordinates 0, 0 (top left) which is usually undesirable. game.iso.anchor.setTo(0.5, 0.5); }, create: function () { // Create a group for our tiles, so we can use Group.sort isoGroup = game.add.group(); isoGroup.enableBody = true; isoGroup.physicsBodyType = Phaser.Plugin.Isometric.ISOARCADE; // Set the global gravity for IsoArcade. game.physics.isoArcade.gravity.setTo(0, 0, -500); kentta = game.add.isoSprite(200,0,20,'kentta',0,isoGroup); kentta.anchor.setTo(0.5,0); game.physics.isoArcade.enable(kentta); kentta.body.immovable = true; kentta.moves = false; house = game.add.isoSprite(410,70,0,'house1',0,isoGroup); house.anchor.setTo(0.5); house2 = game.add.isoSprite(440,180,100,'house2',0,isoGroup); house2.anchor.setTo(0.5); house3 = game.add.isoSprite(440,250,100,'house2',0,isoGroup); house3.anchor.setTo(0.5); house4 = game.add.isoSprite(340,275,100,'house3',0,isoGroup); house4.anchor.setTo(0.5); house5 = game.add.isoSprite(500,275,100,'house5',0,isoGroup); house5.anchor.setTo(0.5); house6 = game.add.isoSprite(475,90,100,'house6',0,isoGroup); house6.anchor.setTo(0.5); park = game.add.isoSprite(330,140,80,'park',0,isoGroup); park.anchor.setTo(0.5); factory = game.add.isoSprite(240,270,80,'factory',0,isoGroup); factory.anchor.setTo(0.5); // Create another cube as our 'player', and set it up just like the cubes above. player = game.add.isoSprite(200, 0, 100, 'cube', 0, isoGroup); player.tint = 0x86bfda; player.anchor.set(0.5); game.physics.isoArcade.enable(house); game.physics.isoArcade.enable(house2); game.physics.isoArcade.enable(house3); game.physics.isoArcade.enable(house4); game.physics.isoArcade.enable(house5); game.physics.isoArcade.enable(house6); game.physics.isoArcade.enable(park); game.physics.isoArcade.enable(player); park.body.moves = false; park.body.immovable = true; factory.body.moves = false; factory.body.immovable = true; park.scale.setTo((game.width/kentta.width)*0.5); /*kentta.body.setSize(kentta.body.widthX*1.5,kentta.body.widthY,kentta.body.height*0.5);*/ player.body.collideWorldBounds = true; kentta.body.collideWorldBounds = true; house.body.collideWorldBounds = true; house2.body.collideWorldBounds = true; kentta.scale.setTo((game.width/kentta.width)*0.5); house.scale.setTo((game.width/kentta.width)*0.15); house2.scale.setTo((game.width/kentta.width)*0.15); house3.scale.setTo((game.width/kentta.width)*0.15); house4.scale.setTo((game.width/kentta.width)*0.15); house5.scale.setTo((game.width/kentta.width)*0.15); house6.scale.setTo((game.width/kentta.width)*0.15); factory.scale.setTo((game.width/kentta.width)*0.15); // Set up our controls. this.cursors = game.input.keyboard.createCursorKeys(); this.game.input.keyboard.addKeyCapture([ Phaser.Keyboard.LEFT, Phaser.Keyboard.RIGHT, Phaser.Keyboard.UP, Phaser.Keyboard.DOWN, Phaser.Keyboard.SPACEBAR ]); var space = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR); space.onDown.add(function () { player.body.velocity.z = 300; }, this); game.iso.projectionAngle = 0.575; //init once after endering is done setTimeout(function(){ /*kentta.body.setSize(1400,1400,60); kentta.pivot.y = -150;*/ house2.body.moves = false; house2.body.immovable = true; house3.body.moves = false; house3.body.immovable = true; house4.body.moves = false; house4.body.immovable = true; house5.body.moves = false; house5.body.immovable = true; house6.body.moves = false; house6.body.immovable = true; /* park.body.moves = false; park.body.immovable = true; house.body.moves = false; house.body.immovable = true;*/ house4.body.setSize(house4.body.widthX/0.3,house4.body.widthY/0.3*1.25,house4.body.height/0.3,0,-10); house5.body.setSize(house5.body.widthX/0.3,house5.body.widthY/0.3*1.25,house5.body.height/0.3,-5,-10); park.body.setSize(park.body.widthX/0.3*1.2,park.body.widthY/0.3*1.5,park.body.height/0.3*1.5,-15,-27); },1000); }, update: function () { // Move the player at this speed. var speed = 100; if (this.cursors.up.isDown) { player.body.velocity.y = -speed; } else if (this.cursors.down.isDown) { player.body.velocity.y = speed; } else { player.body.velocity.y = 0; } if (this.cursors.left.isDown) { player.body.velocity.x = -speed; } else if (this.cursors.right.isDown) { player.body.velocity.x = speed; } else { player.body.velocity.x = 0; } // Our collision and sorting code again. game.physics.isoArcade.collide(isoGroup); game.iso.topologicalSort(isoGroup); }, render: function () { game.debug.text("Move with cursors, jump with space!", 2, 36, "#ffffff"); game.debug.text(game.time.fps || '--', 2, 14, "#a7aebe"); isoGroup.forEach(function (tile) { game.debug.body(tile, 'rgba(189, 221, 235, 0.6)', false); }); } }; game.state.add('Boot', BasicGame.Boot); game.state.start('Boot'); If you're wondering why there is a stupid timeout function, that's because all buildings flickered if those where defined in create function. I have no idea why. kentta variable is the field. Here is the picture of my game, body of field is rather off, I know, I know.
  24. Hey Folks, I've started using the excellent Rotates Isometric plugin but quickly ran into an issue when trying to create a bigger world. The default examples (like this one) run great with a small grid but when I try to go above 50x50, framerate starts to drop off FAST. Since I want to create a good-sized scrolling world, I was wondering if there is any good solution to this? Here's the options I see: * Batch the ground tiles into one big image. BUT this still limits how many detail or dynamic sprites (trees, rocks, NPCs, etc.) I can have on top, and I can't batch those since it would mess up the sorting * Create only enough sprites to fill the screen and implement some sort of scrolling (i.e. as player moves right tiles on the left that go off-screen get moved onto right and changed to the new image that should be there) As far as I can tell tell, solution 2) is the better method, but it would still be limited to static sprites. Plus, the implementation would be a pain (unless there is a ready-made scrolling/pooling implementation somewhere?) Thanks for any feedback and thoughts!
  25. Hi A couple of weeks ago we released a big update for our WADE engine and editor, so I've come back to update this post. In short, all the features that used to be premium are now free, and there are lots of nice new things such as an isometric world editor, a real-time shader editor and (still partial) integration with box2d for physics. It can be used through a visual editor or as a standalone JavaScript framework. The WYSIWYG editor works directly in Chrome (it was built using WADE itself). There are lots of video (and non-video) tutorials to get started. A few video tutorials that you may find interesting: This one is to make a simple isometric game from start to finish in less than 1 hour: This one is about making a simple "angry birds" type of game: And finally a video about the new real-time shader editing: Some features (more coming soon): WYSIWYG visual editor: drag, drop, rotate and resize sprites Web-based IDE that works in Chrome on any platform Games and Apps that you make work effortlessly on many platforms WebGL and Canvas can be used together Canvas fallback where WebGL is not supported Code editor with integrated documentation Cross-platform input mapping Automatic Screen Size Management Open Source Engine Physics Engine (based on box2d) Generate Android APK with 1 click Isometric Engine with world and tileset editors Real-time shader editor for your sprites. They say that making Javascript games is cool because you only need notepad and a browser. It's a lie, you don't need notepad Click here to try it I would appreciate some feedback - please give it a go and let me know what you think.