Jump to content

Shivaengine 4 Beta 1.1


shiva

Recommended Posts

Uploaded here, http://vpuniverse.com/forums/files/file/2894-shivaengine-4/

 

History:

shivaEngine is part of the full install with Visual Pinball done by Cold1 and myself. It is labeled "Tutorial" in Visual pinball's full install, but it's included with the top gear table, so it's part of the standard package.

A couple years later, I wrote shivaEngine2, which was aimed at the advanced user as a System 9 engine, and mid 80's Bally. It was very full featured, and could do just about anything even System 11 games could do in terms of a feature set.

shivaEngine 3 was a middle ground, in that it had all the main features of se2, but using the modern scripting style of pre-made scripts with "hooks" inserted into the main engine. In it's own right, it is just as powerful as se2, and was designed to emulate all arcade games up to 1985 as perfectly as possible, without needing VPinMAME. There are 4 tables that used the se3 engine, Star Trek se3, Playboy se3, Kiss se3 and Power Play se3. The system is a modular concept, so you can in fact mix and match external scripts if you wanted to, setup took less than 5 minutes in most cases

se4:

The se4 engine builds on these concepts from before, but already, there are some major new features that are in place, with a lot more to be added.

One of the biggest features of the xse engine is it will adds multiple preset scoring and control routines to standard objects and parts of a common table, (such as drop target banks, lanes etc) using a collection based system. Like the engine itself, this will contain multiple settings for each section, so there will be multiple types of scoring and routines capable for each section.

But most importantly, there is a new menu system, that will allow you to adjust and set any of it's routines, settings, scoring, and rules while in game. In theory (and so far) there is no need to do any scripting at all!

There are preset styles in case you don't want to change the settings yourself, and now a navigation and help menu that helps you in case you do. No more long text files that people don't read anyway in other words.

As it Stands:

At the moment, due to time, health and real life issues, se4 has stopped development. There are quite a few things that are missing from the table example, but lack of time prevents me from doing them, if ever. It would be such a shame though to waste this, as it could have such a dramatic effect on the community, and actually get a lot more people to make their own tables, so the table is out, and hopefully, people who do know how to script, and table devs, will step forward and help finish the engine.

People who do can just contact me, I will help as much as possible, and still handle keeping track and organizing things, but to help, I have written a "to do" list as a guide of the things I had planned to add myself.

Next planned version (beta 2)

Keys and VBscript menus
' - In se4 b1, the system has a menu based system outline using display and text boxes. Though this does work, it's a bit clunky, hard to work with, and very inflexible. I am presently looking at alternate ways, that will give far more flexibility and ease of use. At the moment, the new menu will be more than likely HTA based, with far more options and capabilities. As well, it will be far more adaptable with changes caused by new releases of visual pinball.
All work on the engine and example table will stop till a new menu system is done, so if there are people who want to add to the engine, hook up missing elements, or improve the engine, they can do so, as the work on the menu system can be completely seperate from the rest of the engine and table.
Just submit the changed table to me, and I will incorporate the changes into future releases, with proper credit.
 

Link to comment
Share on other sites

Roadmap

' Based on script structure, stuff that is in the planning and general ideas to improve the engine and feature set.
' (+) = Project idea that is slated for the future, once the main coding is completed and bug tested.
'
' * Table Startup code *
' - Remove style code that has to be scripted in, have the system instead generate a external file. The system will load in presets if a table is run the first time. Looking into the concept of 2 systems for save and load. One for basic settings like balls per game/ flipper settings etc, and a second one for any custom variables using the menu system. The system will only save once, when the table is exited back to the editor, but if you add more variables for it to save, it takes longer, and longer. If you don't make changes to the actual engine code or preset features, then there should be no need to have the table resave those variables all the time. Use the regulatr system for credits/highscore etc, and have the rest saved only when the menu is called. UPDATE: style code removed

' * Hooks and Special code *
' - Combine all Hooks code presently in and fold it directly into the engine (+)
' - Add code from code snippets from se2 and se3 tables, fold it into the engine, and use the preset scoring within the code snippets as a base and expand the automated scoring features. (+++)

' * Memory *
' - It's perfect!

' * Game Style System *
' - add the changes to the present styles already set within the engine, starting with Bally ' - Add the other styles once the variables are set (++)
' - New styles to be added, Stern Pinball, Gottlieb, and Electromechanical preset styles (+++++)
' - system 11a support if display system does change over to a shaped light based system.

