Jump to content

The Shadow Colorization - COMPLETE (sorry for the delay)


Recommended Posts

Greetings everyone,

 

I've always lived by the philosophy that you have no right to complain if you aren't willing to dig in and get your hands dirty yourself.  When I picked up a bunch of new Pin2DMDs for my games recently (thanks dzorbas!) one of them that was getting the display is lacking a completed colorization - the Shadow.  So, instead of waiting for someone else to do it, I decided to tackle it on my own.   I'm currently at the stage of having everything that is in the known dump files colorized and I can now play the game with most of it now triggering the right Scenes; but, I'm going to eventually have to figure out a problem that has been elusive in figuring out the best way forward.  The game as a bunch of scenes that dynamically transition using various fades/animations/pixelizations that I'm not sure how to try to trigger or if they can't be triggered - mask the fact that they don't have the proper transition in place.

 

The most prominent challenge I have right now is how to deal with the Hotel Monolith mode sequence.   I've animated the intros into and out of the mode just fine; but, the mode is a 3 tier sequence where there is random "noise" of the hotel and each shot to the Sanctum "builds/adds" more noise until the final sequence the hotel is revealed.  I've stared long enough at the hashes being generated in the sequence and as of yet, I have yet to find any repeatable pattern in them to try to either latch onto or manually call each frame.  I've handled other dynamic sequences in the game by using a D-mask for some static part of the screen; but, this sequence doesn't have anything that I think I could use.  The only thing constant in the frame is the "ground" which is a single row of pixels and there are other sequences in the game that also use a this, so I don't think it would work as a trigger.  

 

Attached is a photo the first tier of the hotel sequence with an example of the random noise.  The color mask I want to overlay is simply the finished hotel and then the dots all are the right colors.  The way it's working right now, I can't even trigger a mask consistently to make it a default.  

 

I think I could get clever and have the lead into the first tier have a delay in it where it leaves the palette up; but, the game then uses dynamic transition between each of the tiers that overlays the transition over the top of the random noise.

 

I would certainly appreciate any suggestions on the best way to handle this as it may point the best way to handle the same type of transition that happens in the Vengeance mode and maybe with some of the transitions that happen the attract mode as well.

 

Many thanks in advance for advice on this.  Once I get this sorted out and everything working in the existing dumps, I'll get the rest of the animations from my game and share it with the community.  

 

BTW - novice advice for anyone starting a project.  Don't be afraid to dig in and get started coloring when you make up your scenes; but, be ready to go back and make individual keyframes as even the best of scenes will eventually have the timings fall apart.   My current method is I give a sequence 1 or 2 tries to get it working as I chopped it up at the start; but, after that - it's just faster to go with individual frames.  It seems slower; but, you make up a lot of time by not wasting it trying to force it to work.  

 

hm_1.JPG

Edited by jedimastermatt
Link to comment
Share on other sites

  • Content Provider

I dont know if this pertains to your situation but one trick I learned with random animations on Cirqus Voltaire was the exploding bolts and doves during the Ringmaster score. The background was concentric circles with the players score, and whenever you’d hit the Ringmaster, an animation would play. There was no way to make it all work, so I isolated the doves / bolts, and used a four color black palette as a “mask” to hide everything else around those sprites. So when you play the color Cirqus, the doves appear on a black screen instead of in front of the score. It’s pretty effective and of course you could actually make the covering any color or drawing you like. Good luck with the project, it’s a rabbit hole. 

Link to comment
Share on other sites

Some progress on this.   I did go back and notice that the "ground/sidewalk" at the bottom of the frame is actually 1 pixel off the bottom and I believe it is the only sequence in the game that is like this.  I'm able to at least put a d-mask using the last two rows of pixels and can at least trigger the right color mask.   I'm going to try to next use that d-mask to make a leap into a layered color mask sequence to then try to account for the dynamic transitions into the awakening sequence and hopefully trigger the "sparkles" after the reveal.  

 

At least this problem has a path forward.   I'll still need to try to figure out the rest of the transitions.  

