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".
'3 for left-aligned-wrapped, 4 for center-aligned-wrapped, 5 for right-aligned-wrapped, 6 for justified'
. . .
Am I dreaming? YOU LEGENDS
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
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 :\
No mp3 support...?
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 :(
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
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.
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.
Oh, and will Zer0's RGSS be able to be ported to mobile devices?
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.
*double posts*
I have updated the list a little bit.
EDIT: I added another item in the list.
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".
Yeees Direct x9 and 60fps !! Guys you Rock !!! Waiting the 100% version !!! :naughty: (no life without my midi and mp3 lol)
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?
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.
EDIT: you got to it first :P