' * Feature Scoring *
' - Set up Community scoring system, so object and collection based scoring can use all features, not just some UPDATE: DONE
' - Add more feature scoring. Set up menu system so all objects can use this one routine

' * In Game Routines and Hit code *
' - Already in place:
Top lane feature with lane change selectable, Inside and outside lanes with basic code, Bumpers with basic code and additional, Kickback, ball save, multiball, and 10 feature scoring codes, extra ball, 25k, alternating lights. Main Engine already done.
' - Community system for feature scoring
' - additional features, bonus collect, bonus held (Trigon style), letter based system, orginal se1 features, orginal se2 features, mystery, multiball with different presets, advancing points. (++)
' - Ability to chain groups together (!!!!!!!)

' * Scoring and Display *
' - Look at replacing Reel based scoring system with a shaped light system. For more elements, and future system 11 support with scrolling text (+++++)
' - Small Bug: Add delay for chime system so engine doesn't count down while the AddScore chime system is still playing
' - Display effect for drain of power

' * Sound *
' - add support for 3rd sound system for early SS chime tables
' - Expand support for the amount of background sounds from 15 to 30 (++++)

' * Bonus Countdown and Bonus Multiplier *
' - Add other bonus countdown routines to the existing code. Expand the options for the basic Bally and Williams type scoring already in place (+++)

' * Match/End of Game *
' - Add additional routines, and/or expand the preset match routines with new options (+++)

' * Light Attract *
' - Add LightSeq management system (++++)
' - Add multiple routines for Light Attract (++++)

' * Tilt code *
' - Adjustable Settings in the menu system

' * Object/Collection code *
' - Finish Target code, add the ability to set the target type and style (drop, button, Inline) so we don't have 12 collections, 4 for each
' - Add Basic code for the remaining objects

' * Save Load *
' - Add external file system for all variables. Use the VPreg.str for values instead are not transfereable, and could overload the setup with all the variables needed to be saved/loaded by this engine.

' * Options Menu Variables *
' - Add key for quick settings, for those that are too lazy to hit the numpad key twice once in the menu system
' - Finish adding listings to Global menu, add presets settings for flippers, table adjustments and other global menu pages UPDATE: DONE
' - Preset styles available listed for flipper adjustments, table angles etc in each appropriate page as well as independant settings UPDATE: DONE
' - Have a external file system in place. This will allow users to have their options and settings released with the
' table, as there is no other way to have a developers preset options available for others to play. This is opposed to coding it in the script. This also means more styles can be used with other tables
' - NUMPAD minus will reset the engine back to default settings (+)

' *** General ***
' * Collections *
' - add the remaining objects collections with basic mechanical and scoring so the script has it's full structure in place.
' Once this is done, then advanced scoring options or multiple choices can be added
' - Finish the engine script to reconize collections and amounts
' - Add support for the community Feature scoring system UPDATE: DONE
' - Add internal collection scripts, depending on if the new planned menu system works out. This will allow the ability to chain lights to objects, as well as assign other table objects to be used if a feature is made (i.e. light extra ball at a button target if the drop target bank is made)

' * Timers *
' - Add more short term community timers, and have them available for cueing for object use.
' - adjust the long term community timers to do the same setup, as well as use as replacements for existing timers (++)

' * Lights *
' - have community based system that uses a group of lights that can be assigned, as opposed to a mass of lights, one for each object that would have to be created (++)
' - bulb light support for flashing (+++++)
' - Fading Lights support (no idea how to do it +++++>)

Change log

' *** 07.29.07 ***
 ' - resumed development with new template
 ' - Added Impulse plunger system as standard, removed old plunger code
 ' - Removed all text box code
 ' - Fix: Ball Saver now works. Bug Fix code in Sub LaunchTrigger_Hit()