Link to comment
Share on other sites

  • jedimastermatt changed the title to Thanos mode engaged - a.k.a. taking the Shadow colorization into my own hands and need some help on triggering a bunch of dynamic transitions (Update - LCM questions now)

Still chugging away at this.   Getting close to hopefully a point where the game is playable without drops.   

 

I have another question for the group regarding LCM usage.  To make an LCM run properly, the mode has to be engaged from a "constant" hash to start the scene - is that correct?  For the Shadow, I can use LCM for the Duel of the Wills/Phurba video mode where it stays in the mode with no external triggers until it finishes.  I can't use (or at least not efficiently) LCM for something like the Beryllium Sphere/ball in hallway mode because it leaves the LCM to bounce out other triggers before resuming the frames inside the mode and the point it rejoins the animation is where it left off further down the hallway.   From what I understand, I can't have the keyframes within the LCM all be externally triggered to launch the proper scene.  Is that correct?  I guess I could make a separate LCM scene for each frame of the hallway animation; but, it wouldn't gain anything over simply breaking the scene into separate frames and then use a D-Mask to grab everything except the dynamic score and timer.  

 

I did use an LCM for the Punish the Guilty/hostage gangster mode and while it is colorized, I'm not getting the right colorized frames over the top of guy with the gun when I masked just the gangster pivoting.  So, I'll need to work on that some more too.    The game did throw a curve ball at me last night though.   When running through all the modes to test the animation timings I saw that randomly the gangster appears on the right side of the screen and not the left.  I'll need to capture that recording at some point.  

Link to comment
Share on other sites

  • Content Provider
1 hour ago, jedimastermatt said:

To make an LCM run properly, the mode has to be engaged from a "constant" hash to start the scene - is that correct?

Yes ! But you can also assign multiple Keyframes to a LCM scene as a starting point ! 

 

1 hour ago, jedimastermatt said:

From what I understand, I can't have the keyframes within the LCM all be externally triggered to launch the proper scene.  Is that correct?  I guess I could make a separate LCM scene for each frame of the hallway animation; but, it wouldn't gain anything over simply breaking the scene into separate frames and then use a D-Mask to grab everything except the dynamic score and timer.  

Not 100% right ! LCM can also trigger and colorize single elements individally within a frame and make it easier to colorize scenes which have a lot of variations of the elements. See theVideo Mode in the  Getaway thread for more in depth information about that.

 

I can´t give you more information because I´m not familiar with the shadow gameplay and animations.

Link to comment
Share on other sites

Here's the hallway sequences animation.  I did find a looping pattern after about 75 frames.   Since it can get interrupted at any point in the scene and re-enter, I think the best path forward is individual frames unless anyone has other suggestions.  

 

Looking at the hashes, I may be able to use the raw hashes as there is a layer with it minus the scores.   I'll need to sort through them again to make sure.  

sphere_rolling_rolling_rolling.gif

Link to comment
Share on other sites

43 minutes ago, lucky1 said:

Yes ! But you can also assign multiple Keyframes to a LCM scene as a starting point ! 

 

Not 100% right ! LCM can also trigger and colorize single elements individally within a frame and make it easier to colorize scenes which have a lot of variations of the elements. See theVideo Mode in the  Getaway thread for more in depth information about that.

 

I can´t give you more information because I´m not familiar with the shadow gameplay and animations.

Thanks Lucky.

 

I was uploading the animation example as you responded.

 

The hallway sequence is ~30 frames long in forward/right motion before the background elements loop.  The sphere/ball in the foreground rocks back and forth and I discovered when dumping all the frames into a sequence that the ball moves out of sequence in the 30 frame loop, so it's going to take double the loop to get it back into a repeating pattern.

 

While this animation runs, it gets interrupted by you hitting shots and runs a separate "wire cutting/bomb diffusing" scene before jumping back into the animation at a different point than the starting one.  

 

I think that because the entry point into the animation is variable and because the animation for the background is always moving forward - I don't think I can leap into the LCM without hitting it against various hashes that it can come back into the animation with.  Unless, I'm not understanding the possible options in the editor.  

Link to comment
Share on other sites

Thanks Lucky.  The LCM scene worked by using  74 keyframes set to the single scene and then the LCM had all the frames of animation inside of it.  

 

