Spherical forums

User-Made => Projects => Topic started by: Hudell on August 17, 2014, 07:05:54 pm

Title: Rabbit Adventures
Post by: Hudell on August 17, 2014, 07:05:54 pm
This is a simple game I made in the last few days. I only built it to test sphere functions and stuff, not a big project or anything.

You can use the arrow keys to move the rabbit around, the R key to restart a stage and space to talk/examine.

www.hudell.com/downloads/rabbit.spk (http://www.hudell.com/downloads/rabbit.spk)
Title: Re: Rabbit Adventures
Post by: Radnen on August 17, 2014, 08:14:57 pm
I played the game and I must say it does not compare to Skyrim.... Kidding! :P

It's a great tech demo and I have not much else to say than to keep up the good work and try to implement more features. Try doing more menu related things like inventory or loading and saving. That's always a tricky area to get right.

That said the platforming, another tricky thing to pull off on Sphere is not that bad. I think the falling is a tad too fast, but otherwise there definitely is potential there. I even loved the fact you were able to run a collision with the radioactive bunny. Your next step there is to damage the player or instead have the player collect coins or something of the sort. In any case it's feeling good, which is a good thing to have.

Also, nice Guardians Groot cameo. :)
Title: Re: Rabbit Adventures
Post by: Hudell on August 17, 2014, 09:20:49 pm

That said the platforming, another tricky thing to pull off on Sphere is not that bad. I think the falling is a tad too fast, but otherwise there definitely is potential there. I even loved the fact you were able to run a collision with the radioactive bunny. Your next step there is to damage the player or instead have the player collect coins or something of the sort. In any case it's feeling good, which is a good thing to have.


Yep, right now I'm working on the coins and making the collision with the bunny a little better.
I will work on the menus and sound later.

Thanks for playing it.

edit: Updated collision and added collectable carrots.
edit2: Added simple score system
Title: Re: Rabbit Adventures
Post by: Hudell on August 21, 2014, 12:36:36 am
Updated the game with menus, sound, life, collectibles, a simple score system, a few more stages and a good improvement on the collision system.

I will probably have the game completed by the end of the week, then I will post the source code here too.

http://hudell.com/downloads/rabbit.spk (http://hudell.com/downloads/rabbit.spk)
Title: Re: Rabbit Adventures
Post by: Radnen on August 21, 2014, 01:25:05 am
I have to say I rather enjoyed the platforming, it feels much better now. I especially like the enemies they seem to work very well, jumping around and being a general nuisance.

I made a platformer called Adventureland, and you make me want to continue work on it. I was able to get slopes working, so that's something interesting you can try next. A timer would be nice too! And I didn't hear any music or sound effects, there are some free online resources that you can use.

It's coming along very nice. Do you have graphics for the game? I might be able to draw you some stuff but I don't know if those levels are your final designs or not, or if you are scoping for other tiles. Other than that you are doing very well and showing quick mastery over Sphere's Map Engine which is not the easiest beast to learn - especially for platforming games!
Title: Re: Rabbit Adventures
Post by: Hudell on August 21, 2014, 09:48:26 am

I made a platformer called Adventureland, and you make me want to continue work on it. I was able to get slopes working, so that's something interesting you can try next. A timer would be nice too! And I didn't hear any music or sound effects, there are some free online resources that you can use.

It's coming along very nice. Do you have graphics for the game? I might be able to draw you some stuff but I don't know if those levels are your final designs or not, or if you are scoping for other tiles. Other than that you are doing very well and showing quick mastery over Sphere's Map Engine which is not the easiest beast to learn - especially for platforming games!

Strange, the music and sound effects are working fine here.
I'm using rpg maker assets, I bought a package of resources a while ago and I have plenty of stuff to use.

I'm actually findind sphere to be really easy, compared to some frameworks I've used in the past. My only problem with it right now is that it only runs on windows.
Is there a working version of any sphere variation for mac?
Title: Re: Rabbit Adventures
Post by: Flying Jester on August 21, 2014, 02:31:33 pm
Long story short, Sphere on OS X is not a ridiculous idea, but right now it doesn't work on modern Macs.