' *** 08.06.07 ***
 ' - Added lane code, set at SetLaneScoring case 0 to bonus multiplier and awards special after bonus multiplier is maxed. Settings in place for unlit score, lit score, and the ability to light the lane.
 ' - Added Lane Change feature, but the amount of lanes must be added to the xseLaneChangeamount=3 and must match the same amount of lanes in  the XSELANES Collection
 ' - Added out lane code, set at SetOutLaneScoring case 0 to award special. xseOutLaneSpecial is the variable, additional code will be added to award different values, like a Extra Ball
 ' - All lights in template now ready for possible Fading lights routines
 ' - Added Kickback code. xseKickBackTime adds the interval time after a kick, set to 0 if you want the feature off

 ' *** 08.10.07 ***
 ' - Added Collections for flippers. Easy way, no coding, just make a flipper, add it to the collection. Added script based
 '    code for flipper strength, speed etc. Present Hooks will still work, but outside the collection, so special coding
 '     that uses the flipper buttons like video modes, Battle the power feature from TZ are still possible.
 ' - Added Inlane code. Very similar to outlane code, and has a alternating light feature as well.
 ' - Added Reward system if you max out the Bonus Multiplier. Set for Special or Extra Ball (xseMaxBonusMultiplierReward)
 '    as opposed to SetLanescoring from before
 ' - Changed SetLaneScoring to be a case setting for the lanes made. Set as default to add a multiplier
 ' - General script cleanup, debugging

' *** 08.15.07 ***
 ' - Fixed bug in multiplier code that added a extra multiplier
 ' - Multiplier system added to memory
 ' - added more scoring options to xseMaxBonusMultiplierReward. Now selectable for lighting outlanes, 25k, extra ball
 '    or special. Other codes will follow.
 ' - Added Bumper code. Collection based, and automated to switch off at tilt. Single ring effect, to keep it simple
 ' - Added Community Timer system. Rather than using the built in timer with objects, the code points to several
 '     timers. This is used by bumpers for the rings, drop and button target push backs etc. Simple routine that looks for
 '    and uses a community timer that is available. This makes it a lot easier to code, and also reduces the amount of timers
 '    needed for the overall table
 

Link to comment
Share on other sites

To Access the menu:

 

Select the F6 key to call up the menu.

F7 closes the menu.

Arrow keys to select

Numberpad Enter key to select values

The menu lists any keys needed

 

"R" for rules

F3 for basic information

"S" to give me money.  :)

 

have fun guys, not even close to complete, but people are more than welcome to work on it while I brush up my html/javascript/vbscript skills to work out a new menu system.

Link to comment
Share on other sites

  • Content Provider

This is the ultimate pinball template! Shiva, put a ton of work into this. If you look at the script you'll see this table is very well coded and commented, making it easy for a first time table author to follow. It also has a great start to an automatic menu system... press F6 and check it out.

 

Two thumbs up for sure! If I had more thumbs, they would also go up (Dazz, we need some more emotes man). Everybody and anybody that is interested in making an original should check out this template. 

Link to comment
Share on other sites

Jeez I'm blushing Rascal.

 

A long way to go though, most of the feature scoring still has to be folded in and checked, options for them etc. While waiting for this computer to connect up, I suddenly thought up a way to add and do as many collections in vp as possible and maybe have the engine recognize them. I just think with me it's the challenge more than anything else.

 

The basic framework for the replacement menu system is almost done. Very simple look (I know it's me, I always complicate things) but I did a lot of code study to bone up, and it's a great template. All CSS based, fluid width, no trickery, compatable with most browsers, no images seems to work like a charm. With this new menu, you can also access the web and use all it's features, and even down the road have a auto update service, database to store high scores, and even chats etc.Anything you can do on both your desktop and on the web you should be able to do with this. It's your fault Rascal, you mentioned VP+ and I got to thinking.  :)

 

The menu will run separately as well, so you can use it even if VP isn't loaded. (Well why not?) I will put up a early example once I finish with the CSS code.

Link to comment
Share on other sites

  • Content Provider

I'll take the blame for any creative out of the box thinking you do. ;)

 

This sounds interesting.  :)

 

What can I get blamed for next?

 

How about a table build wizard with the Alice text to speech voice for us dyslexic guys that hate to read?

Link to comment
Share on other sites

I'll take the blame for any creative out of the box thinking you do. ;)

 

This sounds interesting.  :)

 

What can I get blamed for next?

 

How about a table build wizard with the Alice text to speech voice for us dyslexic guys that hate to read?