On to the next obstacle.   Still have to work the bugs out of Underwater Doom and Punish the Guilty.  They are both colored just not triggering right and in the case of Guilty, I will still need to capture the animations where the gangster is on the right side of the screen.  

 

 

punish_the_guilty.gif

underwater_doom.gif

Link to comment
Share on other sites

Here's the Hotel Monolith modes (phases 1 -4).  I did confirm the "sparkles" in the final phase are either random or on such a long loop that I don't think it's worth trying to figure out, so I've adjusted the mask to exclude the middle section with the score where it seems the sparkles break the bottom two lines of pixels which then makes the triggering mask not work.  

 

 

monolith_phase1.gif

monolith_phase2.gif

monolith_phase3.gif

monolith_phase4.gif

Link to comment
Share on other sites

  • Content Provider
9 hours ago, jedimastermatt said:

Since it can get interrupted at any point in the scene and re-enter, I think the best path forward is individual frames unless anyone has other suggestions.  

Looking at a dump I saw always the same starting frame when entering and reentering the scene.

It is either with or without score. Using a mask of the top 2 lines I would say the whole scene should trigger with a single keyframe.

 

 

1.gif

2.gif

Link to comment
Share on other sites

  • Content Provider
5 hours ago, jedimastermatt said:

Here's the Hotel Monolith modes (phases 1 -4).  I did confirm the "sparkles" in the final phase are either random or on such a long loop that I don't think it's worth trying to figure out, so I've adjusted the mask to exclude the middle section with the score where it seems the sparkles break the bottom two lines of pixels which then makes the triggering mask not work.  

Looking at a dump for that scene I would use the lowest 2 lines in the score area to catch thethe solid line togetehr with the pixels of commas below the score. You may have some keyframes with different positions of the commas but still it should work

Link to comment
Share on other sites

19 hours ago, lucky1 said:

Looking at a dump I saw always the same starting frame when entering and reentering the scene.

It is either with or without score. Using a mask of the top 2 lines I would say the whole scene should trigger with a single keyframe.

 

 

1.gif

2.gif

 

Thanks again Lucky.  The dumps for this game only have a single run though this mode and what I'm seeing on my real game, the entry point into the mode can be further along in the hallway animation depending on if you trigger something else on the play field.   Have multiple keyframes have fixed this problem; but, with the glass off and letting the animation loop over and over confirms the sphere/ball position is somewhat dynamic.   Using Vpin to capture the dump I've got two clean runs through the hallway now and only if I let it go for more than that on my real pin does the coloring start to fall apart as the ball rocks back and forth.  

Link to comment
Share on other sites

19 hours ago, lucky1 said:

Looking at a dump for that scene I would use the lowest 2 lines in the score area to catch thethe solid line togetehr with the pixels of commas below the score. You may have some keyframes with different positions of the commas but still it should work

 

I've got this mode mostly working.  My original fix was to use the bottom two lines across the entire bottom of the screen.  It works fine until "phase 4" when the hotel is fully revealed.  Then the game adds these "sparkle" animations that appear to be random.  To bypass most of this, I'm leaving out the middle of the mask where the score is as that area does get more of the dynamic sparkles than the edges.   I've been upping the delay on this this and I think I can bypass the dropped frames if the sparkles appear there.  

Link to comment
Share on other sites

This is the mode I was cleaning up today - Underwater Doom.  It's got a static background with water that is rising.  The water is a 3 frame loop and I just needed to capture all of the frames at the various levels.  I dumped them into an LCM, masked the score and the "faucet/pipes" out and added keyframes pointing to it for each.  I'm getting some odd behavior that one specific water level where in Vpin it's either skipping a frame or two or it's not triggering properly.   I've done a couple of capture sessions and all of the frames are the same.   I've upped the delays on these frames to see if it's just ending a frame to early and it's made some improvement.   I'll go out to the game room tomorrow to try it on the real machine.   

 

Still making progress.

 

Here's another preview of Vengeance mode. 

underwater_doom_water.gif

vengeance.gif

Link to comment
Share on other sites

