dragons keep(wip in abandonment)

It has been quite a while. I created custom physics for it that you can use if desired. I had to add covers over the ramps to keep the ball from flying off. The dragon looked really bare so I added a texture for scales. I changed some colors because I am not fond of pink. I changed some music. Some of the changes I made are different from the video game so I am not sure you would want to add all that I did but use whatever you wish from my version. I am working on Road Girls right now that has me completely occupied.

 
Ohh I will take a look! Sorry @wild for my lack of communication in the past month. I had hoped to be able to jump back into pinball.
 
Thanks George for info.....

no problem Mark,when you can tell me if there is anything you think I can improve, you know the original table, so any topic is welcome.

thanks for the thumbs.
 
Hey @wild - one thing I was thinking -- is there a way to get more shadows and highlights from lights on the playfield? For example this one below you can see highlights and shadows near the slingshots. This would add better depth to making your Dragon's Keep recreation game look like a real table. I'm still looking at other things as well :)1597694899108.png
 
I can answer that. Here...
Note I wrap my bulb brightness code in the first subroutine. After the sub example, I have included just 4 lines of my bulb code. I have 3 seperate settings, so it should be pretty easy to track the numbers and adjust to suit. You need to call fpxSetTableLighting() in the Bam_Init() subrorutine

Const fpxBAMpfLighting=3 ' sets overall playfield lighting (1=bright/4=darkest)(Note:This affects bulb brightness)

' Playfield lighting
Sub fpxSetTableLighting()
If fpxBAMpfLighting=1 Then
AddDebugText "fpxBAMpfLighting=1: Noon"
fpxBulbBrightness=1:fpxBulbGlowRadius=45:fpxBulbGlowBrightness=.9 ' sets bulb intensity
fpxLensBrightness=2.5:fpxLensGlowRadius=35:fpxLensGlowBrightness=.75 ' sets light lens intensity
fpxPlasticBrightness=2:fpxPlasticGlowRadius=50:fpxPlasticGlowBrightness=.1 ' sets plastics intensity
fpxBulbBGBrightness=8:fpxBulbBGGlowRadius=100:fpxBulbBGGlowBrightness=6.9 ' sets bulb intensity
xBAM.Lights.EnableNewRenderer = TRUE
xBAM.Lights.MainLightLock = FALSE
xBAM.Lights.SetMainLightPosition 0, 650, 500
xBAM.Lights.SetMainLightProperties 1, 0.5, 0.85, 0.085
xBAM.Lights.SetMainLightAttenuation 1, 0, 0
xBAM.Lights.SetOtherLightsAttenuation 1.0, 0, 0.45
xBAM.Lights.EnablePostprocessing = FALSE
xBAM.Lights.SetPostprocessing 1, 0, 1, 1
xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 2.2, 1, 1, 1, 0.2
End If

If fpxBAMpfLighting=2 Then
AddDebugText "fpxBAMpfLighting=2: six pm"
fpxBulbBrightness=1:fpxBulbGlowRadius=45:fpxBulbGlowBrightness=.9 ' sets bulb intensity
fpxLensBrightness=2.5:fpxLensGlowRadius=35:fpxLensGlowBrightness=.75 ' sets light lens intensity
fpxPlasticBrightness=3:fpxPlasticGlowRadius=50:fpxPlasticGlowBrightness=.1 ' sets plastics intensity
fpxBulbBGBrightness=8:fpxBulbBGGlowRadius=100:fpxBulbBGGlowBrightness=6.9 ' sets bulb intensity
xBAM.Lights.EnableNewRenderer = TRUE
xBAM.Lights.MainLightLock = FALSE
xBAM.Lights.SetMainLightPosition 0, 650, 500
xBAM.Lights.SetMainLightProperties 1, 0.4, 0.95, 0.075
xBAM.Lights.SetMainLightAttenuation 1, 0, 0
xBAM.Lights.SetOtherLightsAttenuation 0.2, 0, 0.5
xBAM.Lights.EnablePostprocessing = FALSE
xBAM.Lights.SetPostprocessing 1, 0, 1, 1
xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 2.2, 1, 1, 1, 0.2
End IF

