A Fresh Restart

Restarting a 16-bit SCI game is pretty simple. In Game:restart...

Code:
   (method (restart)
        (if modelessDialog
            (modelessDialog dispose:)
        )
        (RestartGame)
    )

In other words, it clears any modeless dialog, and invokes the kernel call RestartGame to clear everything - globals, cast, sounds, etc. Then the game is re-initialized.
This behavior is unchanged from early SCI0 to late SCI1.1.

When SCI moved to 32-bit, however, things changed. While the interpreter still has the RestartGame kernel call, it does absolutely nothing!
For this reason, restarting had to be re-implemented in script code. Each game had its own restart code that re-initializes everything that needs to be cleared on restart.
 
Back
Top