Differences between RGSS and Zer0 RGSS

Started by Blizzard, September 14, 2011, 03:21:04 pm

Previous topic - Next topic

Blizzard

September 14, 2011, 03:21:04 pm Last Edit: May 20, 2012, 06:08:01 pm by Blizzard
Differences between RGSS and Zer0 RGSS


This is a list of things that are different in Zer0 RGSS than they are in RMXP's RGSS. The reasons vary. Some are removed bugs, some are additional features and some are limitations on a whole different level, because RMXP's RGSS was made using DirectDraw while Zer0 RGSS uses DirectX 9 with 3D acceleration to render faster and better.


  • Only Kernel#p calls a message box. Kernel#print and Kernel#puts write to the log file only.

  • Crashes and errors are always printed with a whole trace stack unlike RMXP's RGSS where only the error is displayed.

  • Text rendering in general works differently which means that text will look notably different in Zer0 RGSS.

  • When using Bitmap#blt and Bitmap#stretch_blt, the alpha blending operation when combining colors is not calculated in the same way and can result in different colors.

  • The last and optional align argument in Bitmap#draw_text supports additional modes: 3 for left-aligned-wrapped, 4 for center-aligned-wrapped, 5 for right-aligned-wrapped, 6 for justified.

  • When using Bitmap#draw_text and the text does not fit into the given line (and the alignment is not a wrapped one), it will be cut off and instead of being squeezed.

  • Bitmap#new(width, height) with a negative height does not work (since RGSS had that bug).

  • When iterating through an array or a hash, Ruby will cause an error if the given array or hash is being modified during the iteration.

  • MIDI files are not supported.

  • mp3 files are not supported.

  • FLAC files will be supported.

  • ALT+Enter switching of fullscreen/windowed mode does not work yet. The screen mode has to be specified before running in arc.cfg.

  • ARC can run at 60 FPS, but also allows FPS limitation.

  • Graphics#frame_reset does nothing as ARC properly syncs frames even after Graphics#freeze was called.

  • Tileset#flash_data is not implemented as it does nothing in RGSS anyway.

  • In RGSS it is possible to assigned extremely high and low values for certain variables. The variables will be converted to Ruby's Bignum so there is no problem about that. Zer0 RGSS keeps all variables internally as C++ data types. This means that there are limits. Since most integer values are "int" in Zer0 RGSS, this means that the min and max values are -2147483647 and 2147483648. See Appendix 1 for more information.

  • The Audio module has additional methods:
    Audio#bgm_pause: pauses BGM
    Audio#bgm_resume: resumes paused BGM
    Audio#bgs_pause: pauses BGS
    Audio#bgs_resume: resumes paused BGS
    Audio#me_pause: pauses ME
    Audio#me_resume: resumes paused ME

  • The Graphics module has additional methods:
    Graphics#capture: get screenshot as Bitmap
    Graphics#width: get window width
    Graphics#height: get window height






Appendix 1:

If you tried setting a z coordinate to a value higher or lower than the limit, RGSS will allow it while Zer0 RGSS will have unpredictable behavior. This "problem" could be "fixed", but C++ data is faster to process as Zer0 RGSS is internally fully implemented in C++ so keeping some values in Ruby format would require lots of conversions and would slow down the engine. Imposing reasonable limits such as these is a small price to pay for better performance, hence this will not be "fixed".
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

zenvirzan

'3 for left-aligned-wrapped, 4 for center-aligned-wrapped, 5 for right-aligned-wrapped, 6 for justified'

. . .

Am I dreaming? YOU LEGENDS

Blizzard

October 10, 2011, 04:39:04 am #2 Last Edit: October 10, 2011, 04:40:05 am by Blizzard
It's supported by the underlying library ATRES so I figured why not expose these functions to RGSS as well. xD
The same thing goes for this stuff:

Quote from: Blizzard on September 14, 2011, 03:21:04 pm

  • The Audio module has additional methods:
    Audio#bgm_pause: pauses BGM
    Audio#bgm_resume: resumes paused BGM
    Audio#bgs_pause: pauses BGS
    Audio#bgs_resume: resumes paused BGS
    Audio#me_pause: pauses ME
    Audio#me_resume: resumes paused ME

  • The Graphics module has additional methods:
    Graphics#capture: get screenshot as Bitmap
    Graphics#width: get window width
    Graphics#height: get window height


Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

zenvirzan

the RM community will praise you for the addition of the pause and resumes :)
I, for one, get frustrated with my ABS battle bgm player, how every time you encounter (or in this case, walk near) an enemy, the battle song will start from the beginning every single time. More annoying then it is epic :\

Spaceman McConaughey


zenvirzan