Spent the day working on mode transitions.  This game has a ton of those damn irises into and out of things.  I could probably share a video soon.   It's really getting close to a 1.0 state.   Still need to clean up the video Phurba/Duel of Wills mode as I didn't realize that the frames used as keys only have the object that is being keyframed colored.  That shouldn't take too long to do.  

 

 

Here are a few more examples of various animations to enjoy in the interim.  

 

bally_shadow.gif

bonus_x.gif

cab_l_r.gif

dont_move.gif

farley_mode_start.gif

khan_defeated.gif

shouldve_called_uber.gif

wallst_stonks.gif

Edited by jedimastermatt
Link to comment
Share on other sites

  • jedimastermatt changed the title to Thanos mode engaged - a.k.a. taking the Shadow colorization into my own hands (progress update)

Focused on the Duel of Wills/Phurba video mode and getting it smoothed out as much as possible.  A couple of things I learned as I went along re: LCM video mode animations:

 

- After trying to avoid coloring/using "half" frames in doing the static animations, for an interactive video mode - you really need to account for them.  If you don't, you start getting all sorts of drops.

- I still found value in adding some delays as those short half frames usually weren't long enough.  Ended up setting everything for 200 and that has worked well. 

- Make sure you grab any frames that have any sort of overlaps with different layers as that can cause havoc.  

 

I think I've got this video mode running quite well.  When doing my colorizations so far, anything with the Phurba dagger I've left it as one pallet of gold as I knew the video mode would cause some potential issues if I tried to color the "head/top" as gold and the blade as gray.   I've worried how the LCM would react if I attempted to use two pallets, gold and gray, for the single object of the knife falling.  I may circle back to it later and try it out.  

 

I will eventually need to try to handle the various Phurba daggers that animate in the attract mode over the top of the dynamic scores.   Not too sure how I'll deal with that just yet.   Right now, they aren't really specially colored in my attract mode. 

 

Here are a couple quick gifs of animations to chew on until next time.

 

 

khan_superjackpot.gif

mongol_attack.gif

Link to comment
Share on other sites

Still slugging away at this.  Got the last of the modes that weren't working properly triggering - Punish the Guilty.   I've been able to grab all the animation frames for this mode for the gangster on the right side of the screen for him turning back and forth; but, since it seems that this location is completely random on a low probability of happening - of course when I did get it with Vpin running to capture, there was another mode running on top of it and it came out of that animation cycle just before this mode finished as well.  I still need to grab the frames with the gun going off on the right side location.  

 

Since it's far enough along, I think now is a good time to share some videos.   One is a manual trigger of all the modes with the glass off and the other is just a quick gameplay cycle so you can see it under normal circumstances. 

 

Still a lot of polishing that is needed and I "think" I figured out a way to colorize the dynamic Phurba/dagger transitions in attract mode.  It will be a ton of work; but, will be worth it if it does work.  

 

Enjoy the videos and let me know if you have any questions.

 

 

 

*I am having a bit of an oddity with the Editor in that the Real Pin export suddenly stopped changing the date of the export after 4/2/2022 at 12:55.  While I can export the file and it seems to be working, the date for it isn't changing.  The Vpin is working properly and updating the date/time.   I'll make a separate thread about it.  

Link to comment
Share on other sites

  • jedimastermatt changed the title to Thanos mode engaged - a.k.a. taking the Shadow colorization into my own hands (progress update-videos attached)

Didn't get much done today.  Still trying to get the missing gangster position captured where he's firing the gun on the right side.   Have all the frames to have smooth turning motion; but, don't have the 3 gunshot locations.    Had 3 seconds of the mode captured and luckily had enough to complete the motion; but, still need the 3 frames from the gunshot.  

 

Since I'm using an LCM for this mode, in theory - could I "create" the missing frames by inserting the gunfire using the specific pixels from the other side?   In replace mode, I might be able to; but, I don't think that would work in LCM.

punishtheguilty_rightside.JPG

punishtheguilty.gif

Link to comment
Share on other sites

Success.  I was able to get the missing frames.  Not sure if it was the "fix" but I accidently got a Vengeance mode started and then hit the mode start and triggered the right side location.  

 

