sorlok_reaves
|
 |
Posted on: July 07, 2014, 03:55:01 pm |
|
|
 Joined: Dec 2013
Posts: 260
|
Hey all, Now that I've finally gotten past the intro cutscene, I figured it would be a good time to formally introduce my project: porting Iji to ENIGMA (and thus, a native Linux port). Requisite gameplay video: https://www.youtube.com/watch?v=iBErmgih7fUThe video describes some basics about what I'm trying to accomplish. In terms of commits to ENIGMA, I have been pushing relevant commits upstream for months, but there will always be some hacks that I feel should not be included in the engine. Thus, you'll have to use my Github fork of ENIGMA to run this. NOTE: Game is super-crashy, and may hang your system.
|
|
|
Logged
|
|
|
|
Josh @ Dreamland
|
 |
Reply #1 Posted on: July 07, 2014, 07:50:51 pm |
|
|
Prince of all Goldfish
 Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
Looking good; the tearing's a little disturbing, but you've made some great progress, it seems.
Could you enumerate the changes you don't want to push to ENIGMA? I'm aware of the "backslashes in paths" hack, but I believe proper macros will nip that issue in the bud down the road. I'm interested in knowing what else you changed, because I want to get macros, metaprogramming, and plugin scripting to be powerful enough for you to be able to enact those changes as part of the game file. I can't make any promises without knowing them, obviously, but having some time to think about them will certainly help.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
sorlok_reaves
|
 |
Reply #2 Posted on: July 08, 2014, 12:50:36 am |
|
|
 Joined: Dec 2013
Posts: 260
|
Sure, here's a list of the changes I don't want to merge at the moment: - image_single - implementing this is not easy, and the 3 ways I've tried doing it make the regular drawing code much, much messier.
- with+script - my fix is inefficient, and most people don't use with+script.
- depth::remove() - this was sometimes encountering null pointers, a sign of a much bigger bug. I put a band-aid on it, but I think fixing the actual bug is the right solution.
- texturecache fix - my solution works, but is naive. Robert said he'll fix it his own way once GM 1.99 beta (or something) becomes stable.
- variable auto-renaming - I haven't implemented this yet, but I want to automatically replace, e.g., "try = 10" with "try_ = 10". The way I plan to do it will be inefficient.
In short, all of these have sub-par solutions that I wouldn't feel right pushing on ENIGMA for the sake of a six year old game. If I come up with a stronger, more efficient solution for any of them, I'll gladly push a patch upstream. (Some of these "better solutions" require the new script compiler.) And, of course, you'll still get pull requests from me for fixes that I feel are correct (e.g., #771). Oh, and the extensions idea you mentioned sounds marvelous. 
|
|
|
Logged
|
|
|
|
Goombert
|
 |
Reply #3 Posted on: July 08, 2014, 09:57:22 pm |
|
|
 Location: Cappuccino, CA Joined: Jan 2013
Posts: 2993
|
This is very nice sorlok, you are actually inspiring me, keep up the good work!
Sorry If I generally appear ignorant on compiler related issues, but it's because I usually am, I will speak up if I feel the need to however, but for the most part that stuff is best directed at Josh.
|
|
|
Logged
|
I think it was Leonardo da Vinci who once said something along the lines of "If you build the robots, they will make games." or something to that effect. 
|
|
|
Josh @ Dreamland
|
 |
Reply #4 Posted on: July 08, 2014, 11:20:43 pm |
|
|
Prince of all Goldfish
 Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
Ah, so band-aid stuff. Though, as far as I know, image_single was implemented; I'm not sure when that changed. Probably when polygone decided to redo my subimage handling when he moved it. It's not difficult to support image_single; you just check if it isn't -1 before you add image_speed to the current subimage.
I am hoping that a new instance system will fix your second and third points. That's way down the road.
No comment on your fourth point.
Your final point, TGMG addressed in a regex replacer a while back. Good luck tracking it down, though. In the future, I intend to allow special handling of that in the EDL lexer. It's extremely easy, in fact; all you'll do is duplicate the default lexer and set [snip=cpp]keywords["try"] = TT_INVALID[/snip], then in the handler below, [snip=cpp]return token_t(TT_IDENTIFIER, "$try", filename, line, pos - lpos);[/snip]. A quicker (uglier) quick fix is just to use an ENIGMA-side #define. I.e, in definitions, put something like this:
#ifdef JUST_DEFINE_IT_RUN // To be interpreted only by ENIGMA #define try try_ #define catch catch_ #define time time_ #endif
|
|
« Last Edit: July 08, 2014, 11:26:00 pm by Josh @ Dreamland »
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
sorlok_reaves
|
 |
Reply #5 Posted on: July 09, 2014, 04:31:21 pm |
|
|
 Joined: Dec 2013
Posts: 260
|
This is very nice sorlok, you are actually inspiring me, keep up the good work! That's great to hear! The inspiration works both ways in fact, so thanks to you as well! Sorry If I generally appear ignorant on compiler related issues, but it's because I usually am, I will speak up if I feel the need to however, but for the most part that stuff is best directed at Josh. As strange as it may sound, the compiler source is actually not a problem for me. Generally the issue for me is not getting something done, but getting it done in a non-polynomial amount of time.  Ah, so band-aid stuff. Though, as far as I know, image_single was implemented; I'm not sure when that changed. Probably when polygone decided to redo my subimage handling when he moved it. It's not difficult to support image_single; you just check if it isn't -1 before you add image_speed to the current subimage. The image_single stuff was revoked in a later commit, since you actually have to do a bit more than just check -1. In particular, when image_single is set back to -1, you have to revert to the previous frame (before the original call to set image_single). Or something like that; I haven't checked in a while. Your final point, TGMG addressed in a regex replacer a while back. Good luck tracking it down, though. In the future, I intend to allow special handling of that in the EDL lexer. It's extremely easy, in fact; all you'll do is duplicate the default lexer and set [snip=cpp]keywords["try"] = TT_INVALID[/snip], then in the handler below, [snip=cpp]return token_t(TT_IDENTIFIER, "$try", filename, line, pos - lpos);[/snip]. A quicker (uglier) quick fix is just to use an ENIGMA-side #define. I.e, in definitions, put something like this: I'll have a look. Basically, my current strategy is "keep nasty hacks in my fork until upstream has better systems in place for handling this kind of thing". So I'll wait for the EDL lexer extensions, rather than hacking in some macros now. I've still got tons of legitimate work to do on Iji, so the hacks can stay in stasis for a while.
|
|
|
Logged
|
|
|
|
Josh @ Dreamland
|
 |
Reply #6 Posted on: July 10, 2014, 09:20:00 pm |
|
|
Prince of all Goldfish
 Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
Sounds good. Please keep us apprised of any more of these hacks that arise; it's good to have them in mind when designing backend components.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
|
sorlok_reaves
|
 |
Reply #8 Posted on: July 18, 2014, 12:34:59 am |
|
|
 Joined: Dec 2013
Posts: 260
|
Update: message boxes outside of cutscenes are actually different objects from those inside cutscense. So now chatting via triggers works: https://www.youtube.com/watch?v=UNecqkDnufAThere'll be a few pull requests rolling in later related to this.
|
|
|
Logged
|
|
|
|
|
|
|
|
|
|
|