Jump to content
freezy

Introducing Pind: A Pinball Daemon

Recommended Posts

hipsterlogo.png

So I've been working on something the last few months and I think it's time to announce it here so you guys can take a look at it. Check out

pind.ch

Not all features are implemented yet but every screenshot is from the real deal, no mockups. I use it on my cab and it saves me a sh**load of time. Feel free to comment here, this is going to be the official thread.

The GitHub project can be found here, along with installation instructions here.

See also known issues before you submit bugs.

Once you get it running, you should probably do the following (in that order)

  1. Click on the admin icon on the top right side of the page
  2. Fill up the database by:

    1. Resync with HyperPin
    2. Match with IPDB.org
    3. Update High Scores
    4. Update Audits

[*]Download index from VPF under sources.

Edited by freezy

Share this post


Link to post
Share on other sites

Very cool. I don't have a pincab, but would surely use this if I did. I would like to see support for HS on this in the future.

Share this post


Link to post
Share on other sites

Awesome, I can see this saving me some time :)

Spent a few hours today installing only 6 tables. So time consuming finding and downloading the tables/flyers/instruction cards/hp video/uvp/wheel art etc etc.

Got a long way to go to finish my hyperpin install so this should come in very handy :)

Sent from Amstrad CPC464

Share this post


Link to post
Share on other sites

I'm working on installing and checking this out... there are soooo many things that need to be installed, at least 8 different installations required of different softwares. This is a LOT of installing for one program. So far this has taken up about 2.5gb of space on my cabs SSD drive.

All of these programs have different installation options. I'm assuming that we just leave all of them at their default settings when installing, correct? I think for Git I selected the option for Windows Command Line. I left everything as default for Node, Python, VC and WinSDK so far.

In the directions for installing Node it states "Also, make sure node.exe and npm.cmd are in your PATH (per default atC:\Program Files\nodejs)." Does this mean to just check that file and make sure that those files are in it?

In the installation directions for GraphicsMagik; when you say "verify that the installer adds the directory to your PATH." What exactly is the PATH that you are talking about?

Ok, I made it to step 5-4, Install Dependancies and getting an error. Please see the attached text.

pind_err.txt

Edited by Dazz

Share this post


Link to post
Share on other sites

I managed to get it up and running - starting to play around with it now. I wasn't able to install the dependencies until I added the Python27 directory into my path. Not sure if I missed in installation step along the way, but once I added that in manually, I was able to get though the install process.

Really slick interface....looking forward to playing with this!

Share this post


Link to post
Share on other sites

Open Control Panel, Open System, Click on Advanced System Settings on left, Click on Environment Variables. In the System Variables section, select Path and click Edit. In the Variable Path field, go to the end and add ";C:\Python27"

Don't put the ; if you see one at the end. Click on OK, Click on OK, Click on OK.

Open a new cmd window for the change to take effect. you can verify it worked, if you type Python and press enter, and it display the Python version

I am still downloading and installing, will see how it goes...

Share this post


Link to post
Share on other sites

I'm referring to the system path used by Windows (http://en.wikipedia.org/wiki/PATH_(variable)). You can view the current path setting in a Command Prompt window by simply typing "path". If you want to add additional directories to that path, you can enter the following into the Command Prompt:

SET PATH=%PATH%;<additional directories separated by semicolons here>

The above code will append your new directories to the already existing path (that is what the %PATH% variable is for).

The only caveat with the above approach is that it only works while your Command Prompt is open. If you close the window, your custom settings will be lost. To make the changes permanent, do the following:

- In the Start Menu or Explorer, right-click on Computer and select "Properties".

- On the left side of the System Information window, select "Advanced System Settings".

- In the System Properties window, select "Environment Variables".

- In the System Variables section, scroll down to the "Path" variable.

- Double-click on "Path" to edit it. You can view the current directories in the path in the "Variable value" field. If you scroll to the end of it, you can append any additional directories that you need, separated by semicolons.

- Once done, close/OK out of all of the windows.

- Close any open Command Prompt windows. Next time you open a new one, the new PATH settings will be applied to it. Again, you can verify by typing in the "path" command.

Edited by MisterB

Share this post


Link to post
Share on other sites

Got it running. Nice interface - Will be interested to see how it comes along - thanks for developing and look forward to updates.

So far parsed my VP table list, Identified missing media/videos, Lists all cab tables available on VPF.

Issues found:

Administration-VPF Sources - could not figure out how to sort the tables alphabetically

Not able to test ipdb info feature as it crashes on original table not found on ipdb. "Searching at ipdb.org for "El Bueno el Feo el Malo" av can not

Share this post


Link to post
Share on other sites