Rahkiin and I have both made attempts to get Sphere working on Mac (again, already it did long ago). It's fairly close, (http://forums.spheredev.org/index.php/topic,155.msg4994.html#msg4994) but the biggest issue is that only Rhuan really understood the Mac code. Rahkiin is/was trying to modernize that part of Sphere. I was just trying to find a combination of the Mac code and the Unix/Linux code that would work on OS X.

Sphere is known to work well on older OS X, though. Somewhere abouts Tiger, and I've personally confirmed it works on Mac OS X 10.3 Panther.

Sphere does work quite well on Linux, though (but no sound on modern Linux). I expect it would work pretty easily on all manner of proper Unix, as well.
Title: Re: Rabbit Adventures
Post by: Hudell on August 21, 2014, 02:46:08 pm

Long story short, Sphere on OS X is not a ridiculous idea, but right now it doesn't work on modern Macs.

Rahkiin and I have both made attempts to get Sphere working on Mac (again, already it did long ago). It's fairly close, (http://forums.spheredev.org/index.php/topic,155.msg4994.html#msg4994) but the biggest issue is that only Rhuan really understood the Mac code. Rahkiin is/was trying to modernize that part of Sphere. I was just trying to find a combination of the Mac code and the Unix/Linux code that would work on OS X.

Sphere is known to work well on older OS X, though. Somewhere abouts Tiger, and I've personally confirmed it works on Mac OS X 10.3 Panther.

Sphere does work quite well on Linux, though (but no sound on modern Linux). I expect it would work pretty easily on all manner of proper Unix, as well.


That's good to hear. If I can help with anything, I'll be happy to.

