Skocz do zawartości

Wyszukaj

Wyświetlanie wyników dla tagów 'Phaser' .



Więcej opcji wyszukiwania

  • Wyszukaj za pomocą tagów

    Wpisz tagi, oddzielając je przecinkami.
  • Wyszukaj za pomocą nazwy autora

Typ zawartości


Forum

  • Świat Gamedevu
    • Wiadomości i ciekawostki
    • Gry użytkowników
    • Ogłoszenia
  • Tworzenie gier
    • Projektowanie Gier
    • Programowanie
    • Silniki
    • Grafika
    • Prawo i tworzenie gier
    • Inne
  • Tworzenie gier via www
    • HTML/CSS
    • PHP/MySQL
    • JavaScript i NodeJS
    • Silniki gier via www
    • Inne
  • Pozostałe
    • Ważne informacje
    • Uwagi użytkowników
    • Hydepark

Kalendarze

  • Wydarzenia
  • Premiery Gier

Znaleziono 15 wyników

  1. Hej. Szukam rozwiązania mojego problemu gdy uruchamiam na swoim telefonie już gotową aplikację, sprite'y nie są wgl ładowane. Błąd leży w ścieżce, dlatego pytanie jak wpisać poprawną scieżkę. Nie działa ścieżka względna. W internecie wyszukałem jakiś plugin do cordovy. Jak sobie z tym radziliście?
  2. Hej, czy ktoś z was używał trybu fizyki p2 w phaserze w bardziej zaawansowany sposób? Mój problem polega na tym, że chce stworzyć kolizję między animowanym playerem, a animowanymi przeszkodami. Wyczytałem, że aby to zrobić najprościej użyć PhysicsEditor, któy zapisuje ścieżki do pliku .json, ale już gorzej z implementacją. Wszelkie przykłady na jakie się natknąłem opierają się na pojedyńczej klatce, a w moim przypadku na całym spritesheet'ie. Jeżeli, wiecie jak się za to zabrać, to piszcie tutaj. W załączniku mogę podełać przykłądową przeszkodę (ale w formacie .gif).
  3. Some time ago, for my own needs, I created Boilerplate for the Phaser library. I decided to publish it on github and develop it. This is a template that makes it easy to start creating a game project in Phaser. Used in it was Webpack. Advantages of my biolerplate? Code writing in the latest standards. (Mainly about ES6) Launching a development server, a quick preview of our work. The server listens to file changes and refreshes the view. Compile the entire project and create a single, minimized JavaScript file. - The result code will no longer be in the standard in which we wrote it. It will be translated to ES5 browser friendly. Getting started with Phaser will be very easy now. Just clone this git repository: https://github.com/GamedevMania/phaser-ce-boilerplate.git And install dependencies: npm install Installing dependencies can take some time. However, do not worry that the created game will be heavy and will contain a lot of unnecessary code. All dependencies (except Phaser) are development dependencies. When you run the command "npm run build" you will create a folder (default) build, which will contain only: JavaScript output, Phaser library and game resources. Waiting for your feedback. Tell us what you can add or change to make it even easier to start a project in Phaser. To do this, use the "Create issue" option on the github. Regards, Writen [PL] Jakiś czas temu, dla własnych potrzeb, stworzyłem Boilerplate dla biblioteki Phaser. Postanowiłem go opublikować na githubie i rozwijać go. Jest to szablon ułatwiający rozpoczęcie tworzenia projektu gry w Phaser. Wykorzystany w nim został Webpack. Zalety mojego biolerplate'a? Pisanie kodu w najnowszych standardach. (Głównie chodzi o ES6) Uruchomienie serwera developerskiego, czyli szybki podgląd naszej pracy. Serwer nasłuchuje zmian w plikach i odświeża pogląd. Skompilowanie całego projektu i utworzenie pojedynczego, zminifikowanego pliku JavaScript. - Kod wynikowy nie będzie już w standardzie, w którym go napisaliśmy. Zostanie przetłumaczony do ES5 przyjaznego przeglądarkom internetowym. Rozpoczęcie pracy z Phaserem będzie teraz bardzo proste. Wystarczy sklonować to repozytorium git: https://github.com/GamedevMania/phaser-ce-boilerplate.git I zainstalować zależności: npm install Instalacja zależności może zająć trochę czasu. Nie należy się jednak obawiać, że przez to utworzona gra będzie ciężka i będzie zawierała dużo zbędnego kodu. Wszystkie zależności (oprócz biblioteki Phaser), to zależności developerskie. Po uruchomieniu komendy "npm run build" zostanie stworzony folder (domyślnie) build, w którym znajdą się tylko: kod wynikowy JavaScript, biblioteka Phaser oraz zasoby gry. Czekam na wasz feedback. Powiedzcie co można dodać lub zmienić, aby jeszcze bardziej ułatwić rozpoczęcie projektu w Phaser. W tym celu proszę użyć opcji "Create issue" na githubie. Pozdrawiam, Writen
  4. Phaser CE (Community Edition) to wydanie biblioteki Phaser, które począwszy od wersji 2.7.0, zostało przekazane do rozwoju społeczności. Ostatnim oficjalnym wydaniem był Phaser 2.6.2. Firma Photon Storm zdecydowała się na taki krok z powodu chęci skierowania całych sił na budowę nowej wersji biblioteki - Phaser 3 oraz innych projektów. Aktualnie każdy może uczestniczyć w rozwoju i powstawaniu nowych wydań biblioteki Phaser 2 w serwisie GitHub: https://github.com/photonstorm/phaser-ce
  5. Ostatnio wpadłem na pomysł, aby n-ty raz zabrać się za naukę pisania gier. Trochę poszukałem i natrafiłem na narzędzie Intel XDK. Pozwala budować apki na telefony. Samo narzędzie nie jest ważne, chociaż jeśli ktoś go używał to byłoby miło usłyszeć jakieś opinie z własnych doświadczeń. Chodzi mi jedynie o framework. Wybrałem Phaser, bo kiedyś coś w nim dłubałem i przyjemnie mi się w nim pisze. Do wyboru są jeszcze: Cocos2d, Pixi, EaselJS. Używaliście któregoś z nich? Możecie się wypowiedzieć na ten temat? Który wybrać? Czy nadal iść w Phasera? Zauważyłem, że na forum góruje Phaser i jeśli dalej będę go używał to mam nadzieję, że znajdę tu jakiegoś mentora, bo mam już pewne problemy, ale o tym raczej w innym temacie.
  6. Duza mapa bez zacinania

    Panowie, kolejne pytanie do tworzenia mapy pod phaser. Chciałbym stworzyć dużą mapę, wszystko chodzi gładko gdy mapa ma jeden layer, gdy dodaję kolejne zaczyna zacinać. jest jakiś sposób na zredukowanie ciężaru wczytywanych elementów?
  7. Panowie, Przyszedł czas abym zmierzył się ze stworzeniem mapy multiplayer. Na tą chwilę, w projekcie wygląda to tak, że tworzę świat, w którym gracz ma swoje podwóreczko i kilka map pobocznych dla swojego zawodu, typu hodowca, rolni, rybak itp. Chciałbym do tego dorzucić jakąś mapę, np rynek w której gracze mogli by się spotkać w czasie rzeczywistym tzn każdy sobie chodzi po swoim podwórku i pobocznych działeczkach, wyjdzie kawałek dalej i dochodzi do rynku, gdzie już mogą wejść wszyscy. Jest to do zrealizowania? Mapy tworzę w tileeditor, wszystko dodawane jest podstawowym schematem, czyli funkcja create, preload, update. Domyślam się, że pewnie będzie konieczny do tego websocket, tylko nie mam pomysłu jak podpiąć go pod to wszystko. Do tej pory, wszystkie dane przy starcie gry pobieram z bazy danych za pomocą php i ajaxu i teraz dylemat, czy zrobić przełom i wszystko zrobić za pomocą websocketa? Napewno daje to wiele możliwości, ale to dla mnie zielony temat. Być może zostawić to tak jak jest, ale obawiam się że jak będzie wiecej graczy, zapytania do bazy mogą lagować,co sądzicie? Bo jeśli nie, to chętnie zostawił bym to tak jak jest a websocketa użył tylko do obsługi multiplayerowej mapy. Pomóżcie Edit: Ok, to tak znalazłem fajny kurs z implementacja do phaser, alee nie dużo http://ezelia.com/2014/tutorial-creating-basic-multiplayer-game-phaser-eureca-io Jest podobna baza pliku do mojego, funkcja preload update itp. Tylko tak, w tutorialu jest plik serwer.js w którym to połączenie jest odpalane na localhoscie i tu moje pytanie jak to zaimplementować do strony gdy ona jest już na sewerze online? Następnym pytaniem jest jak napisać funkcję, która tworzyła by dołączających się graczy.. jak wgl podłączyć to tak aby graczowi pokazywali i ładowali się dołączający gracze? Jak wybrać na której mapie to myślę da się zrobić, zrobić warunek że jeśli mapa= xxx, alee jak to wszystko zacząć? Poniżej zarys głównych funkcji w mojej grze, obciąłem je sporo, tak aby mało ważne w tej chwili elementy nie zaśmiecały widoku. Preload: var TopDownGame = TopDownGame || {}; //loading the game assets TopDownGame.Preload = function(){}; TopDownGame.Preload.prototype = { preload: function() { //show loading screen this.preloadBar = this.add.sprite(this.game.world.centerX, this.game.world.centerY, 'preloadbar'); this.preloadBar.anchor.setTo(0.5); this.load.setPreloadSprite(this.preloadBar); //load game assets this.load.tilemap('podworko', 'assets/tilemaps/podworko.json', null, Phaser.Tilemap.TILED_JSON); this.load.spritesheet('player', 'assets/images/player.png',64,64); }, create: function() { this.state.start('Game'); } };// JavaScript Document W pliku game.js mam funkcje create, kilka funkcji tworzących obiekty na mapie i mapę z tile w formacie .json tworzonej w tilededitor i funkcję update var TopDownGame = TopDownGame || {}; start(); startdanemapa(); //title screen TopDownGame.Game = function(){}; TopDownGame.Game.prototype = { create: function() { this.map = this.game.add.tilemap(TopDownGame.level); //the first parameter is the tileset name as specified in Tiled, the second is the key to the asset this.map.addTilesetImage('tiles1', 'gameTiles1'); this.map.addTilesetImage('tiles', 'gameTiles'); this.map.addTilesetImage('dungeon', 'gamedungeon'); this.map.addTilesetImage('srodekdom', 'gamesrodekdom'); this.map.addTilesetImage('towntiles', 'gametowntiles'); this.map.addTilesetImage('terrain_atlas', 'gameterrain_atlas'); this.map.addTilesetImage('zew5', 'gamezewnetrzne'); this.map.addTilesetImage('all3', 'gameall'); //create layer this.backgroundlayer = this.map.createLayer('backgroundLayer'); this.blockedLayer = this.map.createLayer('blockedLayer'); this.backgroundLayer2 = this.map.createLayer('backgroundLayer2'); this.blockedLayer1 = this.map.createLayer('blockedLayer1'); this.secondLayer = this.map.createLayer('secondLayer'); this.thirdLayer = this.map.createLayer('thirdLayer'); this.funkcje = this.map.createLayer('funkcje'); //collision on blockedLayer this.map.setCollisionBetween(1, 10000, true, 'blockedLayer'); this.map.setCollisionBetween(1, 10000, true, 'blockedLayer1'); this.map.setCollisionBetween(1, 10000, true, 'funkcje'); this.animal = this.game.add.physicsGroup(Phaser.Physics.ARCADE); //this.game.physics.arcade.enable(this.animal); //this.animal.enableBody = true; //this.funkcje.debug = true; //resizes the game world to match the layer dimensions this.backgroundlayer.resizeWorld(); this.createItems(); this.createDoors(); this.createmapa(); //create player // var result = this.findObjectsByType('playerStart', this.map, 'objectsLayer') //this.point = new Phaser.Point(playerx,playery); //this.player = this.game.add.sprite(result[0].x, result[0].y, 'player', 5); //this.player = this.game.add.sprite(this.point.x, this.point.y, 'player', 5); if (zmiennastart != 0){ this.player = this.game.add.sprite(parseInt(playerx), parseInt(playery), 'player', 5); } else {this.player = this.game.add.sprite(parseInt(playerx), parseInt(playery), 'player', 5);} this.game.physics.arcade.enable(this.player ); this.player.anchor.set(.5); this.player.scale.x=70/100; this.player.scale.y=65/100; this.player.body.setSize(25, 60, 0, 5); this.player.body.collideWorldBounds=true; //this.game.debug.body(this.player); //the camera will follow the player in the world this.game.camera.follow(this.player); this.physics.startSystem(Phaser.Physics.Arcade); //this.input.onDown.add(this.moveSprite, this); this.goToX = this.player.x + this.camera.x; this.goToY = this.player.y + this.camera.y; //do ruchu na klick usunac do ruchu na klick i trzymanie //this.game.input.onDown.add(this.movesprite, this); //move player with cursor keys this.cursors = this.game.input.keyboard.createCursorKeys(); this.wasd = { up: this.game.input.keyboard.addKey(Phaser.Keyboard.W), down: this.game.input.keyboard.addKey(Phaser.Keyboard.S), left: this.game.input.keyboard.addKey(Phaser.Keyboard.A), right: this.game.input.keyboard.addKey(Phaser.Keyboard.D), }; this.player.animations.add('left', [ 117, 118, 119, 120, 121, 122, 123],8, true); this.player.animations.add('right', [ 143, 144, 145, 146, 147, 148, 149], 8, true); this.player.animations.add('down', [132, 133, 134, 135, 136, 137, 138], 8,true); this.player.animations.add('up', [105, 106, 107, 108, 109, 110, 111], 8,true); cutleft = this.player.animations.add('cutleft', [ 169, 170, 171, 172, 173], 8); cutright = this.player.animations.add('cutright', [ 195, 196, 197, 198,199],8); cutdown = this.player.animations.add('cutdown', [ 182, 183, 184, 185, 186],8); cutup = this.player.animations.add('cutup', [ 156, 157, 158, 159,160,],8); //this.game.input.onDown.add(this.moveSprite, this); cutleft.onComplete.add(this.animationStopped, this); cutright.onComplete.add(this.animationStopped, this); cutdown.onComplete.add(this.animationStopped, this); cutup.onComplete.add(this.animationStopped, this); this.game.input.onDown.add(this.createeq, this); }, createItems: function() { //create items this.items = this.game.add.group(); this.items.enableBody = true; var result = this.findObjectsByType('item', this.map, 'objectsLayer'); result.forEach(function(element){ this.createFromTiledObject(element, this.items); }, this); this.items.setAll('body.immovable', true); this.items.setAll('body.moves', false); }, createDoors: function() { //create doors this.doors = this.game.add.group(); this.doors.enableBody = true; result = this.findObjectsByType('door', this.map, 'objectsLayer'); result.forEach(function(element){ this.createFromTiledObject(element, this.doors); }, this); }, //find objects in a Tiled layer that containt a property called "type" equal to a certain value findObjectsByType: function(type, map, layer) { var result = new Array(); map.objects[layer].forEach(function(element){ if(element.properties.type === type) { //Phaser uses top left, Tiled bottom left so we have to adjust //also keep in mind that the cup images are a bit smaller than the tile which is 16x16 //so they might not be placed in the exact position as in Tiled element.y -= map.tileHeight; result.push(element); } }); return result; }, //create a sprite from an object createFromTiledObject: function(element, group) { var sprite = group.create(element.x, element.y, element.properties.sprite); //copy all properties to the sprite Object.keys(element.properties).forEach(function(key){ sprite[key] = element.properties[key]; }); }, update: function() { //collision this.game.physics.arcade.collide(this.player, this.blockedLayer); this.game.physics.arcade.collide(this.player, this.blockedLayer1); this.game.physics.arcade.collide(this.player, this.animal, this.stopanimplayer, null, this); this.game.physics.arcade.collide(this.animal, this.animal, this.stopanimzwierz, null, this); this.game.physics.arcade.collide(this.animal, this.blockedLayer, this.stopblocked, null, this); this.game.physics.arcade.collide(this.animal, this.funkcje, this.stopblocked, null, this); this.game.physics.arcade.overlap(this.animal, this.doors, this.stopblocked, null, this); this.game.physics.arcade.collide(this.player, this.funkcje, this.wyborfunkcji, null, this); this.game.physics.arcade.collide(this.player, this.additems); this.game.physics.arcade.collide(this.player, this.items, this.funkcjaitem, null, this); this.game.physics.arcade.overlap(this.player, this.doors, this.enterDoor, null, this); this.game.physics.arcade.overlap(this.player, this.Homedoors, this.enterHomeDoor, null, this); this.game.physics.arcade.collide(this.player, this.eqgroup, this.wyborfunkcji, null, this); this.game.physics.arcade.collide(this.player, this.stol, this.stolf, null, this); //poniżej funkcje od ruchu gracza, animacji, kolizji itp } Jest ktoś w stanie pomóc mi zielonemu w temacie socketu pomóc jakoś ugryźć implementację tego do mojego projektu? Będę bardzo bardzo wdzięczny, to będzie dla mnie spory krok naprzód..
  8. Panowie, pomóżcie proszę bo za cholerę nie mogę rozgryźć tego tematu.. Kolizje męczą mnie od dłuższego czasu.. Mam zdefiniowanego gracza: if (zmiennastart != 0){ this.player = this.game.add.sprite(parseInt(playerx), parseInt(playery), 'player', 5); } else {this.player = this.game.add.sprite(parseInt(playerx), parseInt(playery), 'player', 5);} this.game.physics.arcade.enable(this.player ); this.player.anchor.set(.5); this.player.scale.x=70/100; this.player.scale.y=65/100; this.player.body.setSize(4, 25, 0, 15); //this.game.debug.body(this.player); //the camera will follow the player in the world this.game.camera.follow(this.player); this.physics.startSystem(Phaser.Physics.Arcade); Dalej definiuję grupę obiektów, które na mapie w tiled są dodane do warstwy obiektów i przypisana jest im wartość item. createItems: function() { //create items this.items = this.game.add.group(); this.items.enableBody = true; var item; result = this.findObjectsByType('item', this.map, 'objectsLayer'); result.forEach(function(element){ this.createFromTiledObject(element, this.items); }, this); }, Tutaj funkcja dodająca sprite do obiektów: //find objects in a Tiled layer that containt a property called "type" equal to a certain value findObjectsByType: function(type, map, layer) { var result = new Array(); map.objects[layer].forEach(function(element){ if(element.properties.type === type) { //Phaser uses top left, Tiled bottom left so we have to adjust //also keep in mind that the cup images are a bit smaller than the tile which is 16x16 //so they might not be placed in the exact position as in Tiled element.y -= map.tileHeight; result.push(element); } }); return result; }, //create a sprite from an object createFromTiledObject: function(element, group) { var sprite = group.create(element.x, element.y, element.properties.sprite); //find objects in a Tiled layer that containt a property called "type" equal to a certain value findObjectsByType: function(type, map, layer) { var result = new Array(); map.objects[layer].forEach(function(element){ if(element.properties.type === type) { //Phaser uses top left, Tiled bottom left so we have to adjust //also keep in mind that the cup images are a bit smaller than the tile which is 16x16 //so they might not be placed in the exact position as in Tiled element.y -= map.tileHeight; result.push(element); } }); return result; }, //create a sprite from an object createFromTiledObject: function(element, group) { var sprite = group.create(element.x, element.y, element.properties.sprite); //copy all properties to the sprite Object.keys(element.properties).forEach(function(key){ sprite[key] = element.properties[key]; }); }, Później dodana jest kolizja: this.game.physics.arcade.overlap(this.player, this.items, this.funkcjaitem, null, this); Gracz koliduje z obiektem ale przechodzi przez niego, jest ktoś w stanie pomóc mi ogarnąć to tak, aby kolidowały ze sobą, lecz nie przenikały przez siebie? będę wdzięczny
  9. Witam Panowie, Mam małą zagwozdkę nad tym jak rozdać plan wyświetlania między poszczególne sprite'y. Na poniższej grafice widać jak indyczek nakłada się z krówką.Moim zamysłem byłoby, aby temu zwierzęciu które jest na niższym X przypisać pierwszy plan niż wyższe, z tym że wiąże się to z pętlowaniem i nie bardzo wiem czym jeszcze.. Oczywiście oprawa prowizorka Macie może jakieś pomysły jak rozwiązać taki problem? Dzięki
  10. Kolizja dla tilemap w p2.js

    Jest jakiś wydajniejszy i bardziej sensowny sposób na dodanie tilemapy do grupy kolizji niż puszczenie pętli po bodies? Obecnie robię to w ten sposób: for (var bodyIndex = 0; bodyIndex < map.layer.bodies.length; bodyIndex++) { var tileBody = map.layer.bodies[bodyIndex]; tileBody.setCollisionGroup(tilesCollisionGroup); tileBody.collides([bulletCollisionGroup, playerCollisionGroup]); } Pół biedy jak to się robi raz przy wczytywaniu. Tylko że ja chcę dodawać kafelki w czasie rzeczywistym potem i wtedy już jest masakra jak ta pętla leci od nowa po wszystkich kaflach.
  11. Witam, Mam problem z kolizją pomiędzy elementami w jednej grupie.. Deklaracja grupy: this.animal = this.game.add.physicsGroup(); this.game.physics.arcade.enable(this.animal); this.animal.enableBody = true; Dodawanie zwierząt do grupy: this.sheep =this.animal.create(zwierzex, zwierzey, 'sheepwalk'); Ustawienie kolizji w funkcji update: this.game.physics.arcade.collide(this.player, this.animal); this.game.physics.arcade.collide(this.animal); this.game.physics.arcade.collide(this.animal, this.blockedLayer, this.stopanimzwierz, null, this); Ze wszystkim innym kolidują, a ze sobą nie chcą.. ma ktoś pomysł dlaczego?
  12. Problem z funkcją losową

    Witam Panowie, Wczoraj natknąłem się na pewien problem, pewnie wynika to z mojej wciąż małej wiedzy na temat JS, dlatego zwracam się o pomoc. Opierając się na bazie danych, wczytuję na mapę gry zwierzęta jakie posiada użytkownik.W każdej pętli zwierze jest przypisywane do jednej zmiennej np: cow = create.element... I tak w każdym obrocie pętli każde zwierzątko, odpowiednio. Teraz załóżmy, że gracz ma 3 krowy, tak de facto przypisuję wszystkie do jednej zmiennej, więc w jej zasięgu zostaje mi tylko ostatnia.. Chcę podpiąć się pod jedną z nich i gdyby odbywało się to w kolizji, nie byłoby problemu, jest wtedy element kolidujący. Natomiast co w przypadku, gdy chcę zrobić funkcję losową, która będzie losowała które zwierze, w którą stronę i o jaką wartość poruszyć? Funkcję losującą mam już napisaną, przykładowo losuję, że zwierzę krowę, id z bazy 2 chce poruszyć x - 7. Nie mam kolizji więc nie mam jak się do niej dobrać i tak siedzę i kombinuję, podpowiecie coś? Będę wdzięczny za pomoc, pozdrawiam
  13. Cześć, Tak siedzę w pracy i myślę się nad kolejnymi etapami projektu. Dla rozjasnienia z obrazu tileset map w tiled zrobioną mapę. Po kliknięciu gracza na mapę, dodają się odpowiednie kafelki metodą putile. Chciałbym ograniczyć swobodę wklejania tych kafelków, między innymi sprawdzając czy na podłożu znajduje się inny odpowiedni kafelek. Załóżmy, że gracza chce posadzić nasiono, klika na mapę żeby to uczynić, w tym momencie chciałbym zprawdzić, czy w miejscu w które klika na mapie znajduje się kafelek skopanej ziemii. Czy da się odczytać z mapy dla danego kafelka numer id przypisany w tileset? Rzućcie jakimiś pomysłami, łatwiej będzie się zabrać do pracy
  14. Książka Phaser

    Cześć Wam, Macie może dostęp do jakichś książek na temat biblioteki phaser lub tworzenia map w tiled?
  15. Zawsze aktualna wersja dokumentacji do wydania Phaser CE (Community Edition) znajduje się na stronie: https://photonstorm.github.io/phaser-ce/
×