Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

SparedRay

38
Posts
3
Topics
10
Followers
7
Following
A member registered Jun 03, 2016 · View creator page →

Creator of

Recent community posts

Actually will be easy since it depends on the server, so if you want to use uWebsockets on Socket.IO it should be configured (here someone talk about that) on the server, but the client will be the same no matter it uses ws or uws. That is if you use SocketIO, using other websocket client will require writting the apropiate plugin for that but still the uWebsocket decision will remain on the server.

In order to get lights, you should set the material type to "phong" instead of the default "basic" (this is also valid to sprites).

Well, my experience is mostly on Android devices and that's why i wouldn't recommend Superpowers for 3D development since WebGl support is still buggy there. Also there is a personal feeling about webgl being only an experiment and not a real standard, so its not comparable to work with godot or UE4 (but that might just be nonsenses of a loosed mind).

Ok, i'm not part of the core developers so the following is just the personal perception:

Right now i wouldn't say it is active neither dead, it's just that Superpowers since it is not a commercial product (meaning they not have a profit directly from it) it cant be maintained in the same way of other engines (like Unity), but on the other hand as an open source project anyone can clone its code and continue working on it and with that in mind i wouldn't say its easy to kill (but not imposible).

About multiplayer, Superpowers has a socket.io client library built in, so the hardest part should be how to setup the server.

If Superpowers is a good engine or not depends on your need, the only scenario where i wouldn't recommend Superpowers is if whe where talking about 3D games and i will fault webGL for that.

Until now i haven't play with 3D objects, but now that i did i notice there seems to be a lack of documentation about this component. So anybody alredy test it? Also (and i think it related) how does it works the cast and recieve shadow option that is on the actor config?

Sorry for a late response, but your problem is related with passing floats to the function. You should use:

Math.floor(axis_position);

In order to make them integers. Also you need to consider the tile position for example if you're doing a sidescroller then tiles will be actor_position - 1 on Y axis (Since the player will be walking over the tile) if you are doing a top down view then you shouldn't have that problem.

Ok, i have been busy for the last month but i'm still working (much slower than before) on the game, the game has advanced changing a few mechanics on internal code, a lot of thing where changed in the graphics side (almost every map has now its own original tileset). And a final important news, a great composer ModalModule is collaborating with in-game music, so it will have a great soundtrack while you're playing.

Now that i'm busy with other activities the devlog might continue with another account, so it will be written as a team and not as individual but that's still undefined. Stay tuned for more news soon.

On a scene i have an actor (named A) with a tilemap renderer which renders a tilemap, and a second actor (named B) with a tilemap renderer but this one use a different tilemap (and a diferent tileset), the problem is that since i updated to Superpowers 4 the tilemap renderer of B seems to omit its tileset and renders the map with the tileset of A, anybody knows about this?

All what i said before should apply to IOS (I can't guarantee it cause i haven't tested).

About how to integrate plugin depends on what you mean:

  • Write a plugin for Superpowers: here (a little outdated).
  • Add atomic plugins: here (Using Cordova CLI).
  • Add a plugin using XDK: here
If what you mean is if there is a tutorial on how to write the code to make the plugin works besides the plugin docs, don't think so, at least to me is a mix between experience and playing around until everything works.

check here (if exist) C:\Users\"YOUR USER"\AppData\Roaming\Superpowers

It depends on your OS, in linux is '.config/Superpowers/systems/' but on windows or mac have no idea. you could use a folder finder function and look where your OS have a folder called 'Superpowers'

I haven't used those atomic, but considering they're just cordova plugins made by ludei, should work without a problem. (Useful or not depends on the game, there're several plugins on cordova's world that does the same thing).

I'm using XDK right now, but you have to be clear that all solutions (as far as i know) rely on Cordova to make the end apk. XDK upload your files to the server and use a 'fork' of Cordova to make the apk, Crosswalk CLI (wich is also part of intel) use Cordova at the end with a modified webview, Cocoon (a solution of ludei) use their webview+ (in a similar way crosswalk does) with Cordova. So at the end Cordova is your god here, its limits are need to be considered. (and this is valid for any webapp turned into 'native' app)

As a recomendation, use XDK until you need more control over final build, then use Cordova CLI and make the apk by yourself, once you have all the libraries and stuff needed, the build process will not chage much, maybe faster because Cordova CLI not need internet.

I Also check other engines before ending with Superpowers, but for me there's no better 'multiplatform' choice. HTML5 is growing to be a real solution on multiplatform and in the near future, it will benefit Superpowers. If you want to try other engines look for libgdx (Java based), since is really solid and well documented. (I wouldn't look for Unity cause i think its really overloading for most of games)

First time you run Superpowers it will download the superpowers core and superpowers game system, you can download them separetly and put them on the final folder. (or at least it should work that way)

Ok, i could talk from my experience with Android:

Performance: This is not actually related with superpowers (not directly) but technologies used to generate an apk from a web app are not great when you have a slow device, that's a fact. if your users have android 5.1 they probably wont notice a bad performance since that webview works good with webgl, if they have android 5.0 or lower, you should use crosswalk to build the apk and you should know that devices with less than 1gb ram wont have the best experience (again, this is not related with superpowers itself its more related with technologies used for building the apk)