I know that the build process sucks. It's basically for the SQLite driver that is used for caching data locally. I'll write up an FAQ soon that explains also how to use MySQL instead of SQLite. Dazz I think GraphicsMagick simply has an option "add to PATH" when installing, that does the process MisterB described for you.

Edited by freezy

Share this post


Link to post
Share on other sites
Got it running. Nice interface - Will be interested to see how it comes along - thanks for developing and look forward to updates.

So far parsed my VP table list, Identified missing media/videos, Lists all cab tables available on VPF.

Issues found:

Administration-VPF Sources - could not figure out how to sort the tables alphabetically

Well I could add that, however I don't really see the point - search is much faster if you're looking for something specific.

Not able to test ipdb info feature as it crashes on original table not found on ipdb. "Searching at ipdb.org for "El Bueno el Feo el Malo" av can not

Can you open an issue at GitHub and copy+paste what the console says? I need some more context, specially a stack trace would be useful. Generally, if the type of the game is "OG", it won't search on IPDB.

Edited by freezy

Share this post


Link to post
Share on other sites

ok after bout 1 1/2 hours of installing I seem to be stuck. I copied the config and renamed to setting-mine. Then edited the settings @ to suit my setup

then command node create-schema

then node app

I open http://localhost and it comes up with pind-a pinball daemon but just shows a grey screen

ive attached the log file and pind.db

pind.txt

pinddb.txt

Share this post


Link to post
Share on other sites
Which browser? Any error in the Javascript console? Looks like Pind started ok to me.

internet explorer 8...ill try using chrome... not sure what javascript console is

Share this post


Link to post
Share on other sites

Yeah I forgot to put that somewhere. Get your hands on a real browser for god's sake. ;)

Seriously, I have done a quick test with IE9 I think, but I strongly suggest Firefox or Chrome. In Chrome, press ctrl+shift+i and click on "console". If there's anything red, that would be interesting.

I'll update the project page with the browser notice tonight.

Share this post


Link to post
Share on other sites
Yeah I forgot to put that somewhere. Get your hands on a real browser for god's sake. ;)

Seriously, I have done a quick test with IE9 I think, but I strongly suggest Firefox or Chrome. In Chrome, press ctrl+shift+i and click on "console". If there's anything red, that would be interesting.

I'll update the project page with the browser notice tonight.

haha yeh usally I use chrome but on the pincab I always downloaded tables thru the laptop

Share this post


Link to post
Share on other sites

So, I decided to get a little greedy with the app, and restored the default Visual Pinball.xml file that comes with HyperPin, and use it to download the assets of the 50 or so games that are in there. I've run into a couple of situations where the app completely crashes, and I need to restart it. It looks like these errors are not getting handled cleanly, so the error is only thrown in the console, and not in the log file.

I'll send along more details as I'm able to recreate them (I also have a VPF media download error that regularly pops up). But here is what I am seeing when trying to update the IPDB data for all of these tables: Again, since the log doesn't capture the error, here is the tail end of the console output:

info: ? rpc:5 pind.fetchIpdb
info: [announce] "ipdb.processingStarted": {"id":"ipdbsync"}
? event:channels:[admin] ipdb.processingStarted
info: SELECT * FROM `tables` WHERE type != 'OG';
info: [announce] "console": {"msg":"Searching for \"Agents 777\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Agents 777"
info: [announce] "console": {"msg":"Searching for \"Airborne\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Airborne"
info: [announce] "console": {"msg":"Searching for \"Airborne Avenger\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Airborne Avenger"
info: [ipdb] Found title "Agents 777" as #26 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Alien Star\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Alien Star"
info: [ipdb] Found 2 hits for "Airborne Avenger".
info: [ipdb] Figured best match is "Airborne Avenger" (33)
info: [ipdb] Found title "Airborne Avenger" as #33 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Amazon Hunt\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Amazon Hunt"
info: [ipdb] Found 17 hits for "Airborne".
info: [ipdb] Figured best match is "Airborne" (3783)
info: [ipdb] Found title "Airborne" as #3783 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Back to the Future\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Back to the Future"
info: [ipdb] Found title "Alien Star" as #49 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Barracora\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Barracora"
info: [ipdb] Found 3 hits for "Barracora".
info: [ipdb] Figured best match is "Barracora" (177)
info: [ipdb] Found title "Barracora" as #177 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Beat The Clock\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Beat The Clock"
info: [ipdb] Found 6 hits for "Amazon Hunt".
info: [ipdb] Matches are now sorted: name=Amazon Hunt, year=1983, ipdbid=66, distance=0, name=Amazon Hunt, year=1985, ipdbid=5691, distance=0
info: [ipdb] Figured best match is "Amazon Hunt" (66)
info: [ipdb] Found title "Amazon Hunt" as #66 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Black Belt\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Black Belt"
info: [ipdb] Found 2 hits for "Back to the Future".
info: [ipdb] Figured best match is "Back to the Future" (126)
info: [ipdb] Found title "Back to the Future" as #126 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Black Hole\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Black Hole"
info: [ipdb] Found 3 hits for "Beat The Clock".
info: [ipdb] Matches are now sorted: name=Beat the Clock, year=1985, ipdbid=4518, distance=0, name=Beat the Clock, year=1985, ipdbid=212, distance=0, name=Beat
the Clock, year=1963, ipdbid=211, distance=0
info: [ipdb] Figured best match is "Beat the Clock" (4518)
info: [ipdb] Found title "Beat the Clock" as #4518 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Black Jack Bally 1977 SS \"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Black Jack Bally 1977 SS "
info: [ipdb] Found 5 hits for "Black Belt".
info: [ipdb] Figured best match is "Black Belt" (303)
info: [ipdb] Found title "Black Belt" as #303 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Black Knight\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Black Knight"
info: [ipdb] Found 14 hits for "Black Hole".
info: [ipdb] Matches are now sorted: name=Black Hole, year=1981, ipdbid=307, distance=0, name=Black Hole, year=1980, ipdbid=4087, distance=0
info: [ipdb] Figured best match is "Black Hole" (307)
info: [ipdb] Found title "Black Hole" as #307 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Black Rose\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Black Rose"
warn: [ipdb] Game "Black Jack (Bally 1977 SS)" not found in HTTP body.
info: [announce] "console": {"msg":"Searching for \"Bone Busters\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Bone Busters"
info: [ipdb] Found title "Black Rose" as #313 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Breakshot\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Breakshot"
info: [ipdb] Found 2 hits for "Bone Busters".
info: [ipdb] Figured best match is "Bone Busters Inc." (347)
info: [ipdb] Found title "Bone Busters Inc." as #347 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Class of 1812\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Class of 1812"
info: [ipdb] Found 9 hits for "Black Knight".
info: [ipdb] Figured best match is "Black Knight" (310)
info: [ipdb] Found title "Black Knight" as #310 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Dolly Parton\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Dolly Parton"
info: [ipdb] Found title "Class of 1812" as #528 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Eight Ball\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Eight Ball"
info: [ipdb] Found 3 hits for "Breakshot".
info: [ipdb] Figured best match is "Breakshot" (3784)
info: [ipdb] Found title "Breakshot" as #3784 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Eight Ball Deluxe\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Eight Ball Deluxe"
info: [ipdb] Found title "Dolly Parton" as #698 (distance 0)
info: [announce] "console": {"msg":"Searching for \"El Dorado\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "El Dorado"
info: [ipdb] Found 9 hits for "Eight Ball Deluxe".
info: [ipdb] Matches are now sorted: name=Eight Ball Deluxe, year=1981, ipdbid=762, distance=0, name=Eight Ball Deluxe, year=1984, ipdbid=5021, distance=0
info: [ipdb] Figured best match is "Eight Ball Deluxe" (762)
info: [ipdb] Found title "Eight Ball Deluxe" as #762 (distance 0)
info: [announce] "console": {"msg":"Searching for \"Elvira and the Party Monsters\"","timeout":30000}
? event:channels:[admin] console
info: [ipdb] Searching at ipdb.org for "Elvira and the Party Monsters"
info: [ipdb] Found 51 hits for "Eight Ball".

TypeError: Cannot read property 'distance' of undefined
   at findBestMatch (C:\Games\node-pind\server\modules\ipdb.js:500:23)
   at Request._callback (C:\Games\node-pind\server\modules\ipdb.js:260:16)
   at Request.self.callback (C:\Games\node-pind\node_modules\request\index.js:148:22)
   at Request.EventEmitter.emit (events.js:98:17)
   at Request.<anonymous> (C:\Games\node-pind\node_modules\request\index.js:891:14)
   at Request.EventEmitter.emit (events.js:117:20)
   at IncomingMessage.<anonymous> (C:\Games\node-pind\node_modules\request\index.js:842:12)
   at IncomingMessage.EventEmitter.emit (events.js:117:20)
   at _stream_readable.js:920:16
   at process._tickCallback (node.js:415:13)

Share this post


Link to post
Share on other sites

Yep, need to find a way to add the stack trace into the log.

Thanks for the console dump, will have a look at it.

Are those 50 games all recreations?

Title matching is actually one of the next big challenges, so far I've only tested it on my ~30 titles I have locally, but with the mass of tables around this will need some improvement.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...