If fpxBAMpfLighting=3 Then
AddDebugText "fpxBAMpfLighting=3: nine pm"
fpxBulbBrightness=1:fpxBulbGlowRadius=45:fpxBulbGlowBrightness=.9 ' sets bulb intensity
fpxLensBrightness=3.5:fpxLensGlowRadius=35:fpxLensGlowBrightness=.75 ' sets light lens intensity
fpxPlasticBrightness=3:fpxPlasticGlowRadius=50:fpxPlasticGlowBrightness=.1 ' sets plastics intensity
fpxBulbBGBrightness=8:fpxBulbBGGlowRadius=100:fpxBulbBGGlowBrightness=6.9 ' sets bulb intensity
xBAM.Lights.EnableNewRenderer = TRUE
xBAM.Lights.MainLightLock = FALSE
xBAM.Lights.SetMainLightPosition 0, 500, 1700
xBAM.Lights.SetMainLightProperties 1, 0.1, 1, 0.05
xBAM.Lights.SetMainLightAttenuation 1, 0, 0
xBAM.Lights.SetOtherLightsAttenuation 0.066, 0, 0.333
xBAM.Lights.EnablePostprocessing = TRUE
xBAM.Lights.SetPostprocessing 1, 0, 1, 1
xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 2.2, 1, 1, 1, 0.2
End IF

If fpxBAMpfLighting=4 Then
AddDebugText "fpxBAMpfLighting=4: Midnight"
fpxBulbBrightness=1:fpxBulbGlowRadius=45:fpxBulbGlowBrightness=.75 ' sets bulb intensity
fpxLensBrightness=4.5:fpxLensGlowRadius=35:fpxLensGlowBrightness=.75 ' sets light lens intensity
fpxPlasticBrightness=7:fpxPlasticGlowRadius=50:fpxPlasticGlowBrightness=.1 ' sets plastics intensity
fpxBulbBGBrightness=8:fpxBulbBGGlowRadius=100:fpxBulbBGGlowBrightness=6.9 ' sets bulb intensity
xBAM.Lights.EnableNewRenderer = TRUE
xBAM.Lights.MainLightLock = FALSE
xBAM.Lights.SetMainLightPosition .5, 500, 1700
xBAM.Lights.SetMainLightProperties 1, 0.1, 1.1, 0.025
xBAM.Lights.SetMainLightAttenuation 1, 0, 0
xBAM.Lights.SetOtherLightsAttenuation 0.066, 0, 0.333
xBAM.Lights.EnablePostprocessing = TRUE
xBAM.Lights.SetPostprocessing 1, 0, 1, 1
xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 1.15, 1, 1, 1, 0.2
End IF
End Sub

' playfield Bulbs
BulbLS1EXT.Brightness=(fpxBulbBrightness):BulbLS1EXT.GlowRadius=(fpxBulbGlowRadius):BulbLS1EXT.GlowBrightness=(fpxBulbGlowBrightness)
BulbLS2EXT.Brightness=(fpxBulbBrightness):BulbLS2EXT.GlowRadius=(fpxBulbGlowRadius):BulbLS2EXT.GlowBrightness=(fpxBulbGlowBrightness)
BulbLeftLaneEXT.Brightness=(fpxBulbBrightness):BulbLeftLaneEXT.GlowRadius=(fpxBulbGlowRadius):BulbLeftLaneEXT.GlowBrightness=(fpxBulbGlowBrightness)
RightSlingshotBulb1EXT.Brightness=(fpxBulbBrightness):RightSlingshotBulb1EXT.GlowRadius=(fpxBulbGlowRadius):RightSlingshotBulb1EXT.GlowBrightness=(fpxBulbGlowBrightness)
RightSlingshotBulb2EXT.Brightness=(fpxBulbBrightness):RightSlingshotBulb2EXT.GlowRadius=(fpxBulbGlowRadius):RightSlingshotBulb2EXT.GlowBrightness=(fpxBulbGlowBrightness/2)
 
@shiva