Ads and IAP: I used several cordova plugins for ads and they work as should, but to write the code you should be conscious of the situation: Superpowers won't have access to you cordova plugin code, so you have to write a code 'executable' without breaking code if it fails, and defined once the game have build from superpowers. example:

I normally use a variable with a check before use it:

declare let window;
let ads = window.adProvider;
if(ads != null) {
  // Call your ad showing function (or whatever you need.)
}

Then build the game, and when making the code cordova-specific:

window.adProvider = YOUR_CORDOVA_PLUGIN_VARIABLE;

Now, if you havent work with cordova before. What i do is defining a variable when the event 'onDeviceReady' is called (which is before the superpowers game start to load) that way, when my game start 'window.adProvider' is already defined with some plugin variable (you should see the docs of the plugin you are using for better understanding of how to apply it here).

As a final thought this is a game i am developing where i use Superpowers, you could download it and see performance by yourself (is a work in progress, so if you have any bug, let me know).

For now, the easiest way i have found is using a white sprite on the scene (a 1px sprite), scale it to the size i need and change its color on the Sprite Renderer component properties.

Well, this days i have focus on bugfixs and ensure the game works perfectly before adding more definitive graphics, so far everything is great (all the known bugs are fixed) so there's time to start looking sounds.

Before i leave this small update, this is how will end player skins (locked to avoid any spoiler).

As far as i know he doesn't. But i will comment if he has any plan to do a blog or something about that.

Best way i know to modify size of the sprite is to change the scale of the actor with the spriteRenderer (considering that it would also scale its children). So the way to go would be:

X.setScale(1, 1, 1);

Where the scale will be in pixel units, if you have setting 64 pixel units and want the sprite to look like if it where 32 pixel unit then the scale might be 0.5. (dont take my word here, its what i imagine happen)

The other way is changing the pixel unit property on the sprite editor, that way the sprite will always render at the equivalent size.

(1 edit)

Ok, this is starting to look as a real game to me.

Right now the game has 6 maps with unique behaviors and 10 playable characters (7 of them must be unlocked), and i improved the achievement system, so now it is better looking than before.

I managed with a friend to upload an alpha apk to the Google Play Store, so if anyone wants to test the android version can test it here. about a release on itch i will wait until i have the original assets for the characters to upload a build.