A wizard is already planned. The first actual release is aimed at absolute beginners with no coding experience, so the page will load common settings, text boxes for author/a menu to display/ table info and a set of styles to choose from based on actual arcade games and their era. It will contain all the common table scoring/bonus countdown/physics settings for flippers etc. All the collections will be filled and have code pre assigned to him so all he has to do is assign his objects used in his table build in the collection manager in the VP top menu and then press play. (There will be a page in the menu where you can change every preset and variable as well. Down the road there will be pages for objects, using models etc, more advanced scoring like chaining objects together but that is aimed at the more advanced user)

When I dreamed this up, this was intended to replace the tutorial table, so the the first version beta is aimed squarely at people who want to build their own tables, but don't want or have the days/weeks/years to learn who to script.

As to your speech idea, well, I would say that it might be time for you to learn how to read...  :)

Link to comment
Share on other sites

Basic menu framework and demo form, it's not pretty, but webmaster geeks will love it.

 

Just double click the .hta file.

Html file included, but vbscript will not work in it of course. The form is a example I found to check styles etc. Does work, just no save feature. This should work in all browsers from I.E.5 and on. certain values like table widths etc cause problems with ie6, so it's generic. The left column is fixed width etc.

 

No images other than one I put in so I can reference. The menu side will be a bit prettier, but this is basically the framework for display. I heavily commented the source so people interested can study it. Will work in any browser 10 years old on, and uses css to define the code. (css stylesheets are attached as well)

 

Not a lot to look at, but if you see anything just let me know. Next up, the start of the vbscript code for use with the engine (yuck)

 

menu1.zip

Link to comment
Share on other sites

Thx. I felt the same way when I first started. At the moment, it's VBScript, which I know nothing about. I keep saying I am very slow, but the truth be told, most of my time is spent learning and studying how to do things that I have no clue what to do. :)

 

As a example, I'm teaching myself how to save and load text files, with a eye towards making it as simple to use for the user, because well, I don't know that much more about it than most people, so I am a real simple user myself. ;)

So I search the net, run across various things, find out what you can do with save/load text, and then build a wordpad document containing all the sample code I found in one place. Then I select the bits I want, and put them in the menu. I then do that for every other portion of the vbscript code, text boxes, arrays etc, and just add them in as I go along, and try and get it all working together.

 

Next is looking for code that deals with what happens the first time someone starts a new table. If there is no text file, then the system has to handle that, if there is a text file, read it in, then set all the values, and then display it etc. I divide this into little tiny bits, and find the code for each bit, then combine them all when done. I usually spend hours on top learning how to fix it when I get errors though...  :)

 

Attached is what I found yesterday for reading, writing and saving text files in vbscript. Just a copy and paste job from examples I have found around the net that look like they will work within the engine.

 

It really isn't set knowledge on my part, it's just what I learn as I do this. I'm pretty sure there are far smarter people than I that can do this far easier, but then it isn't as fun for me (unless I get stuck, then I just sit there swearing in different languages at my computer)

all vbs txt based code examples vbsedit.rtf

Link to comment
Share on other sites

haven't had the chance to look at it, but found a decent connection, so will dl it now. problem is i have no idea if i can use it, as i am just a desktop user.I could see maybe additional support for cabs and hybrids in se4 but that would be way down the road. I want to add just features for beginners to start using first and then worry about the glitz later on.  I'm the type of person that can get very sidetracked, and start spending vast amounts of time on things no one will use, and I figure it would be better to do this as simple as possible to start, or we will end up 4 years down the road before a release and it will be shivaengine2 2000.   :)

Link to comment
Share on other sites

  • Content Provider

Actually the concept behind my templates is you build in desktop first. The backglass calls are pre-done, but commented out. Also comes with an array of posts and textures. All script is heavily commented.

Link to comment
Share on other sites

I looked at it and noticed that. It's not hard to figure out (compared to what I am doing right now at least) and in fact could be pretty easy to add in fact. It's just time management with me more than anything, real life plus doing a horribly complex script by just myself equals months before I can get everything set up correctly to do what I want it to do. It's certainly not just a case of planning more advanced features for down the road (hehehe) it's just a case of priority. I have no idea how much time I actually have to do this, life could happen as well. (kid has a crisis, could have a emergency, I get a new girlfriend that looks like a Swedish bikini supermodel, that kind of thing)

Sure do appreciate the help though. At the moment I'm wading through VBScript code right now, and it should be a month before I hope to finish the central structure before I can start with the engine portion, so then I will have a good look at your templates

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...