I have been taking a similar approach. I usually only set GlowRadius to 0 because I don't like the way FP renders the glow on light inserts of the playfield.

I normally also add about 4 nanoflashers to supplement the lighting but only set brightness in the script between 0 and 1.0. It is because whoever created the nanoflasher model reduced the glow to almost 0. When you set brightness above 1.0, the glow starts turning on and the nanoflasher won't work the way it was intended.

I have started using texture lighting in the script and may be able to reduce my reliance on nanoflashers.

George
 
Last edited:
@madmrmax

Hey wild - one thing I was thinking -- is there a way to get more shadows and highlights from lights on the playfield? For example this one below you can see highlights and shadows near the slingshots. This would add better depth to making your Dragon's Keep recreation game look like a real table. I'm still looking at other things as well

your example refers to shadow-maps.....right?
I can add it, I did it for Charlie's Angels, but what I know is ... that to highlight shadow maps well, it also needs a playfield, suitable for shadows, but I can try to insert it

now just to understand, you also ask if there is a way to get more shadows and highlights?
if it is yes, here is the reason for the answer of shiva.....but
I do something similar in my tables, even if the shiva example seems more complex, there is only to do some tests
 
While I was thinking of adding the Dynamic Flipper to this table, I thought if it was possible to add a sound when the ball hits the fins, so I asked Rav, and he kindly made it here is a video....

PS:I make the demo available, but be careful you have to replace the dll with the one inside the zip, which is new
 
Last edited:
.
 
Last edited:
Yes! That is looking really awesome! I love these improvements! Thanks Wild (and everyone else providing help in how to do this)
 
I can answer that. Here...
Note I wrap my bulb brightness code in the first subroutine. After the sub example, I have included just 4 lines of my bulb code. I have 3 seperate settings, so it should be pretty easy to track the numbers and adjust to suit. You need to call fpxSetTableLighting() in the Bam_Init() subrorutine

Const fpxBAMpfLighting=3 ' sets overall playfield lighting (1=bright/4=darkest)(Note:This affects bulb brightness)

' Playfield lighting
Sub fpxSetTableLighting()
If fpxBAMpfLighting=1 Then
AddDebugText "fpxBAMpfLighting=1: Noon"
fpxBulbBrightness=1:fpxBulbGlowRadius=45:fpxBulbGlowBrightness=.9 ' sets bulb intensity
fpxLensBrightness=2.5:fpxLensGlowRadius=35:fpxLensGlowBrightness=.75 ' sets light lens intensity
fpxPlasticBrightness=2:fpxPlasticGlowRadius=50:fpxPlasticGlowBrightness=.1 ' sets plastics intensity
fpxBulbBGBrightness=8:fpxBulbBGGlowRadius=100:fpxBulbBGGlowBrightness=6.9 ' sets bulb intensity
xBAM.Lights.EnableNewRenderer = TRUE
xBAM.Lights.MainLightLock = FALSE
xBAM.Lights.SetMainLightPosition 0, 650, 500
xBAM.Lights.SetMainLightProperties 1, 0.5, 0.85, 0.085
xBAM.Lights.SetMainLightAttenuation 1, 0, 0
xBAM.Lights.SetOtherLightsAttenuation 1.0, 0, 0.45
xBAM.Lights.EnablePostprocessing = FALSE
xBAM.Lights.SetPostprocessing 1, 0, 1, 1
xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 2.2, 1, 1, 1, 0.2
End If

If fpxBAMpfLighting=2 Then
AddDebugText "fpxBAMpfLighting=2: six pm"
fpxBulbBrightness=1:fpxBulbGlowRadius=45:fpxBulbGlowBrightness=.9 ' sets bulb intensity
fpxLensBrightness=2.5:fpxLensGlowRadius=35:fpxLensGlowBrightness=.75 ' sets light lens intensity
fpxPlasticBrightness=3:fpxPlasticGlowRadius=50:fpxPlasticGlowBrightness=.1 ' sets plastics intensity
fpxBulbBGBrightness=8:fpxBulbBGGlowRadius=100:fpxBulbBGGlowBrightness=6.9 ' sets bulb intensity
xBAM.Lights.EnableNewRenderer = TRUE
xBAM.Lights.MainLightLock = FALSE
xBAM.Lights.SetMainLightPosition 0, 650, 500
xBAM.Lights.SetMainLightProperties 1, 0.4, 0.95, 0.075
xBAM.Lights.SetMainLightAttenuation 1, 0, 0
xBAM.Lights.SetOtherLightsAttenuation 0.2, 0, 0.5
xBAM.Lights.EnablePostprocessing = FALSE
xBAM.Lights.SetPostprocessing 1, 0, 1, 1
xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 2.2, 1, 1, 1, 0.2
End IF

