NOTE : do not go fullscreen! I used a rather weird resolution because of the source I used for images. It shouldn't make your computer explode but either you won't be able to switch, or it won't display properly anyway, so... avoid it .
Windows : http://www.megaupload.com/?d=75YFVNIY (~7mb)
Linux : http://www.megaupload.com/?d=P8SWEULB (~9mb)
Mac : http://www.megaupload.com/?d=22DLUJDZ (~8.5mb)
http://monele.eviscerate.net/phoenix0.2.zip
http://monele.eviscerate.net/phoenix02to03.zip
== DISCLAIMER ==
Ok, first things first : I didn't do any of these graphics, sounds, music, story or ideas. They're from Gyakuten Saiban 3, also known as Phoenix Wright outside Japan. No, I'm not trying to steal anything , I'm trying to teach something.
My primary goal was to see if Ren'Py could make what the Phoenix Wright games do : shakes, bipping while talking, animations all around, etc... The conclusion is : hail Ren'Py. Not only it does it all, but it can be setup to make the scenario scripting quite easy (I couldn't make it easier but I'm open for any suggestion).
My second goal is to show the results, open source, so everyone can learn how to do the same. Hey, if someone can use any of the "new" features, it makes it all worth it. So go ahead, read the code, and ask questions if something isn't clear. I tried to put comments in english for the most part but some might have slipped through ^^;.
Basically, script.rpy has the whole story (and two animation functions I wanted to reuse often).
options.rpy is the regular Ren'Py file (there were a few modifications though).
effects.rpy contains my Shaker effect which was published in the Cookbook already.
defs.rpy contains character animations, Character definitions and a lot of callback functions to combine both. You can also find all image statements in there.
interface.rpy deals with the Court Record interface. I did that a bit in a hurry though ^^;.
My third goal... is maybe to convert a few people to Phoenix Wright ^^. Maybe you never heard of the game or didn't have a chance to try it out. In its current state, this "demo" doesn't have enough to show the real core of the gameplay though, so this third goal might not be reached easily ^^;...
== BUGS ==
As I said, there are a few bugs roaming around. PyTom, I hope you can help with this... and sorry in advance ^^;...
- I get a random crash about something "clipped".
Code: Select all
-- Full Traceback ------------------------------------------------------------
File "D:\Jeux\renpy-5.6.6\renpy\bootstrap.py", line 166, in bootstrap
File "D:\Jeux\renpy-5.6.6\renpy\main.py", line 275, in main
File "D:\Jeux\renpy-5.6.6\renpy\main.py", line 92, in run
File "D:\Jeux\renpy-5.6.6\renpy\execution.py", line 97, in run
File "D:\Jeux\renpy-5.6.6\renpy\ast.py", line 250, in execute
File "D:\Jeux\renpy-5.6.6\renpy\exports.py", line 466, in say
File "D:\Jeux\renpy-game\renpy\character.py", line 525, in __call__
File "D:\Jeux\renpy-game\renpy\character.py", line 334, in display_say
File "D:\Jeux\renpy-5.6.6\renpy\ui.py", line 66, in interact
File "D:\Jeux\renpy-5.6.6\renpy\display\core.py", line 1101, in interact
File "D:\Jeux\renpy-5.6.6\renpy\display\core.py", line 1507, in interact_core
File "D:\Jeux\renpy-game\renpy\display\layout.py", line 251, in event
File "D:\Jeux\renpy-game\renpy\display\layout.py", line 251, in event
File "D:\Jeux\renpy-game\renpy\display\layout.py", line 251, in event
File "D:\Jeux\renpy-game\renpy\display\layout.py", line 130, in event
File "D:\Jeux\renpy-5.6.6\renpy\display\behavior.py", line 359, in event
File "D:\Jeux\renpy-game\phoenix/game/interface.rpy", line 12, in enterrecord
File "D:\Jeux\renpy-5.6.6\renpy\game.py", line 235, in call_in_new_context
File "D:\Jeux\renpy-5.6.6\renpy\execution.py", line 97, in run
File "D:\Jeux\renpy-5.6.6\renpy\ast.py", line 373, in execute
File "D:\Jeux\renpy-5.6.6\renpy\python.py", line 838, in py_exec_bytecode
File "D:\Jeux\renpy-game\phoenix/game/interface.rpy", line 190, in <module>
File "D:\Jeux\renpy-5.6.6\renpy\ui.py", line 66, in interact
File "D:\Jeux\renpy-5.6.6\renpy\display\core.py", line 1101, in interact
File "D:\Jeux\renpy-5.6.6\renpy\display\core.py", line 1345, in interact_core
File "D:\Jeux\renpy-5.6.6\renpy\display\core.py", line 782, in show
File "D:\Jeux\renpy-5.6.6\renpy\display\render.py", line 177, in render_screen
File "D:\Jeux\renpy-5.6.6\renpy\display\render.py", line 102, in render
File "D:\Jeux\renpy-game\renpy\display\layout.py", line 228, in render
File "D:\Jeux\renpy-5.6.6\renpy\display\render.py", line 102, in render
File "D:\Jeux\renpy-game\renpy\display\layout.py", line 228, in render
File "D:\Jeux\renpy-5.6.6\renpy\display\render.py", line 102, in render
File "D:\Jeux\renpy-game\renpy\display\layout.py", line 228, in render
File "D:\Jeux\renpy-5.6.6\renpy\display\render.py", line 102, in render
File "D:\Jeux\renpy-5.6.6\renpy\display\image.py", line 134, in render
File "D:\Jeux\renpy-5.6.6\renpy\display\render.py", line 102, in render
File "D:\Jeux\renpy-game\renpy\display\layout.py", line 228, in render
File "D:\Jeux\renpy-5.6.6\renpy\display\render.py", line 102, in render
File "D:\Jeux\renpy-game\renpy\display\layout.py", line 323, in render
File "D:\Jeux\renpy-5.6.6\renpy\display\render.py", line 103, in render
AttributeError: 'NoneType' object has no attribute 'clipped'
While executing game script on line 170 of D:\Jeux\renpy-game\phoenix/game/interface.rpy.
While executing python code on line 190 of D:\Jeux\renpy-game\phoenix/game/interface.rpy.
Ren'Py Version: Ren'Py 5.6.7c
- the itemlist and peoplelist variables are not saved properly (save, quit game, load). Strange thing, since I think I did the same I did with Magical Boutique to ensure they were saved... uh... oops... I remember now... they had to be initialized *during* the game, not in an init block >.>.... *fixes*. We might want to add this to the wiki at some point ^^;;;...
- Returning from the Court Record interface is the same as clicking. This means you jump to the next say statement or... worse... it validates the current menu. Obviously this had to do with ui.interact being called and cancelling the previous one, but... isn't there a way to prevent this?
- I noticed a strange "light up" of the sprites during the dissolves (dissolve to black of Phoenix looking down, after the intro). It's clearly linked to its eyes animation. Whenever the eyes blink, it lights up the whole sprite.
- As I said before, removing the ctc of the "talk" Character (base for all characters) prevents the "*NI" characters from automatically going to the next say statement.
- I can't click through the dissolve in of the "5 years ago..." text after the intro. It's a transition followed by a ui.interact... might have to do with this? Can't skip through it either I just noticed.
- Wasn't there a configuration variable to limit the max framerate? I just find the pans from Mia to Payne a bit... dizzying @_@... and they're not on the source game, I think, because it's at a lower framerate.
Ooookay... ish all. Moni, out!