• Content Count

  • Joined

  • Last visited

About ladybenko

  • Rank

Contact Methods

  • Twitter

Recent Profile Visitors

1095 profile views
  1. Here's the game I made for Ludum Dare #38: Terrartisan. It's a terraforming game with two game modes: quest (in which you have to solve a "puzzle" and learn the rules of the simulation) and freestyle, where you get to build a world of your liking. I also wrote a post-mortem at my blog that shows how the game was built step by step. The game was made with JavaScript and Phaser. I hope you like it! And if anybody joined Ludum Dare too, please consider rating the game at the LD site when the judging starts. Thanks!
  2. Hi, I submitted a game for Ludum Dare #36 (compo, aka 48h solo category). The theme gave me an idea I really liked but it was way too big for a game jam, so I decided to go for a proof on concept of sorts instead of a "complete" game. I'm thinking on continuing the development, so I'm really interested in feedback! You can view the LD entry and play the game at: The game was implemented with JavaScript and Phaser.
  3. Hi all, I was experimenting with techniques for Web Font preloading and ended up writing an article ("Web Font preloading for HTML5 games") with my findings, along with some demos working in Phaser. There are several ways to detect whether a font has been loaded or not (like rendering a text in a DOM element and check for size/scrolls events, etc.), as well as a proper, standard JavaScript API that as of today, only a few browsers have implemented (Firefox, Chrome and Opera). There are several third-party libraries out there (like TypeKit's Loader, FontFace Observer, etc.) which use this JavaScript Font Loading API and do a fallback to workarounds if browsers don't support it. The problem is that Phaser's loader does not integrate anything like this, so right now you need to bypass the loader entirely and keep the font loading separate from other assets loading. This might cause some problems because once your game state hits create the font might not be loaded yet. This demo shows this technique by introducing some flags that delay text rendering until both the preload phase and the font load have been completed. If you'd like to integrate the font loading inside Phaser's preload phase, you'd need to write your custom loader extending Phaser.Loader. My own version of this custom loader involves modifying one internal Phaser.Loader method, which is not ideal and might break in future Phaser's releases. In the article I describe with more detail all of this, so if you are interested check it out. Now, looking into the future… Since WebFonts is the only way we have to render text with our own TTF files, I'd love for Phaser to acknowledge this and offer a way to load these TTF (or woff2, or whatever) files like the other assets. Since the JS API is not implemented in some major browsers yet (like Edge, or Safari), if we were to include this now, we'd need to use a third-party library, which would bump Phaser's build file –which is already big. A lightweight library would be FontFace Observer, which is ~5KB (1.5KB less without the Promise polyfill). I can see @photonstorm not wanting to make Phaser bigger, so my proposals would be: Include one of these libraries in a custom Phaser build. If a users selects that build, a method to load webfonts would be added to Phaser.Loader. Make Phaser.Loader a bit more flexible, so people can implement their own custom loading, without the need to overwrite an internal method. A way to queue an asset and tell the loader when it has been finished or not (via events) would be really helpful. (NOTE: if this is already possible please someone tell me how). Ignore this feature for Phaser and pray that the Font Loading API is implemented by all major browsers when Lazer is out. Make the Phaser.Loader use this API in a method that can load webfonts. I'm happy to contribute code and make a PR if Richard thinks any of these approaches is OK. Does anybody have other suggestion to make webfont loading happening in Phaser? Also, the this Google Fonts example in Phaser is kind of broken because it introduces an arbitrary delay of one second to render the text. By using two flags (one for when the create phase has started, and one for when the font has been loaded) we don't need this delay. Would it be OK to submit a PR to fix this example? Thanks!
  4. Hi all, I made a game for Ludum Dare #35! Meet Sky Panic: It's a retro, infinite, cute shump. Your ship has two modes you can switch to: fighter and bomber. The game was created using JavaScript / Phaser. Graphics were made with Aseprite and the pico-8 colour palette. And for audio, I used some online editors: bxfr for sound effects, and Audiotool for the background music loop. I also wrote a post-mortem in my blog that features a log with step-by-step pics of the progress. I hope you like it! Here are the controls: Tab: switch between bomber and fighter Arrow keys: move Spacebar: shoot PS: This was a compo entry, and since I had to create everything from scratch in just 48h, I didn't have time to add more enemy types or a final boss (something that I really wanted to do!).
  5. RT @Laralyn: We can't assume silence from individuals means that they don't care. I know many devs whose hands are tied in terms of public…

  6. Hi, thanks for sharing this! I would appreciate it a lot if any of you could provide feedback. If you think that I missed something important, please do tell me Cheers~
  7. Thanks! I'm glad you can find it of use If you have any suggestions about something that is missing, or that you think it should be removed, please let me know.
  8. Thanks! Yep, definitely more enemies / power-up's, etc. would have helped. Thanks, that means a lot, specially since I see myself more as a coder. But I've seen definitely better art there on LD I'm quite proud of this one, though.
  9. Probably not the most efficient way, but you can always add a flag to the aliens that are not shootable anymore. Then you pass an additional filter to the overlap method. Assuming that flag is called immune, you could have: game.physics.arcade.overlap(bullets, aliens, collisionHandler, function (bullet, alien) { return !alien.immune;}, this);
  10. Hi all, I created a Phaser generator for Yeoman (a scaffolding tool). The original idea was to have an easy way to set up a HTML 5 game project for game jams, prototypes, etc. It doesn't have a lot of features, but it provides: Latest version of Phaser, of course A starter project with an asset preloader scene, plus a main scene.A gulpfile with some basic tasks:Launch a local web serverLivereload (so the web browser does a reload automatically when a JS file changes)Deployment via rsyncBrowserify integration, so you have a nice way to create modules for your game (and/our use NPM packages) or import other files while we wait for ES6 to be common.Two HTML files: one that acts as a viewer/wrapper (which you can customize) and another one that is just a canvas so the game can be embedded in 3rd party sites (like or Ludum Dare)If you have node and NPM in your system, this is really easy to setup. First you need to install Yeoman and this generator: npm install -g yo generator-gamejamThen you create a new directory for your game (or clone an empty git repository) and run Yeoman from there: mkdir my-fancy-gamecd my-fancy-gameyo gamejamYou will be asked several questions, such as the title of your game, the license you want to use, the resolution you'd like, etc. With this info, you will get a custom base template you can build your game on Once the template is set up, you can try it by running: gulp runThen open your browser in http://localhost:8080 and boom! If you want livereload, you'll need an extension for your browser, like this one for Chrome. There's a gulp task to deploy your game to a server via rsync. In order for that to work, you need to edit the file gulp.config.json with the data of your server. And I think that's it. If you have any comments, or feature requests, they are more than welcome. Happy coding
  11. Hi all, I wanted to share my entry for the last Ludum Dare: Metal vs Hipsters. You can play the game here. This was an entry for the compo (not the jam), so only me for 48 hours… It's not as completed / polished as I would have liked, but it's a huge improvement over my previous entry, so I'm quite happy with it. I wrote a full post-mortem at my blog, with step by step screenshots. I won't reproduce it here, since it's quite long, but here's a teaser of one of the first phases of the game: One of the most common feedback I've received already is that I should have made the game infinite, with random spawning of enemies, instead of pre-designed waves. In retrospective, I kind of agree with it, specially since it was a jam and I had very limited time to design the waves / levels and I had to settle with just 5. Also, lack of animations. I should have chosen a different art style that would have allowed me to create animations as well. With this style, I didn't have time for them I hope you guys like it. For those interested, the source code is available on Github. And if you'd like to vote the game on Ludum Dare, here's the link to the entry. Thanks! Any feedback would be appreciated
  12. Thanks! So what happens is that I should just not call game.add.existing because when you create a new group it gets automatically added to the game instance? Cheers
  13. If you would be so kind, I'd appreciate it. I tried and could not make it work Thanks a lot rich
  14. Hi, thanks for the reply! I'm interested in adding the group afterwards because I wanted a custom group class inheriting from Phaser.Group. The reason is that I had some sprites that were related (in this case, a HUD), and I wanted to separate the logic of creation of these sprites into the group's custom class, plus a bit of other logic related to these sprites. Is there another way of doing this? I'm new to Phaser and a bit lost Thanks!
  15. Hi, I'm trying to add an existing group to a game: var dummy = new Phaser.Group(game);game.add.existing(dummy);However the addChild method that eventually gets called throws this error: Uncaught TypeError: Cannot set property '_iPrev' of undefinedWhat am I doing wrong? Thanks