If fpxBAMpfLighting=3 Then
AddDebugText "fpxBAMpfLighting=3: nine pm"
fpxBulbBrightness=1:fpxBulbGlowRadius=45:fpxBulbGlowBrightness=.9 ' sets bulb intensity
fpxLensBrightness=3.5:fpxLensGlowRadius=35:fpxLensGlowBrightness=.75 ' sets light lens intensity
fpxPlasticBrightness=3:fpxPlasticGlowRadius=50:fpxPlasticGlowBrightness=.1 ' sets plastics intensity
fpxBulbBGBrightness=8:fpxBulbBGGlowRadius=100:fpxBulbBGGlowBrightness=6.9 ' sets bulb intensity
xBAM.Lights.EnableNewRenderer = TRUE
xBAM.Lights.MainLightLock = FALSE
xBAM.Lights.SetMainLightPosition 0, 500, 1700
xBAM.Lights.SetMainLightProperties 1, 0.1, 1, 0.05
xBAM.Lights.SetMainLightAttenuation 1, 0, 0
xBAM.Lights.SetOtherLightsAttenuation 0.066, 0, 0.333
xBAM.Lights.EnablePostprocessing = TRUE
xBAM.Lights.SetPostprocessing 1, 0, 1, 1
xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 2.2, 1, 1, 1, 0.2
End IF

If fpxBAMpfLighting=4 Then
AddDebugText "fpxBAMpfLighting=4: Midnight"
fpxBulbBrightness=1:fpxBulbGlowRadius=45:fpxBulbGlowBrightness=.75 ' sets bulb intensity
fpxLensBrightness=4.5:fpxLensGlowRadius=35:fpxLensGlowBrightness=.75 ' sets light lens intensity
fpxPlasticBrightness=7:fpxPlasticGlowRadius=50:fpxPlasticGlowBrightness=.1 ' sets plastics intensity
fpxBulbBGBrightness=8:fpxBulbBGGlowRadius=100:fpxBulbBGGlowBrightness=6.9 ' sets bulb intensity
xBAM.Lights.EnableNewRenderer = TRUE
xBAM.Lights.MainLightLock = FALSE
xBAM.Lights.SetMainLightPosition .5, 500, 1700
xBAM.Lights.SetMainLightProperties 1, 0.1, 1.1, 0.025
xBAM.Lights.SetMainLightAttenuation 1, 0, 0
xBAM.Lights.SetOtherLightsAttenuation 0.066, 0, 0.333
xBAM.Lights.EnablePostprocessing = TRUE
xBAM.Lights.SetPostprocessing 1, 0, 1, 1
xBAM.Lights.SetPostprocessingForNewRenderer 1, 0, 1, 1, 1.15, 1, 1, 1, 0.2
End IF
End Sub

' playfield Bulbs
BulbLS1EXT.Brightness=(fpxBulbBrightness):BulbLS1EXT.GlowRadius=(fpxBulbGlowRadius):BulbLS1EXT.GlowBrightness=(fpxBulbGlowBrightness)
BulbLS2EXT.Brightness=(fpxBulbBrightness):BulbLS2EXT.GlowRadius=(fpxBulbGlowRadius):BulbLS2EXT.GlowBrightness=(fpxBulbGlowBrightness)
BulbLeftLaneEXT.Brightness=(fpxBulbBrightness):BulbLeftLaneEXT.GlowRadius=(fpxBulbGlowRadius):BulbLeftLaneEXT.GlowBrightness=(fpxBulbGlowBrightness)
RightSlingshotBulb1EXT.Brightness=(fpxBulbBrightness):RightSlingshotBulb1EXT.GlowRadius=(fpxBulbGlowRadius):RightSlingshotBulb1EXT.GlowBrightness=(fpxBulbGlowBrightness)
RightSlingshotBulb2EXT.Brightness=(fpxBulbBrightness):RightSlingshotBulb2EXT.GlowRadius=(fpxBulbGlowRadius):RightSlingshotBulb2EXT.GlowBrightness=(fpxBulbGlowBrightness/2)