And what do I need to do to run the engine on linux?
Title: Re: Rabbit Adventures
Post by: Flying Jester on August 21, 2014, 03:45:21 pm
Chances are, there will be a few minor issues that will crop up, but the general it should work  as documented on the Sphere 1.6/1.6 engine thread (http://forums.spheredev.org/index.php/topic,155.msg3960.html#msg3960). You will need the Sphere, Corona, and Audiere sources from my github repos, and libjs 1.7  (http://ftp.mozilla.org/pub/mozilla.org/js/)(I said 1.5 in the thread, either will work, 1.7 is better).
Title: Re: Rabbit Adventures
Post by: Hudell on August 21, 2014, 04:02:44 pm

Chances are, there will be a few minor issues that will crop up, but the general it should work  as documented on the Sphere 1.6/1.6 engine thread (http://forums.spheredev.org/index.php/topic,155.msg3960.html#msg3960). You will need the Sphere, Corona, and Audiere sources from my github repos, and libjs 1.7  (http://ftp.mozilla.org/pub/mozilla.org/js/)(I said 1.5 in the thread, either will work, 1.7 is better).


Thanks, I will try it tonight.

One more thing: I have a friend that got interested in sphere after seeing my game, but he wants to publish his games on steam.
Searching for Steam in the forums, I found this message:


I intentionally do NOT use any code directly from Sphere, but that's because I want TurboSphere to be BSD/Zlib licensed. The exact reasoning is so that you could integrate the steam API library into a plugin, and sell such games on steam. The idea being that Valve might be more discerning than I am about the license of Sphere, especially since I plaster the name `Sphere RPG Engine' over all of the TS documentation and provide links about it.

Of course, since I do not take any code from it at all, TurboSphere tends to support less than Radnen's projects do, like only reading the newest versions of the Sphere resources. My tools also tend to make ever so slightly malformed or strangely formatted resources--my SPK editor makes hard to decode SPKs, with the file map at the end instead of the start, for instance, and my ttf-to-rfn converter makes rfn files that contain tons of extra blank characters.

So I guess that's what happens when you don't borrow code =P


And by that I assume that it's not possible to publish sphere games on Steam, right?
How is the work on TurboSphere going?
Title: Re: Rabbit Adventures
Post by: Flying Jester on August 21, 2014, 04:19:35 pm
I'm not 100% sure about how the Steam process works. I am under the impression that you need to do...something with their SDK, and that it is difficult to do or can't be done with GPL'd engines.

TurboSphere is coming along! It now works quite nicely on OS X, even has native retina support. It has a new graphics API, but I'm adding wrappers to make the old API (mostly) work. Still lots of API not done yet, though  :D
Title: Re: Rabbit Adventures
Post by: Hudell on August 21, 2014, 05:16:41 pm

I'm not 100% sure about how the Steam process works. I am under the impression that you need to do...something with their SDK, and that it is difficult to do or can't be done with GPL'd engines.

TurboSphere is coming along! It now works quite nicely on OS X, even has native retina support. It has a new graphics API, but I'm adding wrappers to make the old API (mostly) work. Still lots of API not done yet, though  :D


Do you have any simple game running on it?
I tried to make Rabbit Adventures run on TurboSphere and got this error on function ChangeMap:

Quote

Warning: Tileset has irregular BPP of 0. Crashes will almost certainly follow.
Title: Re: Rabbit Adventures
Post by: Flying Jester on August 21, 2014, 05:19:03 pm
Wow, that must be a pretty ancient version of TurboSphere!

TurboSphere lost its map engine a while ago. It'll have on again, at some point in the future.

Additionally, it hasn't had a Windows release in a very long time.
Title: Re: Rabbit Adventures
Post by: Radnen on August 21, 2014, 09:27:36 pm
Sphere shouldn't be under GPL anymore we gotta get that changed. I'm sure AegisKnight (the creator of Sphere) wouldn't mind if it was changed to something like Free BSD or MIT. The old codebase is so ancient that nobody would necessarily care if portions of its code were 'stolen'. Plus it'll clear up any legal issues with using the filetypes of Sphere in more modern implementations and licensing issues with commercialization and steam.

The sounds and music don't tend to play when you package the game as a .spk. I don't know why exactly, but in any case when you make an official release it's good to replace the files in the startup folder and repackage just the engine.exe as a standalone product. Even under GPL you can do this.

Also, I think steam is possible. I think there are quite a few RPGMaker games, such as To the Moon, and it is a closed source engine made in the early 00's so I think steam can support games like that.
Title: Re: Rabbit Adventures
Post by: Hudell on August 21, 2014, 10:04:58 pm

Wow, that must be a pretty ancient version of TurboSphere!

TurboSphere lost its map engine a while ago. It'll have on again, at some point in the future.

Additionally, it hasn't had a Windows release in a very long time.

Oh. That was it then.
I've now been trying to build TurboSphere on linux but V8 is giving me a hard time.


Sphere shouldn't be under GPL anymore we gotta get that changed. I'm sure AegisKnight (the creator of Sphere) wouldn't mind if it was changed to something like Free BSD or MIT. The old codebase is so ancient that nobody would necessarily care if portions of its code were 'stolen'. Plus it'll clear up any legal issues with using the filetypes of Sphere in more modern implementations and licensing issues with commercialization and steam.

Also, I think steam is possible. I think there are quite a few RPGMaker games, such as To the Moon, and it is a closed source engine made in the early 00's so I think steam can support games like that.


That's good to hear.
I honestly don't know much about licenses, so I don't know what I can and what I cannot do with it.
Can someone talk to AegisKnight? From what I remember he was hardly around 7 years ago.

I also ran the game using Sphere-sfml earlier today, it managed to open the game package and run the game without crashing, with just a few things not working properly.
Title: Re: Rabbit Adventures
Post by: Flying Jester on August 21, 2014, 10:09:32 pm

Sphere shouldn't be under GPL anymore we gotta get that changed. I'm sure AegisKnight (the creator of Sphere) wouldn't mind if it was changed to something like Free BSD or MIT. The old codebase is so ancient that nobody would necessarily care if portions of its code were 'stolen'. Plus it'll clear up any legal issues with using the filetypes of Sphere in more modern implementations and licensing issues with commercialization and steam.


Well, it's more than just Chad Austin (AegisKnight), though. We'd have to find Flikky/Brian Robb (possible), DarkLich, DRosen, and several others (ranging from difficult to impossible) who contributed large amounts to Sphere to relicense it. Although it doesn't really matter if we follow Sphere's GPL at this point, it would probably matter to a company like Steam.


The sounds and music don't tend to play when you package the game as a .spk. I don't know why exactly, but in any case when you make an official release it's good to replace the files in the startup folder and repackage just the engine.exe as a standalone product.


It's because Audiere doesn't properly support streaming for all audio types (which would let you just feed it data from the SPK), and Sphere doesn't buffer the whole SPK or even individual files out of it to let Audiere statically sample the sound.

EDIT: Wow, ninja'd.

Are you using the Github version of TurboSphere? There should be a travis.yml file that gives an example of how to build Sphere, SDL2 (when not available from the package manager), and V8 from scratch.

Fair warning, do NOT expect the entire Sphere 1.x API (or even half of it) to work in TurboSphere. Sphere-SFML is a much better option for directly migrating from Sphere 1.x.

I've talked to Chad Austin in the past. But we'd need more than just his approval.
Title: Re: Rabbit Adventures
Post by: Hudell on August 21, 2014, 10:31:33 pm

Are you using the Github version of TurboSphere? There should be a travis.yml file that gives an example of how to build Sphere, SDL2 (when not available from the package manager), and V8 from scratch.

Yes, but I was following just the readme file instructions.


Fair warning, do NOT expect the entire Sphere 1.x API (or even half of it) to work in TurboSphere. Sphere-SFML is a much better option for directly migrating from Sphere 1.x.

I know, and I had already changed some stuff to be compatible with TurboSphere. I even managed to have everything working up until the MapEngine call on that old windows version
Title: Re: Rabbit Adventures
Post by: Radnen on August 22, 2014, 12:29:46 am
My latest version of Sphere-SFML is a lot better. I would love to try your game out on it to see what crashes or not. It's map engine is like 75% done right now, and so can therefore support a vast majority of games that do not do weird things like rotating layers or using layer reflections and parallaxation (the latter two would just not show, thus not breaking your game, but not emulating it correctly either).
Title: Re: Rabbit Adventures
Post by: Hudell on August 22, 2014, 12:48:41 am
Rabbit Adventures is now on github: https://github.com/Hudell/rabbit-adventures

I tried to keep everything in english, but if I missed anything, just let me know.

And there's also this: https://github.com/Hudell/euphoria

Euphoria is like a framework I created while developing this simple game.
It's basically a bunch of classes to keep the game better organized.

It works by separating the game in "flows" ( In retrospect, this might not have been the best name to give to it).
Each flow class is responsible for managing one part of the game. In rabbit adventures, there's 3 (https://github.com/Hudell/rabbit-adventures/tree/master/scripts/content/flow): Launch, MapEngine and GameOver.

Then, in the main script file of the game, all you need to do is this:
Code: (javascript) [Select]

RequireScript("euphoria/loader.js");
RequireScript("content/flow/Launch.js");

function game()
{
mainGame.startGame(new LaunchFlow());
}


the "Launch" flow draws the start menu and background. When the user selects the "Start" option, it moves to a new flow class:
Code: (javascript) [Select]

RequireScript("content/flow/Map.js");
mainGame.moveToNewFlow(new MapFlow());


and this one is responsible for everything that happens while the MapEngine is running.

All game files are organized in five folders:


The AI folder holds different Artificial Intelligence classes, used for the enemies and objects. The "Swirl" AI is used to keep objects changing direction. I use it to animate crystals and hearts.

I won't be talking about items for now because I didn't really use it on rabbit adventures and it may not be working anymore. I had just started an inventory and item class before starting the sample game.

Maps are classes responsible for handling the different maps on the game. You create one different class for each map and use it to configure the objects and events of the map.
Code: (javascript) [Select]

RequireScript("euphoria/classes/Map.js");

function Map2Class() {
var me = this;

me.superClass = MapClass;
me.superClass("map2.rmp");
me.twoDimensional = true;

me.doInitialize = function()
{
me.createObject("crystal2", "Crystal").flagName = 'stage2';
me.createBatchOfObjects("redball", "Ball", 90);
me.createBatchOfObjects("heart", "Heart", 2);
me.createObject("carrot2", "Carrot");
};

me.doFirstFrame = function()
{
var playerObject = mainGame.globalDb.getObject("playerObject");
mainGame.player.setPerson(playerObject);
};
}

mainGame.globalDb.registerMapClass("Map2", Map2Class);


Objects are responsible for controlling the sphere entities.
Code: (javascript) [Select]

RequireScript("euphoria/classes/Person.js");

function GrootClass(name) {
var me = this;

me.superClass = PersonClass;
me.superClass(name);

me.onTalk = function()
{
me.speak("I AM GROOT", null, me);
};
}

mainGame.globalDb.registerObjectClass("Groot", GrootClass);


Code: (javascript) [Select]

RequireScript("euphoria/classes/MovableObject.js");

function HeartClass(name) {
var me = this;

me.superClass = MovableObjectClass;
me.superClass(name);

me.obeyGravityLaws = false;
me.setAi("Swirl");

me.onTouch = function(){
mainGame.player.addLives(1);
me.destroyEntity();
};
}

mainGame.globalDb.registerObjectClass("Heart", HeartClass);


The Object class has some events to be inherited:
onTalk = sphere's onTalk script
onTouch = fired by Euphoria when it detects the player touched the object
onUntouch = fired when the player is no longer touching the object


And there's more. I'll write more about it some other time.
Title: Re: Rabbit Adventures
Post by: N E O on August 22, 2014, 04:14:48 pm
Regarding Sphere's license, I believe the reason it was previously set to GPL was to prevent Tivo-ization of the engine itself but still allow users to legally create commercial projects. I do understand the desire to make it more libre to, among other things, increase interest in working on the code of the engine itself and make it easier (at least, philosophically and legally) to fix issues more quickly.

The question of changing Sphere's license to a more open one like BSD or MIT has been brought up a few times over the years, at least one of those was within the 2014 calendar year, but usually a more senior engine dev was actually around to give their opinion on it. Getting approval to change the license would likely involve at a minimum the following people:

If tie-breaking opinions are needed after that, then alpha123, Jester, Radnen, and Rahkiin shall provide them as they've contributed (however major or minor) to the progress of the official engine most recently.

RPG Maker is a different beast from Sphere altogether. From the beginning it had different goals from Sphere - commercial in scope and nature, a closed-source editor, initially limited possibilities for creation (until the introduction of editable Ruby scripts), and single-OS (Windows) binary packaging of final product. Sphere was GPL'ed in an attempt to be open on all sides without being nearly as limited (which was mostly successful) and also force useful direct engine changes to be provided freely to be folded back into the main source as needed. Commercial possibilities for the engine are still theoretically available, but no one has so far provided evidence of successfully attempting such. Modifying the engine itself to be Steam-capable wouldn't require inclusion of the Steam SDK itself into Sphere's source, but would require the direct edits to the Sphere engine that allow Steam integration to be provided back to us free of charge and that code (or whatever edits it may need to generalize it) would theoretically be owned by the Sphere engine project from then on.
Title: Re: Rabbit Adventures
Post by: Radnen on August 22, 2014, 07:40:41 pm
Hudell, sweet, your code rocks! It's some of the best code I've seen for a Sphere game. Euphoria is kinda like my RadLib (https://github.com/Radnen/radlib) library as in it tries to make Sphere games easier.

Instead of Flows, though I use GameStates and a GameState Manager. This is how a lot of big indie games are made. There are also scene managers for larger games, but my RadLib library does not have a scene manager (yet). A GameState is similar in concept to your Flow concept. My GameStates in basic form, live on a stack. GameStates are things like menus or even actual gameplay. They are pushed on to the stack when required and then popped off when finished. This organizational detail can be used to great affect. Now, all game states have separated render and update loops. This is critical for two reasons: 1, input only works on the top-most state, and 2, it's not process intensive. However, the render loop runs for all states at all times. Now, you may want to have background states update too and that is also a possibility, they just need to be set to update anyways if not top-most and the GameState Manager will try to detect and run those, but generally this is only useful for pure effect states and not input states.

And then I have a lot of other scripts for just making coding in general easier. As of note, my Link.js library in particular can help you write game loop logic and other computational things for your game while still being pretty fast (In Chrome it's exceptionally fast). /shameless-plug

How long have you been programming JS? I seems to me you are very good at it, and so... where were you 7 years ago? :P The community has died down a lot since then and hopefully with code like yours we can attract more people to use Sphere. Can you tell me what parts you do not like or had to work around? Anything frustrating? Because while Sphere itself won't change anytime soon, my engine and Jester's engine are still in constant flux.
Title: Re: Rabbit Adventures
Post by: Hudell on August 22, 2014, 09:06:48 pm

Hudell, sweet, your code rocks! It's some of the best code I've seen for a Sphere game.

8)


Instead of Flows, though I use GameStates and a GameState Manager. This is how a lot of big indie games are made. There are also scene managers for larger games, but my RadLib library does not have a scene manager (yet). A GameState is similar in concept to your Flow concept. My GameStates in basic form, live on a stack. GameStates are things like menus or even actual gameplay. They are pushed on to the stack when required and then popped off when finished. This organizational detail can be used to great affect. Now, all game states have separated render and update loops. This is critical for two reasons: 1, input only works on the top-most state, and 2, it's not process intensive. However, the render loop runs for all states at all times. Now, you may want to have background states update too and that is also a possibility, they just need to be set to update anyways if not top-most and the GameState Manager will try to detect and run those, but generally this is only useful for pure effect states and not input states.

That really seem like a better way of doing it. I initially thought about using a flow for the menus too, but I hadn't thought about stacking them and ended up doing it differently.
I guess I will switch to this GameState concept too.


And then I have a lot of other scripts for just making coding in general easier. As of note, my Link.js library in particular can help you write game loop logic and other computational things for your game while still being pretty fast (In Chrome it's exceptionally fast). /shameless-plug

Nice! I will check your code out. I had noticed you had made Radlib and that it was similar to Euphoria when I was midway through it, but haven't checked it yet.


How long have you been programming JS? I seems to me you are very good at it, and so... where were you 7 years ago? :P The community has died down a lot since then and hopefully with code like yours we can attract more people to use Sphere.

I first used sphere in the first quarter of 2006, that was just a few weeks before I got my first real job as a programmer. At the time, I only used Delphi and knew next to nothing of javascript. I worked as a Delphi and/or PHP programmer until 2011, when I got my current job where sometimes I wake up not knowing what language I will use that day. I've used a lot of javascript in the last two years, on a few projects based on ExtJS (http://www.sencha.com/products/extjs/).


Can you tell me what parts you do not like or had to work around? Anything frustrating? Because while Sphere itself won't change anytime soon, my engine and Jester's engine are still in constant flux.

One thing that comes to mind is that I didn't find any way to get the map's Entry Point float position through script.
And the old version of javascript sometimes may end up being a limitation, but for now I've been able to work around it.
Title: Re: Rabbit Adventures
Post by: Radnen on August 23, 2014, 01:14:07 am
Ext.js seems to be like Angular in a way. Angular.js added dependency injection which is sweet since I'd love to see that implemented in a Sphere game. I was able to do a quick dependency injection demo in Sphere, but it was hackish. Unfortunately Sphere's JS makes it harder to do neat things with the prototype object.


One thing that comes to mind is that I didn't find any way to get the map's Entry Point float position through script.
And the old version of javascript sometimes may end up being a limitation, but for now I've been able to work around it.


There are a lot of things like the entry point you can't access. This is a limitation that can hopefully be fixed in newer editions of Sphere. My SphereSFML implements Javascript 1.6 (ECMAScript v5.1), and so has the newer features like Array.forEach and the strict mode.

One thing I hated about sphere is that Load* methods do not return proper JS objects. Even CreatePerson is not an object. It'd be neat to natively have this in Sphere:

Code: (javascript) [Select]

var person = CreatePerson("name", "ss.rss", false);
person.talk = function() {
    Msg.show("Hi! I am " + this.name + " how do you do?");
}

// later...

person.talk();


To do that today you'd have to create your own JS wrappers for such objects. But even then, for LoadImage you were not allowed to extend it in any way. In my SphereSFML, you can extend it since now all resources are proper JS objects.

... wait a minute...

You were Slack0228 (or something like that)? The guy who wanted to create a code editor for Sphere? If so it was you who encouraged me to make a proper Sphere Editor (which you can check out and download). In fact I exclusively use my new editor, have not touched the old editor in a very long time (I only use it if I'm doing something that I hadn't implemented yet).
Title: Re: Rabbit Adventures
Post by: Hudell on August 23, 2014, 01:58:04 am

There are a lot of things like the entry point you can't access. This is a limitation that can hopefully be fixed in newer editions of Sphere. My SphereSFML implements Javascript 1.6 (ECMAScript v5.1), and so has the newer features like Array.forEach and the strict mode.

One thing I hated about sphere is that Load* methods do not return proper JS objects. Even CreatePerson is not an object. It'd be neat to natively have this in Sphere:

Code: (javascript) [Select]

var person = CreatePerson("name", "ss.rss", false);
person.talk = function() {
    Msg.show("Hi! I am " + this.name + " how do you do?");
}

// later...

person.talk();


To do that today you'd have to create your own JS wrappers for such objects. But even then, for LoadImage you were not allowed to extend it in any way. In my SphereSFML, you can extend it since now all resources are proper JS objects.


Yes :/
I used wrappers in Euphoria, it would be so much better if I could work directly with native objects.


... wait a minute...

You were Slack0228 (or something like that)? The guy who wanted to create a code editor for Sphere? If so it was you who encouraged me to make a proper Sphere Editor (which you can check out and download). In fact I exclusively use my new editor, have not touched the old editor in a very long time (I only use it if I'm doing something that I hadn't implemented yet).

Yes, my username was Slack2028, but my signature had the name "Flick Hudell" with this image:
(http://3.bp.blogspot.com/-cNCypE2fQCE/UMpcN4B50TI/AAAAAAAAAHM/Y5G5-PygmC0/s400/xenogears-sig-2.jpg)

And it is amazing to know this. I still want to switch to Sphere Studio, but lately I've only been working on the scripts, and for that I use Sublime Text Editor.
Title: Re: Rabbit Adventures
Post by: Hudell on August 26, 2014, 11:43:09 am

Instead of Flows, though I use GameStates and a GameState Manager. This is how a lot of big indie games are made. There are also scene managers for larger games, but my RadLib library does not have a scene manager (yet). A GameState is similar in concept to your Flow concept. My GameStates in basic form, live on a stack. GameStates are things like menus or even actual gameplay. They are pushed on to the stack when required and then popped off when finished. This organizational detail can be used to great affect. Now, all game states have separated render and update loops. This is critical for two reasons: 1, input only works on the top-most state, and 2, it's not process intensive. However, the render loop runs for all states at all times. Now, you may want to have background states update too and that is also a possibility, they just need to be set to update anyways if not top-most and the GameState Manager will try to detect and run those, but generally this is only useful for pure effect states and not input states.


Changes in Euphoria:


ScriptManger:
It allows functions like BindKey and SetDelayScript to receive a function reference instead of an string. I made it completely independent of Euphoria.

Changes in the game:


Game downloadable here:
http://hudell.com/downloads/rabbit.zip (http://hudell.com/downloads/rabbit.zip)
Title: Re: Rabbit Adventures
Post by: Hudell on December 18, 2014, 06:43:00 am
I haven't updated this since august because I've been working in a different project: http://orangeseasongame.com/
Rabbit Adventures was just a way to "test the waters" for Orange Season. I ended up not using Sphere for that one because I was concerned with the license, as I hope to be able to sell the game on steam at some point, but I still want to develop something like that on sphere one day.

The game is being made with RPG Maker Vx Ace as a map engine, but I'm doing everything through scripts (It already has over 25k lines of scripts). It is a farm simulation game inspired by the harvest moon series. There's a lot of stuff done, even though the maps are still raw and my english translation is bad.

So if anyone feels like checking it, it would mean a lot to me :D
Title: Re: Rabbit Adventures
Post by: Fat Cerberus on December 18, 2014, 08:15:46 am
Looks awesome, but does Steam even accept RPG Maker games?  Not that VX Ace isn't awesome (discounting that it's long overdue for a resolution bump), but it seems like it might be considered too amateurish for a platform like Steam.  I'm not Valve though, so who knows.
Title: Re: Rabbit Adventures
Post by: Hudell on December 18, 2014, 08:18:58 am

Looks awesome, but does Steam even accept RPG Maker games?  Not that VX Ace isn't awesome (discounting that it's long overdue for a resolution bump), but it seems like it might be considered too amateurish for a platform like Steam.  I'm not Valve though, so who knows.

If the game is greenlit by the community, they accept it. I've seen a few in there already.
Title: Re: Rabbit Adventures
Post by: Flying Jester on December 18, 2014, 11:02:48 am
My understanding is that as long as your game uses a few bits of the Steam SDK, anything engine-wise is fine. I think there is a dynRPG plugin that does that for RM?
Title: Re: Rabbit Adventures
Post by: DaVince on December 18, 2014, 05:37:55 pm

My understanding is that as long as your game uses a few bits of the Steam SDK, anything engine-wise is fine. I think there is a dynRPG plugin that does that for RM?

You don't even need to use the Steamworks SDK (see this FAQ (http://steamcommunity.com/workshop/about/?appid=765&section=faq#steamworks)), but it's there for you to enhance your game if you do.
Title: Re: Rabbit Adventures
Post by: Hudell on December 18, 2014, 08:57:48 pm

You don't even need to use the Steamworks SDK (see this FAQ (http://steamcommunity.com/workshop/about/?appid=765&section=faq#steamworks)), but it's there for you to enhance your game if you do.


That's basically it, but it will still take me a couple of months to even try to put my game there. There's a lot to do before that.
And I thought I would have way more limitations with RPG Maker than I actually have. Other than the resolution, I don't think there has been anything I really couldn't do until now.
Title: Re: Rabbit Adventures
Post by: Fat Cerberus on December 18, 2014, 11:16:02 pm
RM uses such an odd resolution, doesn't it?  They didn't even go with the standard 640x480, it's something really weird like 534x400 or such.  Most modern graphics cards don't even support it natively and the game ends up being windowboxed.
Title: Re: Rabbit Adventures
Post by: Hudell on December 19, 2014, 06:02:59 am
Yes, even though you can change the resolution using scripts, there's a limit to that too.

I ended up decreasing the height of the window to get a 16:9 aspect ratio and then I stretched it to full screen, it doesn't look that bad.

There's a hacked DLL out there that removes the limitation and Enterbrain allow us to use it, but it hasn't been very widely tested yet.
Title: Re: Rabbit Adventures
Post by: Hudell on December 21, 2014, 02:13:41 am
Just broke the resolution limit.

(http://hudell.com/imagens/orange/Resolucao.png)

It's running at 7 FPS though.
Title: Re: Rabbit Adventures
Post by: Fat Cerberus on December 23, 2014, 12:09:18 am
7 FPS, wow, that's bad for 720p on modern hardware with only 2D tile-based graphics.  My guess is RM is doing most, if not all of its rendering in software, so you end up taking a massive performance hit at high resolutions.

It certainly looks nice, though! :)
Title: Re: Rabbit Adventures
Post by: Radnen on December 23, 2014, 02:38:57 am
Even then, in Sphere under it's software driver, it never reaches 7fps on large maps. So something tells me that they are using an highly un-optimized high level language like Ruby to do the drawing entirely in software. I couldn't see C/C++ being that slow, unless their algorithms are just plain bad. (No tile caching, animation caching, viewport clipping etc.)
Title: Re: Rabbit Adventures
Post by: Hudell on December 23, 2014, 05:49:33 am
It's seems there's a bug in RPG Maker Vx Ace that, if you have a "common event" running, you have to put a sleep command on it or it can cause a serious FPS drop. That 7 FPS thing was probably because of that.
I also heard there's something wrong with their Bitmap implementation and that "writing text directly on the screen" is one of the slowest things in RM.

Anyway, I'll try a high resolution again later.

Title: Re: Rabbit Adventures
Post by: Flying Jester on December 23, 2014, 03:53:10 pm
Having spent a bit of time in the RMN community, I've come to the conclusion that RM is just not well optimized. 99% of the effort in RM goes into marketing, the other 1% into the editor.

There really are reasons that I consider it a silly and unsophisticated engine.
Title: Re: Rabbit Adventures
Post by: Hudell on December 23, 2014, 04:18:51 pm

Even then, in Sphere under it's software driver, it never reaches 7fps on large maps. So something tells me that they are using an highly un-optimized high level language like Ruby to do the drawing entirely in software. I couldn't see C/C++ being that slow, unless their algorithms are just plain bad. (No tile caching, animation caching, viewport clipping etc.)


It seems it is all in Ruby:
http://forums.rpgmakerweb.com/index.php?/topic/34900-windows-81-downgrade/?p=345078