So as before, i will leave with some of the new characters (there was a bug with the bomb guy but i didn't realized until the gif was uploaded).

Ok, i tried the project but i dont really see anything weird with the tiles, do your project look like this on your pc? i also tried using the tile i think you show on the first post but still not notice anything, here is how it shows to me.

Hey, your game look amazing! i also love the WarioWare serie, is there any plan on releasing a linux version?

4th day of devlog is here.

Ok, things are going great with the game, after i add the new maps (and solve a few bugs) i decided to add some new characters too, before i was waiting to for the new sprites, but that was a silly position i just need to write the proper code and when his sprite are ready, change them, so now there are 7 characters all with diferent types of attack (and of course you have to play a few games before unlock them).

On the other hand i was working on the android interface (sadly my phone was stolen recently so i'm kind of blind with sizes here) and realized i haven't asked here: how do you prefer move controls? right now i have 2 modes to move the character with touch screens, the classic directional pad and a sort of joystick, is there a preference already i am considering on leave both but still want to know whats usual here.

So now the things everyone is waiting for, more images of the game:

(1 edit)

Would you mind sharing your project or at least one with the specific problem? that way i can replicate the result and see if i can help.

3rd day of devlog.

Well people, i thought i wouldn't work on the game this weekend cause i have a few personal things to do but i was completely wrong.

I have modularized all the parts in the player behavior so now i have more control over the player inside the map and that means that now have a lot more options to do while working on the map effects, that said now there are 3 new maps (a game with 6 maps might still not sound like a big number) i am not going to say which are the effects but i can say the themes: Space, Ghost Mansion, Water. that surely gives a clue to the effects.

Also i worked on the GUI to show Achievements, maybe i will have to redo some part when i found the definitive sprite for the general GUI but this will work with the provisional GUI, so now you can see when you unlock something while playing.

Small bugfixes, tile collisions the normal thing never ends and there is still work to do on that but i thing i'm following a good path, so if everything go as expected for the next version (0.3.0 i hope) will have a demo version here on itch, so everyone reading this can test it and tell me what's their opinion or what can i change.

Thanks, and i'm glad to see that recreating games is a good path to start.

Well, 2nd day of Devlog.
There wasn't much changes today in the game itself, cause i found a friend who will help me with graphics!

So soon will have a unique style for the game, with that in mind i decided to spend the day polishing the mechanics of the game and improving some, an advise to beginners: Always consider possibilities while the code is written, if i wouldn't have done that, today i might be saying that i write the game from zero. And now a quick peek of the new main hero:


(2 edits)

Hello Everyone.

I decided to start the journey of game development by recreating some game i love, this time i decided to take Super Crate Box.

I have been working in the game for a few days, but decided to start the devlog today so people can tell me how are they feeling with the game, My first goal as i am learning is to create a clone of the original game and when is ready extend it with my own style, so i will stop the unnecessary introduction and get serious:

Technologies in use:

What is ready:

  1. Map template system, so i only have to draw the new maps to add them on the system.
  2. Skin list, which will determine current weapon.
  3. Enemy spawn, with random enemy types and custom behaviors.
  4. Unlock system, to determine goals to players and set rewards.
  5. Touch controls to support mobile devices.
  6. Custom map behavior, so each map can have a (un)pleasing surprise.

What is not ready:

  1. A better physics behavior, there's still an odd feeling while jumping.
  2. Saving highscore's.
  3. A definitive UI to move through menus.
  4. Multiplayer mode (but this will only be added if i have enough time).
  5. Improving game with original graphic assets and effects.

So the game at least for now will be an horizontal shoot'em up, where enemies will come from top of the map, and your objective will be collect all coins you can and survive, for me the Skins system is crucial on the game cause with every weapon the player has to change the way he/she move through the map, and that by itself adds an especial difficulty that i find special in the original game, additional i took inspiration on the megaman series (specially the X series) where some maps has special behaviors and that make me combine this to the original idea.

By now i can only show you a short gif but there will be a demo Available soon, hope to see people interest to test it soon ;)


Well, i haven't read the pacman tutorial but if you have this:

namespace Game {
export let Player : PlayerBehavior;
}

you need to assign the player in your behavior.

class PlayerBehavior extends Sup.Behavior {
awake() {
Game.Player = this; // This could have been done in the start() or anywhere.
}
}

And with that you can access all the public methods or variables in your behavior using (As a side note in typescript all methods and variables are public by default)

Game.Player.jump(); // Or any other method

I used to have the same error when tried to use electron, the solution so far was to create the electron window like this (readed from here). hope it helps

new electron.BrowserWindow({
  width: 800,
  height: 600,
  useContentSize: true,
  webPreferences: {
    nodeIntegration: false
  },
});

Any possibility your scene have an arcade body component? if true, your second method wont work cause you can't move an arcade body with .setPosition method, you would have to use warpPosition() method.

Well, i have never used OSX, but if you want to install a plugin manually you should have a folder structure similar to ~/Library/Application Support/Superpowers/systems/game/plugins and inside that create a folder structure like this name_of_author/name_of_plugin
Or if you want to use the official way, go to settings tab in superpowers app and will appear the list of plugin available for each system.

Superpowers uses CodeMirror editor widget, (not sure which plugins are active) but you can see there the default keymap for Vim, Emacs and Sublime Text bindings

Well, the log says it can't find SupEngine which is part of the Game System, so i will suggest you go to C:\Users\NABEEL\AppData\Roaming\Superpowers and inside that folder you should have some folders named core/ and systems/, delete those folders and reopen Superpowers so it can download the package again

As far as i know, that means there is no server running at your localhost on port 4237, if you are using the Superpowers App there is a message at the bottom left part of the app which can say Server starting/stopped/running. and two button next to that (start/stop and settings), so the first will be. Are you sure your server is running? if not, try to click the start button and if it doesn't work either, click on settings button it should open the settings page with a log that can help to see what is happening.

I have actually used the plugin in a few projects, and i wrote a small guide of use that you can find here https://github.com/SparedRay/superpowers-game-SparedRay-easystarjs-plugin (my version and ralmn's, which you are probably using are basically the same so you wont have to make any change). Hope it helps

Well, this is more a typescript question. What i normally do if i want to have some global variable/function is keep them in a separated namespace, for example:

namespace Game {
    export let Camera : Sup.Camera = Sup.getActor('Camera').camera;
}

And with that you could get the camera from any script, or change it if you want.

class PlayerBehavior extends Sup.Behavior {
    camera : Sup.Camera
    awake() {
        this.camera = Game.Camera;
        // Or if you want to change it.
        Game.Camera = this.actor.getChild('Camera').camera; // Assuming that its a camera.
    }
}

Now, if what you want is access a behavior variable from another class, you could do something like this:

// Yeah, i like using the Game namespace...
namespace Game {
    export let EnemiesB : EnemyBehavior[] = [];
}

class EnemyBehavior extends Sup.Behavior { name : string; awake() { Game.EnemiesB.push(this) } }

then, you could access all enemies related variables using a loop or something

class PlayerBehavior extends Sup.Behavior {
    awake() {
        for(let enemy of Game.EnemiesB) {
            Sup.log(enemy.name);
            // Again, you can change it here if you want
            enemy.name = "something";
        }
    }
}

Additionally to all this, Superpowers have a built-in function to access the behavior o a known actor, but it haven't worked for me so you will have to wait to someone else to explain that.

Hello, my name is Alfredo, I am from Venezuela. Personally i have little experience with the game industry but have been in the programming world for 5 years by now, so i'm really excited to begin the adventure of gaming with a growing engine.

My major flaw is the low experience i have with art, design and stuff like that, but i start working on improve my skills and build better games.