Pages: 1 2
Author Topic: Iji on ENIGMA  (79,947 Views)
Offline (Unknown gender) sorlok_reaves

Contributor
Joined: Dec 2013
Posts: 260
View profile
Posted on: July 07, 2014, 08:55:01 PM
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=iBErmgih7fU

The 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.
Offline (Unknown gender) Josh @ Dreamland

Prince of all Goldfish
Developer
Joined: Feb 2008
Posts: 2,950
View profile
Reply #1 Posted on: July 08, 2014, 12:50:51 AM
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.
Offline (Unknown gender) sorlok_reaves

Contributor
Joined: Dec 2013
Posts: 260
View profile
Reply #2 Posted on: July 08, 2014, 05:50:36 AM
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. :)
Offline (Unknown gender) Goombert

Developer
Joined: Jan 2013
Posts: 2,991
View profile
Reply #3 Posted on: July 09, 2014, 02:57:22 AM
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.
Offline (Unknown gender) Josh @ Dreamland

Prince of all Goldfish
Developer
Joined: Feb 2008
Posts: 2,950
View profile
Reply #4 Posted on: July 09, 2014, 04:20:43 AM
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:

Code (cpp) Select
#ifdef JUST_DEFINE_IT_RUN // To be interpreted only by ENIGMA
#define try try_
#define catch catch_
#define time time_
#endif
Offline (Unknown gender) sorlok_reaves

Contributor
Joined: Dec 2013
Posts: 260
View profile
Reply #5 Posted on: July 09, 2014, 09:31:21 PM
Quote from: Robert B Colton on July 09, 2014, 02:57:22 AM
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!

Quote from: Robert B Colton on July 09, 2014, 02:57:22 AMSorry 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. :D

Quote from: Josh @ Dreamland on July 09, 2014, 04:20:43 AM
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.


Quote from: Josh @ Dreamland on July 09, 2014, 04:20:43 AMYour 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.
Offline (Unknown gender) Josh @ Dreamland

Prince of all Goldfish
Developer
Joined: Feb 2008
Posts: 2,950
View profile
Reply #6 Posted on: July 11, 2014, 02:20:00 AM
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.
Offline (Unknown gender) sorlok_reaves

Contributor
Joined: Dec 2013
Posts: 260
View profile
Reply #7 Posted on: July 13, 2014, 06:44:01 PM
Quote from: Josh @ Dreamland on July 11, 2014, 02:20:00 AM
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.

Absolutely.
Offline (Unknown gender) sorlok_reaves

Contributor
Joined: Dec 2013
Posts: 260
View profile
Reply #8 Posted on: July 18, 2014, 05:34:59 AM
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=UNecqkDnufA

There'll be a few pull requests rolling in later related to this.
Offline (Unknown gender) sorlok_reaves

Contributor
Joined: Dec 2013
Posts: 260
View profile
Reply #9 Posted on: July 25, 2014, 05:01:01 AM
New alpha release, with.... actual gameplay??? That's right.
https://www.youtube.com/watch?v=ZPZpTdGFGqY&feature=youtu.be
Offline (Unknown gender) egofree

Contributor
Joined: Jun 2013
Posts: 601
View profile
Reply #10 Posted on: July 25, 2014, 09:23:14 AM
It looks very nice, thanks for sharing and for improving enigma also !  (Y)
Offline (Unknown gender) sorlok_reaves

Contributor
Joined: Dec 2013
Posts: 260
View profile
Reply #11 Posted on: July 26, 2014, 06:21:59 PM
Quote from: egofree on July 25, 2014, 09:23:14 AMIt looks very nice, thanks for sharing and for improving enigma also !  (Y)

You're welcome! Can't wait for the day when I can get a nice, playable beta version out to all you guys. :)
Offline (Unknown gender) edsquare

Member
Joined: Apr 2014
Posts: 402
View profile
Reply #12 Posted on: July 26, 2014, 06:52:55 PM
Quote from: egofree on July 25, 2014, 09:23:14 AM
It looks very nice, thanks for sharing and for improving enigma also !  (Y)

Ditto  (Y)
Offline (Unknown gender) sorlok_reaves

Contributor
Joined: Dec 2013
Posts: 260
View profile
Reply #13 Posted on: August 05, 2014, 11:19:30 PM
New bugfixes. These will both get pull requests soon:
https://www.youtube.com/watch?v=-7VXuxchRCE&feature=youtu.be
Offline (Unknown gender) sorlok_reaves

Contributor
Joined: Dec 2013
Posts: 260
View profile
Reply #14 Posted on: August 10, 2014, 05:51:35 AM
Got really lucky with a bug fix that actually fixed about 10 bugs. The result? Much more playable!
https://www.youtube.com/watch?v=ukV_1_Mr18g
Pages: 1 2