All of this trial and error did accomplish something that was productive - using VPin, I found and easy way to capture all the frames from a running animation.   Since Visual Pinball and PinMame are their own programs, you can actually suspend Visual Pinball controlling the physics of the ball while leaving PinMame running.  A simple press of the Windows key to pop up the Start Menu pauses Visual Pinball and the ball and PinMame keeps cranking out frames.   

 

Doing this easily allowed me to grab all the mode animation frames as I just had to start each and let it run while paused and start it back up.  

 

For example, the Sphere mode in the hallway above doesn't have much of a repeating pattern; but, it will occasionally position the ball in the same rotation at the same point along the hallway causing a duplicate frame here and there.  Using the method above, I was able to grab all the unique frames from an uninterrupted hallway sequence into and LCM ~300 frames total.  

 

Going to circle back and cleanup all the modes to make sure I've got all the frames accounted for and then keep working on what is missing or not working.   I have a list of 28 items that need addressed in the gameplay and then will tackle/cleanup the attract mode.  

 

Getting closer to the light at the end of the tunnel. 

Link to comment
Share on other sites

2 hours ago, phoerber said:

Watching your progress makes me want to get this game back in the collection. I want dibs if you ever decide to sell yours, it's a beaut!

 

Way to go man, awesome work!!!!!

 

Thanks.  It's a keeper in my collection.  I can't imagine getting rid of it as I love the quick ball times and I put a lot of work into the custom PinSound orchestration.  I love Goldsmith's soundtrack to the movie and it was a labor of love to put that together.  At the end of this project, I don't know what I've spent more time in the audio package or the colorization.  

 

Still making progress.  I've got Sphere completely smoothed out and working through all the frames.  Have the wire cutting LCM working.  I also got the Underwater Doom mode animating smoothly all the way to the top now as well.  I was cleaning up the Farley mode tonight and have the background working smoothly; but, for some reason - the punch LCM is triggering and firing off the first set of frames fine; but, it's not finishing it out in sync.  I'll go back tomorrow and see if I'm missing some frames or need a delay and if it's leaving the LCM without a way back to it.

 

Like most things, you learn so much as you go along and while it's nice for me to have 99% of the scenes colored - in some ways I'm spending time now undoing some early keyframes that are causing havoc.   Yesterday, the Underwater Doom mode had 1 frame dropping at about half water level.   I eventually found the issue by removing all the keyframes except the ones pointing to the LCM with all the water levels.  Without any other keyframe, it worked fine.  It turned out that a D-mask that used a small slice for another mode also shared the same hash as that one frame inside the LCM.  Once I fixed that, it worked fine. 

Link to comment
Share on other sites

4 hours ago, jedimastermatt said:

 

Thanks.  It's a keeper in my collection.  I can't imagine getting rid of it as I love the quick ball times and I put a lot of work into the custom PinSound orchestration.  I love Goldsmith's soundtrack to the movie and it was a labor of love to put that together.  At the end of this project, I don't know what I've spent more time in the audio package or the colorization.  

 

Still making progress.  I've got Sphere completely smoothed out and working through all the frames.  Have the wire cutting LCM working.  I also got the Underwater Doom mode animating smoothly all the way to the top now as well.  I was cleaning up the Farley mode tonight and have the background working smoothly; but, for some reason - the punch LCM is triggering and firing off the first set of frames fine; but, it's not finishing it out in sync.  I'll go back tomorrow and see if I'm missing some frames or need a delay and if it's leaving the LCM without a way back to it.

 

Like most things, you learn so much as you go along and while it's nice for me to have 99% of the scenes colored - in some ways I'm spending time now undoing some early keyframes that are causing havoc.   Yesterday, the Underwater Doom mode had 1 frame dropping at about half water level.   I eventually found the issue by removing all the keyframes except the ones pointing to the LCM with all the water levels.  Without any other keyframe, it worked fine.  It turned out that a D-mask that used a small slice for another mode also shared the same hash as that one frame inside the LCM.  Once I fixed that, it worked fine. 

Just incredible work so far, clearly a labor of love. I for one can't wait to see the finished product!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...