User Tag List

Page 1 of 2 1 2 LastLast
Results 1 to 10 of 17

Thread: ZC Development Proposal

  1. #1
    Administrator DarkDragon's Avatar
    Join Date
    Oct 2001
    Posts
    6,208
    Mentioned
    59 Post(s)
    Tagged
    0 Thread(s)
    vBActivity - Stats
    Points
    10,720
    Level
    30
    vBActivity - Bars
    Lv. Percent
    71.22%
    Daily Activity
    0%
    Weekly Activity
    1.63%
    Monthly Activity
    32.94%

    ZC Development Proposal

    Before I begin with the proposal proper, let me offer some motivation. What elements are essential to ZC's success in the future? Many ideas have been discussed about what features are most important for a hypothetical "ZC 3.0," and while new features keeping ZC fresh are important to its success, they are not as critical as the following two pillars:

    1. Ability to play all existing in the Quest Databases.

    Put simply, the quest databases are the most valuable assets the project has right now. The ability to create your own quests is extremely important to ZC and its community, but I'd argue that the #1 draw for new users, by far, is the ability for them to download ZC and then play hundreds of Zelda-like games created by fans, many of them of quality rivalving the official Nintendo SNES and GB games. If ZC development stopped completely, ten years from now someone might still discover the binaries and the quest databases, and rekindle interest in the project.

    Therefore the ability to play old quests is paramount no matter what direction ZC development takes. Any plans that do not maintain backwards compatibility of quests (especially for the ZC player) are non-starters.

    2. Portability to modern computing devices.

    This is another obvious requirement: if ZC doesn't run on modern operating systems, or is temperamental/difficult to deal with on these operating systems, nobody can play any quests and the project is doomed in the long-term. ZC needs to be built on top of libraries are that as portable and future-proof as possible. (I want to carefully distinguish here between ZC having a robust and portable *back-end*, and ZC having an old-school 8-bit user interface. The two are completely separate issues, and while some might argue that the user interface in ZC and, especially, ZQuest, could do with a modern makeover, that's not what I'm talking about in this item.)

    So what's the punchline? These days, a "modern operating system" doesn't mean Windows 10 (although I do have trouble running ZC on Windows 10 without tinkering with command-line switches, which is not a great state of affairs). It means Android, iOS, or even better, the browser, including the mobile browser.



    So, my proposal is the following: clean up the ZC source and increase its portability to the point that it becomes possible to run the ZC player in the browser. This project, if successful, would allow us to put a "play it now" button on the quest databases, so that users on all manner of devices could play the custom quests right there in their browser. If we want Zelda Classic to regain mainstream visibility and attract new users, this has to happen, and it will only get harder the longer the delay.

    And this is not as crazy of a proposal as it might sound. Projects like quakejs demonstrate the feasibility of porting natively-C++ games of the complexity level of Zelda Classic to JavaScript on the browser. But, I'm also aware that this is far from a trivial task. The main challenges I foresee are the following, with the toughest listed first:
    - Allegro must be replaced by a more portable back-end. SDL is the obvious choice here, as it already is well-supported by the Emscripten C++-to-JavaScript compiler.
    - ZC must be optimized to run at a reasonable speed in the browser. It also has to fit within JavaScript's allowed memory footprint (a little bit over 1GB), which I don't think is a problem for most existing quests, but is a limit we should keep in mind before we insert any additional feature bloat into ZC.
    - ZC currently uses hardware bitmaps, multiple threads, and other miscellaneous low-level features that are not supported by JavaScript. These will have to be stripped out and rewritten.
    - All of the above has to be done without completely breaking ZQuest (and, I suppose, ROMview). If ZQuest also runs in the browser, that's great, but I think getting the player to work is far more important, so that it's OK is ZQuest remains a desktop-only app.



    So how do we go about doing this? Forking the current code and starting a complete rewrite will not work: it is too big of a task to complete in one go. Instead, I propose working incrementally towards the goal of porting to the browser. I envision the work proceeding in three phases:

    Phase 0: Get Current Development Efforts on Track (time frame: a few weeks)
    To be honest, even after reading the ZC development threads here and at PureZC, I'm not quite sure what the current development vision is. Before any new work can begin, our existing resources need to be organized. In particular:
    1. As ZoriaRPG mentioned in the other thread, the repository needs to be cleaned up, with a reasonable branch structure, a modern build system, instructions included for how to build the source, etc.
    2. The management of the project needs to be clarified. Who has access to the main repository? What is the procedure for adding or removing "core developers"? How are new features proposed, discussed, and approved? What is the procedure for code review of patches submitted by the main developers? Outside developers? Where and how should users submit bug reports? Etc.
    To be clear, I don't mind if the answer to several of these is "Gleeok decides and rules with an iron fist." This is much better than developers working independently and at cross-purposes!

    Phase 1: Wean The Current Code Off of Allegro Utility Libraries (time frame: 1-2 months)
    The code current relies on several Allegro utility libraries that could be removed or rewritten, without needing to add any additional libraries, and without removing the core Allegro graphics backend. These include
    - the packfile system
    - the fixed-point arithmetic handling
    - memory management
    - some of the GUI code (jwin) which can be converted to using a wrapper around core Allegro functionality
    Other aspects of this phase not related to replacing Allegro features:
    - creating some system for automatically testing old quest compatibility, to ensure development does not break these quests (for example, by implementing a "quest demo" playback system, which checks that the same commands entered into the same quest result in the same final game state before and after each change).
    - avoiding adding any new features which ties ZC more closely to Allegro, or to its current GUI or hardware backend.

    Phase 2: Replace Allegro with SDL (time frame: 6 months)
    This will require
    - replacing all I/O and bitmap operations with SDL equivalents. This is easier the more of the GUI code can be wrapped during Phase 1, but there's no point beating around the push: this part will be long and involved.
    - rewriting the sound library to use SDL_mixer instead of the current hodge-podge of external music libraries.
    - replacing jwin with Saffith's GUI library?

    Phase 3: Complete The Port (time frame: 3 months?)
    Once Allegro has been replaced with SDL, there will still need to be miscellaneous cleanup necessary before ZC can run successfully online. Here are some issues I anticipate, though I'm sure there are others that will crop up over time:
    - switching to LLVM instead of MSVC/gcc
    - modifying the handling of the filesystem to allow for online play
    - optimizing the rendering or script engine, as necessary, to ensure reasonable frame rates.



    If you have read this far, thanks! I'm interested to know your thoughts. I feel very strongly about the need for this kind of port in order for ZC to stay vibrant in the future. While I'm not currently an active developer, I am willing to work on at least Phase 1 (single-handedly, if necessary), but I don't want to do anything without extensive discussion with the existing developers.

  2. #2
    ZC Contirbutor ZoriaRPG's Avatar
    Join Date
    Oct 2006
    Location
    Prydon Academy
    Posts
    920
    Mentioned
    81 Post(s)
    Tagged
    1 Thread(s)
    vBActivity - Stats
    Points
    3,322
    Level
    18
    vBActivity - Bars
    Lv. Percent
    54.55%
    Daily Activity
    0%
    Weekly Activity
    15.24%
    Monthly Activity
    67.36%
    Quote Originally Posted by DarkDragon View Post
    Before I begin with the proposal proper, let me offer some motivation. What elements are essential to ZC's success in the future? Many ideas have been discussed about what features are most important for a hypothetical "ZC 3.0," and while new features keeping ZC fresh are important to its success, they are not as critical as the following two pillars:

    1. Ability to play all existing in the Quest Databases.

    Put simply, the quest databases are the most valuable assets the project has right now. The ability to create your own quests is extremely important to ZC and its community, but I'd argue that the #1 draw for new users, by far, is the ability for them to download ZC and then play hundreds of Zelda-like games created by fans, many of them of quality rivalving the official Nintendo SNES and GB games. If ZC development stopped completely, ten years from now someone might still discover the binaries and the quest databases, and rekindle interest in the project.

    Therefore the ability to play old quests is paramount no matter what direction ZC development takes. Any plans that do not maintain backwards compatibility of quests (especially for the ZC player) are non-starters.

    2. Portability to modern computing devices.

    This is another obvious requirement: if ZC doesn't run on modern operating systems, or is temperamental/difficult to deal with on these operating systems, nobody can play any quests and the project is doomed in the long-term. ZC needs to be built on top of libraries are that as portable and future-proof as possible. (I want to carefully distinguish here between ZC having a robust and portable *back-end*, and ZC having an old-school 8-bit user interface. The two are completely separate issues, and while some might argue that the user interface in ZC and, especially, ZQuest, could do with a modern makeover, that's not what I'm talking about in this item.)

    So what's the punchline? These days, a "modern operating system" doesn't mean Windows 10 (although I do have trouble running ZC on Windows 10 without tinkering with command-line switches, which is not a great state of affairs). It means Android, iOS, or even better, the browser, including the mobile browser.



    So, my proposal is the following: clean up the ZC source and increase its portability to the point that it becomes possible to run the ZC player in the browser. This project, if successful, would allow us to put a "play it now" button on the quest databases, so that users on all manner of devices could play the custom quests right there in their browser. If we want Zelda Classic to regain mainstream visibility and attract new users, this has to happen, and it will only get harder the longer the delay.

    And this is not as crazy of a proposal as it might sound. Projects like quakejs demonstrate the feasibility of porting natively-C++ games of the complexity level of Zelda Classic to JavaScript on the browser. But, I'm also aware that this is far from a trivial task. The main challenges I foresee are the following, with the toughest listed first:
    - Allegro must be replaced by a more portable back-end. SDL is the obvious choice here, as it already is well-supported by the Emscripten C++-to-JavaScript compiler.
    - ZC must be optimized to run at a reasonable speed in the browser. It also has to fit within JavaScript's allowed memory footprint (a little bit over 1GB), which I don't think is a problem for most existing quests, but is a limit we should keep in mind before we insert any additional feature bloat into ZC.
    - ZC currently uses hardware bitmaps, multiple threads, and other miscellaneous low-level features that are not supported by JavaScript. These will have to be stripped out and rewritten.
    - All of the above has to be done without completely breaking ZQuest (and, I suppose, ROMview). If ZQuest also runs in the browser, that's great, but I think getting the player to work is far more important, so that it's OK is ZQuest remains a desktop-only app.



    So how do we go about doing this? Forking the current code and starting a complete rewrite will not work: it is too big of a task to complete in one go. Instead, I propose working incrementally towards the goal of porting to the browser. I envision the work proceeding in three phases:

    Phase 0: Get Current Development Efforts on Track (time frame: a few weeks)
    To be honest, even after reading the ZC development threads here and at PureZC, I'm not quite sure what the current development vision is. Before any new work can begin, our existing resources need to be organized. In particular:
    1. As ZoriaRPG mentioned in the other thread, the repository needs to be cleaned up, with a reasonable branch structure, a modern build system, instructions included for how to build the source, etc.
    2. The management of the project needs to be clarified. Who has access to the main repository? What is the procedure for adding or removing "core developers"? How are new features proposed, discussed, and approved? What is the procedure for code review of patches submitted by the main developers? Outside developers? Where and how should users submit bug reports? Etc.
    To be clear, I don't mind if the answer to several of these is "Gleeok decides and rules with an iron fist." This is much better than developers working independently and at cross-purposes!

    Phase 1: Wean The Current Code Off of Allegro Utility Libraries (time frame: 1-2 months)
    The code current relies on several Allegro utility libraries that could be removed or rewritten, without needing to add any additional libraries, and without removing the core Allegro graphics backend. These include
    - the packfile system
    - the fixed-point arithmetic handling
    - memory management
    - some of the GUI code (jwin) which can be converted to using a wrapper around core Allegro functionality
    Other aspects of this phase not related to replacing Allegro features:
    - creating some system for automatically testing old quest compatibility, to ensure development does not break these quests (for example, by implementing a "quest demo" playback system, which checks that the same commands entered into the same quest result in the same final game state before and after each change).
    - avoiding adding any new features which ties ZC more closely to Allegro, or to its current GUI or hardware backend.

    Phase 2: Replace Allegro with SDL (time frame: 6 months)
    This will require
    - replacing all I/O and bitmap operations with SDL equivalents. This is easier the more of the GUI code can be wrapped during Phase 1, but there's no point beating around the push: this part will be long and involved.
    - rewriting the sound library to use SDL_mixer instead of the current hodge-podge of external music libraries.
    - replacing jwin with Saffith's GUI library?

    Phase 3: Complete The Port (time frame: 3 months?)
    Once Allegro has been replaced with SDL, there will still need to be miscellaneous cleanup necessary before ZC can run successfully online. Here are some issues I anticipate, though I'm sure there are others that will crop up over time:
    - switching to LLVM instead of MSVC/gcc
    - modifying the handling of the filesystem to allow for online play
    - optimizing the rendering or script engine, as necessary, to ensure reasonable frame rates.



    If you have read this far, thanks! I'm interested to know your thoughts. I feel very strongly about the need for this kind of port in order for ZC to stay vibrant in the future. While I'm not currently an active developer, I am willing to work on at least Phase 1 (single-handedly, if necessary), but I don't want to do anything without extensive discussion with the existing developers.
    While all this sounds intriguing, I can't really imaging being able to properly support existing quests, given all of the eccentricities that we already need to support, in merging to a new back-end. I would frankly think that a port to JavaScript should be an alternative, that permits browser play, at the sake of some compatibility loss, if a user wishes to pursue that route, while a mainstream binary is still usable.

    I'm not sure if most ZC users today would be interested in using a web browser for it, but I suppose that's generational. I really have no idea there, but in any case, I think that the timeframes in your outline are rather unrealistic. A port out of allegro, with our present developer resources, will likely take two years, not six months. I don't know a blasted thing about modern JS, and it's something that TBH I've avoided like the plague; and browsers in the future are more likely to slowly drop support for JS, as they did Flash, because of its inherent vulnerabilities.

    Above all else, that is what would worry me about this. It's no more of a guarantee to future usefulness than porting to allegro 5, which is still supported, and runs on both desktop, and mobile platforms, natively.

    Quest memory footprints and ZC RAM usage could possibly exceed 1GB, but IDR if I've personally experienced that. I've certainly come close though. Much of that could be cleaned up with new memory management, but really the present lack of any motivation towards a future goal has stalled things for a year.

    Something else to consider, is the shift toward things like ARChon, whereby you could run an Android-native ZC binary in Chrome. Likewise, mobile devices are as much the future of a programme as anything else, and browser play on mobile devices is pretty lacklustre. In general, Android devices forward the browser to an app for almost everything, and web browsers on mobile devices see far less use than all the other net apps. To me, ZC as a net app makes the most sense, and AG5 would do that; and AG5 would be the easiest port, with the least compatibility loss.

    It's still a huge undertaking, that requires far more people than are now involved. If we had a dozen people working on this, sure, why not; but we don't.

    Above all this, floats the same issue that haunted AM2R. Don't get too big for your britches. It's good to ensure that ZC stays in use, but if you turn it into a web software platform, then you also need to support the bandwidth infrastructure, which means you need to generate revenue. Who will pay for that, and how?

    Don't forget audio packs when you consider this. The audio package for Quest 744 is 95MB in size, plus the 5MB quest file. If one user a day plays it, that's 36GB per year. Consider that if this was a popular service, you could have 100 users on it a day, or 3.6TB a year, just to support 'streaming' that quest. Streaming backbones are hideously costly, however you approach them.

    We can't commercialise ZC, and we certainly can't rent out the work product of the questmakers. That model not only isn't viable, it also isn't legal, so, before worrying about a deployment model, it's important to consider the long term maintenance upkeep, and if it's even plausible to consider such a thing. Then, the takedown notice issue arises, too. Staying 'low-profile' and 'home made' is a major factor in why ZC is still alive today, too; thus if you make it too popular, you could demolish it in the process.
    Last edited by ZoriaRPG; 12-16-2016 at 06:47 AM.


    Featured Scripts & Headers: RPG.zh ( v. a0.97.1 ) ( RPG.zh Thread ) | Zelda 3 Thief's Town Treasure Chest Minigame (ffc) | Bobomb (enemy)
    ZScript & ZC-Related Pastebin | Quests and ZScript Repository | ZC Dev & Betas | Latest ZC 2.54 Beta | YouTube Channel
    All of the code that I create and publish here is free for use, modification and distribution under the GPL v2.0, or v3.0 where applicable..

  3. #3
    Administrator DarkDragon's Avatar
    Join Date
    Oct 2001
    Posts
    6,208
    Mentioned
    59 Post(s)
    Tagged
    0 Thread(s)
    vBActivity - Stats
    Points
    10,720
    Level
    30
    vBActivity - Bars
    Lv. Percent
    71.22%
    Daily Activity
    0%
    Weekly Activity
    1.63%
    Monthly Activity
    32.94%
    I don't know a blasted thing about modern JS, and it's something that TBH I've avoided like the plague; and browsers in the future are more likely to slowly drop support for JS, as they did Flash, because of its inherent vulnerabilities.
    I agree with all of this, but fortunately writing a program in JavaScript these days does not necessarily require writing a single line of actual JavaScript. Once the code is in a sufficiently portable form (compiles under LLVM, is free of odious external libraries, and doesn't rely on platform-dependent code or hardware) it can be targeted to JavaScript or whatever becomes the next language of the web.

    It's no more of a guarantee to future usefulness than porting to allegro 5, which is still supported, and runs on both desktop, and mobile platforms, natively.
    I don't want to wade into an Allegro vs SDL debate; my reasoning for choosing SDL comes down to just a single bit: SDL supports Emscripten, and Allegro does not.

    If one user a day plays it, that's 36GB per year. Consider that if this was a popular service, you could have 100 users on it a day, or 3.6TB a year, just to support 'streaming' that quest. Streaming backbones are hideously costly, however you approach them.
    Quest 744 is an extreme outlier (to the point that even the QDB doesn't include the music pack by default). If ZC's popularity takes off to the point that 100 new users per day are playing Quest 744 specifically, that is a "good problem" and a bridge that there's no point crossing until we get there. (Especially since, as you note, by the time ZC becomes this high-profile it will almost surely have drawn the attention of Nintendo legal.)

    We can't commercialise ZC, and we certainly can't rent out the work product of the questmakers. That model not only isn't viable, it also isn't legal, so, before worrying about a deployment model, it's important to consider the long term maintenance upkeep, and if it's even plausible to consider such a thing. Then, the takedown notice issue arises, too. Staying 'low-profile' and 'home made' is a major factor in why ZC is still alive today, too; thus if you make it too popular, you could demolish it in the process.
    I don't think I completely buy this argument. It's true that Nintendo could issue a takedown notice at any time (and has done so for fan games even less popular than ZC). This is a good reason to think about segregating the core game code from the Zelda-branded art, music, and gameplay mechanics to as great an extent as possible. But "keep ZC obscure and difficult to use in the hopes that Nintendo leaves us alone" is self-defeating in the long term.

  4. #4
    Administrator DarkDragon's Avatar
    Join Date
    Oct 2001
    Posts
    6,208
    Mentioned
    59 Post(s)
    Tagged
    0 Thread(s)
    vBActivity - Stats
    Points
    10,720
    Level
    30
    vBActivity - Bars
    Lv. Percent
    71.22%
    Daily Activity
    0%
    Weekly Activity
    1.63%
    Monthly Activity
    32.94%
    I can't really imaging being able to properly support existing quests, given all of the eccentricities that we already need to support, in merging to a new back-end
    I really hope this isn't true. As I argue above, I don't think ZC will survive much past the day that it stops being able to play old "greatest hits" quests.

  5. #5
    Developer ZC Developer
    Gleeok's Avatar
    Join Date
    Apr 2007
    Posts
    4,671
    Mentioned
    228 Post(s)
    Tagged
    10 Thread(s)
    vBActivity - Stats
    Points
    12,301
    Level
    32
    vBActivity - Bars
    Lv. Percent
    54.25%
    Daily Activity
    0%
    Weekly Activity
    1.63%
    Monthly Activity
    19.42%
    We missed you around here DD.

    I was also wondering how the javascript thing would work until you mentioned Emscripten; now it makes more sense.

    To answer the back-end concerns: I've switched various 'multimedia' libraries many times for other hobby projects in the past, sometimes halfway through a project, all without changing a single line of program code. I can drop in an allegro5, SDL, sfml, GLFW, etc. library to a project and all it needs is about 12-20 functions 'wrapped'. That's it. Trust me when I say that none of this really matters. The [only] important thing here is designing a very small concise API that can replace allegro calls directly in ZC; it doesn't matter where it goes after that, and who cares anyway?! ~Open a window; get an OpenGL context; get input; done.

    I'm sort of in the same boat as you I suppose DD. Something similar was brought up a couple of years ago and my thoughts now are the same as back then: It's a very large project and I don't have time for it. A complete rewrite is also a large project and I don't have time for that either. However, although I prefer option 2, I can probably only do so much of the same on either, so that's why... I'm willing to work on specific parts of it like, plus anything that I can contribute that coincides with code I either already have or need to write anyway (If that turns out to be anything at all). I believe back then I said the rendering, since I was the only one with OpenGL experience at the time, but sound code should be doable as well, with a gme plug-in as long as SDL_Mixer supports it.
    This post contains the official Gleeok™ seal of approval. Look for these and other posts in an area near you.

  6. #6
    ZC Contirbutor ZoriaRPG's Avatar
    Join Date
    Oct 2006
    Location
    Prydon Academy
    Posts
    920
    Mentioned
    81 Post(s)
    Tagged
    1 Thread(s)
    vBActivity - Stats
    Points
    3,322
    Level
    18
    vBActivity - Bars
    Lv. Percent
    54.55%
    Daily Activity
    0%
    Weekly Activity
    15.24%
    Monthly Activity
    67.36%
    Quote Originally Posted by Gleeok View Post
    We missed you around here DD.

    I was also wondering how the javascript thing would work until you mentioned Emscripten; now it makes more sense.

    To answer the back-end concerns: I've switched various 'multimedia' libraries many times for other hobby projects in the past, sometimes halfway through a project, all without changing a single line of program code. I can drop in an allegro5, SDL, sfml, GLFW, etc. library to a project and all it needs is about 12-20 functions 'wrapped'. That's it. Trust me when I say that none of this really matters. The [only] important thing here is designing a very small concise API that can replace allegro calls directly in ZC; it doesn't matter where it goes after that, and who cares anyway?! ~Open a window; get an OpenGL context; get input; done.

    I'm sort of in the same boat as you I suppose DD. Something similar was brought up a couple of years ago and my thoughts now are the same as back then: It's a very large project and I don't have time for it. A complete rewrite is also a large project and I don't have time for that either. However, although I prefer option 2, I can probably only do so much of the same on either, so that's why... I'm willing to work on specific parts of it like, plus anything that I can contribute that coincides with code I either already have or need to write anyway (If that turns out to be anything at all). I believe back then I said the rendering, since I was the only one with OpenGL experience at the time, but sound code should be doable as well, with a gme plug-in as long as SDL_Mixer supports it.

    I'll need to read up on Emscripten.

    Really, I think we need more time to attract people to develop this thing, before we do anything this grandiose. Of the people who have been doing anything with the source outside the two internal devs, @Tamamo and I have the most comprehension of it, and I for one am not ready to commit to anything in the way of huge rewrites. As I've said before, i think we should try to get some new, fresh stuff out, lure in some more coders who can work on it, and see how things progress.

    Beyond that, it doesn't matter to me what back end we use. I do fear that some allegro things mayn't carry over, and that's my largest concern.

    i would however, always offer a platform-specific binary. If we can do that for the three main desktop OSes, plus Android and iOS, fantastic. A broswer version should be in addition to these. For one thing, we can;t control browser stability.

    I know that ZC crashes have always been a user fear, and browser crashes are pretty common. If we do a browser version, we would really be best off investing in some kind of memory state management, so that if the player crashes, or if the browser crashes, the user can resume where they left off, rather than their last in-game save.

    Quote Originally Posted by DarkDragon View Post
    I really hope this isn't true. As I argue above, I don't think ZC will survive much past the day that it stops being able to play old "greatest hits" quests.
    IDK. There are so many tiny patches to handle quirks from past versions, up to and including 2.50.0, 2.50.1, and 2.50.2 differences, that mapping them all outside of allegro would be a pain. Not impossible probably, but who's going to do it?

    Quote Originally Posted by DarkDragon View Post
    I agree with all of this, but fortunately writing a program in JavaScript these days does not necessarily require writing a single line of actual JavaScript. Once the code is in a sufficiently portable form (compiles under LLVM, is free of odious external libraries, and doesn't rely on platform-dependent code or hardware) it can be targeted to JavaScript or whatever becomes the next language of the web.


    I don't want to wade into an Allegro vs SDL debate; my reasoning for choosing SDL comes down to just a single bit: SDL supports Emscripten, and Allegro does not.


    Quest 744 is an extreme outlier (to the point that even the QDB doesn't include the music pack by default). If ZC's popularity takes off to the point that 100 new users per day are playing Quest 744 specifically, that is a "good problem" and a bridge that there's no point crossing until we get there. (Especially since, as you note, by the time ZC becomes this high-profile it will almost surely have drawn the attention of Nintendo legal.)

    While there aren't yet a significant number of quests that use huge soundtracks, many now do. Yuurei, Panolopy of Calatia, Isle of Rebirth. The quests that are the most popular these days, often have enhanced music. Really, the lack of it in the past is primarily because users have nowhere to upload it with the quest files. Again, a live play site would need to permit it, and then we might get into copyright issues. Hell, I'm shocked that we haven't yet.

    It's something to consider, but I suppose making the system run in a browser, and offering the service, are ultimately separate topics. I remember making an Apple Ii emulator that could run in a browser, and run game images, and that was a Java applet. It wasn't fun, but it was a closed feature; this meaning that only members of the BBS knew it existed at all. It also didn't work too well, as handling images on a per-user basis was a huge pain to get right.

    I pretty much laid it out that when a user selected an image, it copied it over to user space, and ran it, so that saving was per-user. We'd need to do that with .sav files.

    If we do manage this at some point, I would like to see cooperative/multiplayer net-play as an option.


    I don't think I completely buy this argument. It's true that Nintendo could issue a takedown notice at any time (and has done so for fan games even less popular than ZC). This is a good reason to think about segregating the core game code from the Zelda-branded art, music, and gameplay mechanics to as great an extent as possible. But "keep ZC obscure and difficult to use in the hopes that Nintendo leaves us alone" is self-defeating in the long term.
    If we were to do this, rebadging it would be wise. That way, the only actual 'Zelda' infringement is from fan-made quests. But again, a solid business model for supporting the bandwidth would be in order.


    Featured Scripts & Headers: RPG.zh ( v. a0.97.1 ) ( RPG.zh Thread ) | Zelda 3 Thief's Town Treasure Chest Minigame (ffc) | Bobomb (enemy)
    ZScript & ZC-Related Pastebin | Quests and ZScript Repository | ZC Dev & Betas | Latest ZC 2.54 Beta | YouTube Channel
    All of the code that I create and publish here is free for use, modification and distribution under the GPL v2.0, or v3.0 where applicable..

  7. #7
    Administrator DarkDragon's Avatar
    Join Date
    Oct 2001
    Posts
    6,208
    Mentioned
    59 Post(s)
    Tagged
    0 Thread(s)
    vBActivity - Stats
    Points
    10,720
    Level
    30
    vBActivity - Bars
    Lv. Percent
    71.22%
    Daily Activity
    0%
    Weekly Activity
    1.63%
    Monthly Activity
    32.94%
    Quote Originally Posted by Gleeok View Post
    To answer the back-end concerns: I've switched various 'multimedia' libraries many times for other hobby projects in the past, sometimes halfway through a project, all without changing a single line of program code. I can drop in an allegro5, SDL, sfml, GLFW, etc. library to a project and all it needs is about 12-20 functions 'wrapped'. That's it. Trust me when I say that none of this really matters. The [only] important thing here is designing a very small concise API that can replace allegro calls directly in ZC; it doesn't matter where it goes after that, and who cares anyway?! ~Open a window; get an OpenGL context; get input; done.
    That makes sense. Wrapping Allegro code into a small set of functions (and cleaning up the code a bit in the process) seems like a helpful modification no matter where the project goes, in terms of switching to Allegro 5, or SDL, or what have you. I will take a stab at doing this in the free time I have here and there.

    More urgently, though, we need to do something about the status of the repository, and establish standard procedures (if they don't exist already?) for how patches by contributors are reviewed, what standards are expected from the patches, etc. Do you have thoughts on this?

  8. #8
    Developer ZC Developer
    Gleeok's Avatar
    Join Date
    Apr 2007
    Posts
    4,671
    Mentioned
    228 Post(s)
    Tagged
    10 Thread(s)
    vBActivity - Stats
    Points
    12,301
    Level
    32
    vBActivity - Bars
    Lv. Percent
    54.25%
    Daily Activity
    0%
    Weekly Activity
    1.63%
    Monthly Activity
    19.42%
    Quote Originally Posted by DarkDragon View Post
    That makes sense. Wrapping Allegro code into a small set of functions (and cleaning up the code a bit in the process) seems like a helpful modification no matter where the project goes, in terms of switching to Allegro 5, or SDL, or what have you. I will take a stab at doing this in the free time I have here and there.
    We should probably decide if the end goal is going to be rendering on the GPU or not. This affects all the palette code, as well as most of maps.cpp and part of link.cpp.

    Quote Originally Posted by DarkDragon View Post
    More urgently, though, we need to do something about the status of the repository, and establish standard procedures (if they don't exist already?) for how patches by contributors are reviewed, what standards are expected from the patches, etc. Do you have thoughts on this?
    Not really. >_<

    I think we need to modify the quest loading routine to handle quest files that aren't binary compatible with it though. So if someone else changes the format of a quest file it will bail out instead of corrupting it 'gracefully'.
    This post contains the official Gleeok™ seal of approval. Look for these and other posts in an area near you.

  9. #9
    ZC Contirbutor ZoriaRPG's Avatar
    Join Date
    Oct 2006
    Location
    Prydon Academy
    Posts
    920
    Mentioned
    81 Post(s)
    Tagged
    1 Thread(s)
    vBActivity - Stats
    Points
    3,322
    Level
    18
    vBActivity - Bars
    Lv. Percent
    54.55%
    Daily Activity
    0%
    Weekly Activity
    15.24%
    Monthly Activity
    67.36%
    Quote Originally Posted by Gleeok View Post
    We should probably decide if the end goal is going to be rendering on the GPU or not. This affects all the palette code, as well as most of maps.cpp and part of link.cpp.



    Not really. >_<

    I think we need to modify the quest loading routine to handle quest files that aren't binary compatible with it though. So if someone else changes the format of a quest file it will bail out instead of corrupting it 'gracefully'.
    Quote Originally Posted by DarkDragon View Post
    That makes sense. Wrapping Allegro code into a small set of functions (and cleaning up the code a bit in the process) seems like a helpful modification no matter where the project goes, in terms of switching to Allegro 5, or SDL, or what have you. I will take a stab at doing this in the free time I have here and there.

    More urgently, though, we need to do something about the status of the repository, and establish standard procedures (if they don't exist already?) for how patches by contributors are reviewed, what standards are expected from the patches, etc. Do you have thoughts on this?

    Here's my question: Aside from Gleeok, Saffith, potentially DD, and the three of us doing 2.future, who is even participating at this point? Tamamo bailed. The bloke who did some minor stuff to the dead master branch never joined the forum, and all his changes were cut, AFAIK.

    Sorting the repo should be the highest priority. It's not possible to do a push at all at present, because there's no logical candidate set up.


    Featured Scripts & Headers: RPG.zh ( v. a0.97.1 ) ( RPG.zh Thread ) | Zelda 3 Thief's Town Treasure Chest Minigame (ffc) | Bobomb (enemy)
    ZScript & ZC-Related Pastebin | Quests and ZScript Repository | ZC Dev & Betas | Latest ZC 2.54 Beta | YouTube Channel
    All of the code that I create and publish here is free for use, modification and distribution under the GPL v2.0, or v3.0 where applicable..

  10. #10
    Administrator DarkDragon's Avatar
    Join Date
    Oct 2001
    Posts
    6,208
    Mentioned
    59 Post(s)
    Tagged
    0 Thread(s)
    vBActivity - Stats
    Points
    10,720
    Level
    30
    vBActivity - Bars
    Lv. Percent
    71.22%
    Daily Activity
    0%
    Weekly Activity
    1.63%
    Monthly Activity
    32.94%
    What is 2.future?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
About us
Armageddon Games is a game development group founded in 1997. We are extremely passionate about our work and our inspirations are mostly drawn from games of the 8-bit and 16-bit era.
Social