@shiva

I noticed you define what the fpxBulb conversions are at the end of your post but you don't list the conversions for fpxLens, fpxPlastics and fpxBulbBG. How do you create those?

George
 
Done exactly the way as the example George. Instead of using forced numbers, I just assign a variable so I can swap it. That what you mean? The code is in JG

' ball glow
BulbGlowRSEXT.Brightness=(fpxBulbBrightness*6):BulbGlowRSEXT.GlowRadius=(fpxBulbGlowRadius/2):BulbGlowRSEXT.GlowBrightness=(fpxBulbGlowBrightness/2)
' Lens
LightTrg1EXT.Brightness=(fpxLensBrightness):LightTrg1EXT.GlowRadius=(fpxLensGlowRadius):LightTrg1EXT.GlowBrightness=(fpxLensGlowBrightness)
' Plastic
p_FlipREXT.Brightness=(fpxPlasticBrightness):p_FlipREXT.GlowRadius=(fpxPlasticGlowRadius):p_FlipREXT.GlowBrightness=(fpxPlasticGlowBrightness)
' Translight Bulbs
bghstdEXT.Brightness=(fpxBulbBGBrightness):bghstdEXT.GlowRadius=(fpxBulbBGGlowRadius):bghstdEXT.GlowBrightness=(fpxBulbBGGlowBrightness)
 
Looks cool Paolo!
 
Cool effect!
 
.
 
Last edited:
Sorry I have very weird issues with the videos posted here. They show all black sometimes or if I fast forward then they play but then I want to start from the beginning and it's black or paused or go straight to finish. short version:_I can't use the videos :(

So from what you wrote, I understand that you get a "multiball" because the drain assumes there's no ball on playfield and creates another one, right?
/edit
ok, got it. you activate mb by hitting tgtspell1 and then the ballsinplay neve go +1. I'll have a look.
 
Last edited:
Thanks AnonTet.....for your interest, and also to those who are still trying ... but I managed to find the problem.... there is always something to learn.

I did the counter test, instead of adding, I started deleting what I added one at a time, and I discovered what my mistake was
the TIMER1..... there are two timers1, I did not see that Gianfranco had also used it

Sub Timer1_Expired()
Timer1.set false
Advice(11) 'Launch Ball
BallsOnPlayfield = BallsOnPlayfield + 1
End Sub

and this is mine

Sub Timer1_Expired()
Timer1.set false
SetLightsDarkNight()
end sub

do not mess with timers, I understand that it is essential to rename your timers

thanks again to all you


PS: I'm sorry if you had problems with the videos, I'll try to fix it, I didn't notice the black ...
 
well, Just came here to say i got it working and I'm glad you solved it.

Still, if you went to sub createnewball and add
BallsOnPlayfield = BallsOnPlayfield + 1 in there

it should've solved your problem too.
 
I am glad you solved it because I am not the best coder although I keep learning more about it.
 
Glad you solved it !
 
Thanks guys.... much appreciated.

If you load model into milk shape and then export to either obj or Fbx then you should be able to load into BAM model importer and save as TGA . They may load faster.

I can try it if you send me the model ?
 
Forum activity
Help Users
You can interact with the ChatGPT Bot in any Chat Room and there is a dedicated room. The command is /ai followed by a space and then your ? or inquiry.
ie: /ai What is a EM Pinball Machine?
  • No one is chatting at the moment.
      Mibs Mibs: Popotte has posted a new reply in the thread "How Do I Move a DMD on the Backbox Using Script...
      Back
      Top