I’d like to remind people interested in the Riven X project that the development Trac wiki is available. I’ve recently given it some attention and tried to make the front page of the wiki somewhat more useful. In any case, if you have bugs to report or features to request, that’s where you want to go.

11 comments
Comments feed for this article
Trackback link
http://www.devklog.net/2006/03/16/riven-x-development-wiki/trackback/
Friday, March 17, 2006 at 09:50 PST
Christian Walther
Hi, I recently (that is, yesterday, through issue 1 of the CCN Archiver) found this project and I’m quite excited about it. I’m missing a mailing list or newsgroup (that’s why I’m replying here), is there one, or does Trac somehow handle that?
Anyway, I downloaded the tech demo and tried it, then checked out the latest code, built it (which required a few tweaks to the Xcode project), and played around with it a bit. Is it currently capable of doing anything more than displaying some images? I also browsed through some of the source (which seems very elaborate) and through Tito Dal Canton’s MHK file documentation.
I wonder if there’s anything I can contribute to this project. I looked at the Trac tickets that seem to serve as some kind of To Do list, but I currently can’t make much sense of them. Maybe that will change when I examine the code a bit more.
Friday, March 17, 2006 at 10:42 PST
Jean-Francois Roy
Christian Walther:
Whoa, I never thought I’d get someone else interested in this project, on a contributing level! I’ll address each of your points.
1. “I’m missing a mailing list or newsgroup (that’s why I’m replying here), is there one, or does Trac somehow handle that?”
I only finished setting up Trac yesterday
I’m going to make 2 mailing lists sometime today. One for development (your typical -devel mailing list) and one for Subversion and Trac notifications.
Trac serves as a documentation WiKi (for users and the source code, eventually), as the bug tracker and as the more elaborate source code web browser (Subversion supports simple HTML listing itself when served using Apache 2).
2. “Anyway, I downloaded the tech demo and tried it, then checked out the latest code, built it (which required a few tweaks to the Xcode project), and played around with it a bit.”
I’d be curious to know those tweaks, but I reckon it has to do with setting both projects (rivenx and MHKKit) to build in the same directory. That’s a per-user setting and there’s not much I can do about it. I am considering merging the rivenx and mhk repositories into one, making true MHKKit a sub-project of rivenx.
3. “Is it currently capable of doing anything more than displaying some images?”
I’m currently aiming at a “Core Media” release by the end of this weekend, which means Riven X will be capable of properly rendering pictures, movies and sound effects in cards. After that, I’ll move on to other things, like hotspots, variables, etc. I’ll be adding tickets to Trac once Core Media is done.
4. ” I also browsed through some of the source (which seems very elaborate)”
Eh, thanks, I guess. I’ll be documenting the architecture of Riven X on this blog and on the Trac Wiki some more this coming weekend, hopefully
5. “and through Tito Dal Canton’s MHK file documentation.”
Tito is da man. He figured SFXE resources this very week
6. “I wonder if there’s anything I can contribute to this project. I looked at the Trac tickets that seem to serve as some kind of To Do list, but I currently can’t make much sense of them. Maybe that will change when I examine the code a bit more.”
Yes, Trac is the bug tracker. So any tasks, defects (bugs) and features (enhancement) should ideally get a ticket. If you’re interested in contributing to Riven X, we can talk! I’d be glad to explain you where I am, what needs to be done, answer your questions, give you commit privileges and all.
The current tickets mostly all have to do with the audio engine which is the critical sub-system missing for the Core Media release.
Saturday, March 18, 2006 at 06:19 PST
Christian Walther
Cool. Consider adding them to Gmane, I like newsgroups. And they have a nice web interface, too.
No, I didn’t do that, it seems to work fine with each of them bulding in its own directory. What I did was, off the top of my head:
• Put the $(SRCROOT)/../mhk/build/Debug framework search path in quotes so that it works when $(SRCROOT) contains spaces. However, I later had to move the project into a space-less location anyway because otherwise it wouldn’t find the FScript framework. Seems like a bug in Xcode, though I have to investigate it a bit more before reporting it to Apple.
• Modify the svnversion shell script build phases because my Subversion client is in /usr/local, not /opt/local. I’m not fluent in Perl so I don’t know how to solve this more dynamically.
• Somehow the Copy Files build phase looked for MHKKit.framework in the wrong place. Removing MHKKit.framework from the build phase, then adding it to the project (in the Frameworks group) and dragging it into the build phase again from there seemed to solve that.
Cool. When that stuff works, please give some examples of which cards in which stacks to look at to see it in action. Up to now, I couldn’t help getting the impression that I missed something.
That would be helpful (though of course I don’t want to distract you from your scheduled coding if that’s not something you planned to do anyway).
Well, let’s not rush it. I can’t really say yet whether I’m interested in contributing (beyond the initial excitement). I’ll follow the project for a while to determine that, maybe submit a patch or two, participate in discussions when I like. I’m notorious for losing interest in projects after a while, so I’d generally like to keep my involvement as informal as possible. Reading the code and the forthcoming architectural documentation will probably substitute for a direct “talk” to some extent, but whatever we do, I think it’s important to do it in a public, archived place like the mailing list and the Wiki, so that other potential contributors can benefit from it too.
By the way, I’m already doing some debugging and I’ll open a ticket for it.
Saturday, March 18, 2006 at 09:56 PST
Jean-Francois Roy
pipmak looks very interesting. So much more complex, complete and reusable than what I’m doing
Saturday, March 18, 2006 at 10:51 PST
Christian Walther
Thanks!
I don’t consider it particularly complete in its current state. Many potential users (rightfully) miss movie and sound capabilities. I recently started thinking about sound, and using OpenAL it seems to be easier than I had feared, but I suspect displaying movies through OpenGL (without QuickTime, CoreVideo and all that stuff) will get me some performance headaches. It seems you have already solved that problem for Riven X…
Reusable? If you mean reusable to make different games, well, yes, that’s the point. If you mean the source code being reusable - I doubt it. It’s pretty much grown organically, and I usually end up making changes all over the source tree to implement a single new feature. But it works…
Saturday, March 18, 2006 at 11:56 PST
Jean-Francois Roy
Core Video is just a timing and buffering API, it can be used outside of QuickTime easily. For instance, you could adapt Core Video to ffmpeg without too much trouble. I considered doing just that, but I figured since QuickTime worked I would better spend my limited time elsewhere.
Wednesday, March 29, 2006 at 10:43 PST
Tito
Hi Christian, if you want you can contribute to the reversing project! There is really little work to be done, though it’s (by definition) the hardest: figure out unknown script commands, map external commands (this is *really* hard, if even possible) and figure out some unknown field here and there. If you use Linux I could send you the powerful tool I’ve written to look into data files, which decodes everything known (scripts, pictures…). It’s written using wxWidgets so you might be able to run it on different OSes too. Let me know.
Wednesday, March 29, 2006 at 13:36 PST
Jean-Francois Roy
Might have used that source code instead of rolling my own for everything, Tito =p Oh well, I owe you so much already anyways. This project wouldn’t be there at all if it wasn’t for your awesome work.
As far as external commands are concerned, I’m not too concerned. I have good hopes we can infer what they do based on their name, context of use and observable differences between the game state of the engine I’m writing and the Cyan engine after executing (or not) an external command.
I also think the same principle can apply for unknown opcodes.
I need to work harder on this
As I wrote yesterday, I should have a new release with movies, pictures and sounds by the end of the week.
Oh and if you would like editing priviledges for the development wiki (perhaps to write entries about Riven data files or some such) or to have write access to the MHKKit and rivenx repositories (both of you), ask me. I don’t expect either of you to commit on a regular basis, but you might want to fiddle with the code, use stuff I’ve written in test programs and such.
Thursday, March 30, 2006 at 07:01 PST
Tito
Well, my implementation is really trivial… there is much more GUI code than actual decoding stuff. And it’s all C++, while I guess your code is completely Objective C.
As for external commands, I should be able to put a complete list on my site in days, check it out often. Their names are sometimes very explanatory (xflies) and sometimes completely unuseful (xopencard), so generally they’ll just give us clues. What actually happens inside external commands will be discovered only by trial with your engine. I’m really excited to begin this all soon.
And yes, probably the same principle will be useful for unknown opcodes, although most of them don’t produce observable effects. (side question: do we need to implement them if they don’t give observable effects?
Thursday, March 30, 2006 at 09:31 PST
Jean-Francois Roy
Tito:
I’m not sure I made the right choice by using Objective-C. I do love the amount of flexibility and dynamism it gives me. Also, the audio engine is in C++ :p.
Indeed, trial and error.
There’s a catch-all handler in RXCard that prints unknown opcode number and the arguments when a card executes a RivenScript (catchy name, don’t you think?) program.
Friday, April 28, 2006 at 11:26 PDT
Mary
Hello,
I should start by saying that I am a programming civilian. I just found my old copy of Riven that was given to me way back when. I would love to play it on OS X, and have no idea if that is possible. I tried by installing in OS 9, but when the game asks for disc 2 (in OS 9), it doesn’t seem to see the CD. Will it be possible to play Riven again? I love this game and would love to experience it again. Thanks for any help you can offer.