Oggs are a perfect, if not better replacement for mp3s.
Isn't there a licence you have to purchase to incorporate mp3s into the engine legally, too?

I'm worried about the MIDIs.
WE NEED THEM :(

Blizzard

MIDIs will definitely be implemented, don't worry about that. That's why "currently" is underlined.

@Tuggernuts: I made this thread here public now: http://forum.chaos-project.com/index.php/topic,9612.0
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

zenvirzan

  If WHEN you implement MIDIs, please, please implement the reverb effect, much like RMXP/VX does. It may be tricky, but it brings MIDIs out, and really makes them songs, not just notes :) Much like when you listen to the RMXP RTP songs out-of-editor. They don't sound all that great.

Blizzard

I'll try. I'm not sure if it can be implemented that easily, but I'll definitely try. I don't think it's just a reverb effect, I think there's also some equalizer filtering, because the files played in another player than RMXP sound like they are cut down to 22050 Hz or something like that. I have to research that first. >.< I highly doubt that they have custom samples so it should be simple to do it.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

zenvirzan

Oh, and will Zer0's RGSS be able to be ported to mobile devices?

Blizzard

The underlying libraries are the only thing needs to be ported and they already work on iOS. We would technically only need to compile it and make the ARC editor be able to put a whole game package together for iOS, because it doesn't work the same way as for PC/Mac platforms. As for Android, that is still questionable for now, because of some major problems.
In any case, I suggest you read the other topics here in the ARC section, this topic has been already discussed a few times.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Blizzard

November 26, 2011, 08:24:02 am #11 Last Edit: December 30, 2011, 08:38:53 am by Blizzard
*double posts*

I have updated the list a little bit.

EDIT: I added another item in the list.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Blizzard

May 16, 2012, 02:26:09 am #12 Last Edit: May 20, 2012, 06:11:03 pm by Blizzard
I have updated the list a bit.

One important thing is that there will be no MIDI support. Why? You can read it here: http://forum.chaos-project.com/index.php/topic,10897.msg166032.html#msg166032

EDIT: I remembered something else so I updated the list again. This has been added:





  • In RGSS it is possible to assigned extremely high and low values for certain variables. The variables will be converted to Ruby's Bignum so there is no problem about that. Zer0 RGSS keeps all variables internally as C++ data types. This means that there are limits. Since most integer values are "int" in Zer0 RGSS, this means that the min and max values are -2147483647 and 2147483648. See Appendix 1 for more information.






Appendix 1:

If you tried setting a z coordinate to a value higher or lower than the limit, RGSS will allow it while Zer0 RGSS will have unpredictable behavior. This "problem" could be "fixed", but C++ data is faster to process as Zer0 RGSS is internally fully implemented in C++ so keeping some values in Ruby format would require lots of conversions and would slow down the engine. Imposing reasonable limits such as these is a small price to pay for better performance, hence this will not be "fixed".
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

fenryo

Yeees Direct x9 and 60fps !! Guys you Rock !!! Waiting the 100% version !!!  :naughty: (no life without my midi and mp3 lol)

Trinitygamer

2 questions:

1) About the Appendix 1 variables thing: I'm only just starting to look into programing, so i'm sorry if i don't understand much about variables, but while c++ int variables, is it possible that you could just put an if statment to see if the number is more then the max of int, then switch it over to a __int64 variable type if it is? (this would save time, and still have a much larger number, though i really don't see why you would need a larger number, unless it's a 'continues game score' kind of thing, at which point i'd still be shocked at the score being that high, but it's still a good idea)

2) o_0 i knew that mp3 wouldn't be supported, with the whole cost issue and all (i read that post), but i didn't know that midi wouldn't be supported, but i'm a bit confused on that. midi and wav are both microsoft codex (i think), so why is 1 supported and the other not? Or are nether supported?

Blizzard

December 19, 2012, 05:46:26 am #15 Last Edit: December 19, 2012, 05:47:46 am by Blizzard
1) No, that's not possible. Internally in C++ it's an int and it can't be just changed into another type. C++ is a strong-typed language which means that you have to declare the type of a variable and you can't change it anymore. If we change everything now, it could break existing projects.

2) At this moment MIDI isn't supported, but winkio linked us to a library that might help us to allow MIDI support after all. You can find our discussion here: http://forum.chaos-project.com/index.php/topic,10897.0.html
I am waiting for the editor beta to be released first before I continue working on the engine and finish up the last things.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Ryex

I no longer keep up with posts in the forum very well. If you have a question or comment, about my work, or in general I welcome PM's. if you make a post in one of my threads and I don't reply with in a day or two feel free to PM me and point it out to me.<br /><br />DropBox, the best free file syncing service there is.<br />