Jump to content

johnparker007

  • Posts

    2,656
  • Joined

  • Last visited

  • Days Won

    119

Everything posted by johnparker007

  1. On the virtual arcade situation - without wanting to over-promise anything, as this is just a hobby project I'm working on - that's kind of where I'd like to see this ultimately end up, having seen how well the Cash Nudger worked in the 'holodeck' environment. I think the big part for now is working on this 'semi'-automated layout conversion/upscaling, since an arcade with 50 different fruit machines is more fun than just 50x "2p Cash Nudgers"! Other machine types (as we saw from the Pacman test) are possible... along with physics-based crane games, coin pushers etc (as I just use Unity's PhysX engine). The trick I'm thinking is to have an 'interacting/viewing' mode... so you can only interact/view a single machine (in full 8K with emulation/physics) while you're walking around. That way, it keeps the emulation/simulation overhead down - and having made a prototype coin pusher simulation a few years back, doing all the physics for the coin colliders adds up fast. So the other machines would play attract mode loops rendering with normal (non-8K) textures, but if you have one centred in your view and are close enough to it, then it would switch to showing what the machine is actually doing (if it's being played etc), with the 8K textures. Keeps the network bandwidth down too, otherwise if the arcade is busy everyone is transmitting shit to everyone, even for machines the other person can't actually see. Something like that anyway - but it's all a long way off - just got to keep breaking off bite-sized pieces and solving them one day at a time
  2. I'll be honest I only get around 6 hours a night tops these days, what with my day job and working on this new project! The 'end result' is a very long way off though to be honest, road map is currently something like (in only an approximate order): - R&D stencil shader or some similar approach to allow 1x compressed masked texture per MFME light layer + 1 bit common mask texture, excluding common redundant Off layer - semi-automate 2d layout -> 3d perspective-corrected sub-panels - automate AI upscale layouts once shader implemented - R&D new LOD techniques to allow 8k when close, standard rendering at distance so graphics card requirements stay modest - recording lamp/reel/other output data to capture efficient attract mode loop per machine, optimise for only frame deltas - to allow machines to run in attract without MFME instance - R&D automate MFME complete layout extraction to open format, via send clicks, send keys, and OCR for screen-scraping. - automate reel creation, gradient removal, alpha window cutouts, cylindrical band mesh with interiors, symbol offset, scale+position - automate creation of associated (more compact, accurate) data layout - R&D alpha vfd/dmd capture/modelling/rendering approaches (use quick n dirty screenscrape initially to keep things moving) - potential automate direct capture of data layout via memory signature (to bypass ASLR) instead of window scraping, to save GPU bandwidth and perhaps reduce latency - creation/cleanup of 3d cab models (may be able to get a 3d artist to help on this) - Networking R&D: server vs P2P? potential mixed solution, perhaps use twitch API for video screen element broadcasting? Good grief, that is awful lot of work now I've written it out! And there's always like 2.5-3x more stuff to do than you anticipate on something like this... Ah well, I'm just gonna keep chipping away at little corners of it, see where I end up
  3. There's a lot of hacky stuff here, so it looks further along than it is - but all the lamps were automatically positioned/scaled/textured/indexed. This was done from an 'unpublished' layout that enables a 'Lamp Export' option. This doesn't give much, but gives enough to make a start for basic converter development without getting too sidetracked. For the future I plan to 'automate' MFME so that it loads up the layout, goes in edit mode and saves out each resource along with its data - allowing for more conversion options (reels, vfds, button mappings, transparent reel windows etc). But that will take a while to put together, so I may carry on testing with some 'unpublished' layouts for the moment with the manual 'Lamp Export' option, plus I need to write some kind of shader that I've no idea how to do as this is rendered very inefficiently, so a helluva lot to figure out yet...
  4. Not so much eye candy in this video update, but a good milestone for me at least, after a few nights of battling with Unity! I have a glimmer of at least some beginnings of automated 2D -> 3D layout conversion...
  5. I am indeed up on the 3d tracking vpinball stuff, I did a couple of bits on the standard vp code many moons ago You could render the top/bottom glass panels & reels into say two monitors - one for top glass, one for bottom glass - to use this renderer in a standard cab-optimised scenario, and get good looking results (due to the upscaled texture stuff, reel/lamp physics etc). However the problem would be the head-tracking part. If you wanted to get in close for a reel peek, Kinect/eyetoy etc wouldn't be able to track your position accurately, as it needs a good unobstructed view, with some distance between it and the front of your face. Some people have also rigged up things like sunglasses frames with LEDs and Wii sensor bars, but again the tracking wouldn't work with your face so close to the glass. If you tried using a Wiimote very close to a TV you'd run into similar issues, due to the sensor bar receivers not being able to track the Wiimote led emittors. This'll get good results in VR with a headset - however primarily I'm just making it to be playable on a standard PC as that's what most people have (the VR stuff you practically get for free programming-wise, once you've made a 3D environment). So people can walk around the arcade and play/watch machines, and if they have the VR headset then it's almost like being there, apart from the smell of stale cigarettes! Also - the only real benefit from the eye-tracking would be the subtle shifting of the 3D reels, and the slightly raised buttons. As most of the machine front is usually flat glass panels (with some notable exceptions like the excellent Pyramid), it wouldn't change even when tracking your head position correctly.
  6. Another update - I've generalised the emulator handling a bit, allowing me to add a hacky version of MAME support. There's a slight input lag, that will be fixed with compiling a special version of MAME that outputs it's graphics directly in a way I can display on the same frame without the slight delay. Here's a demo, I didn't do very well, but I'm pretty tired, that's my excuse anyway Further improvements would be a CRT shader and of course I would clean up the cabinets so they are clean/sharp/properly lit. Fun early proof-of-concept though
  7. Still too hacked together for try out builds just yet I'm afraid, though it will get more stable. Currently it's pretty aggressive, forcing itself on top of all the other windows among other things, and there's more hacks to go in yet to make it all hang together properly (for machine switching etc). I have a plan though - once I've got all the hacks stable enough, I'll work on some lifecycle management which should hide all that hacking away And yes - you can do reflections/lighting - though the reflection would probably be more of a 'cheat', like a prerendered cubemap rather than realtime - I'll experiment in due course Also on the Family Guy above, I'm using some specular shading to 'catch the light' on the yellow trim.
  8. Made some progress - MFME now hidden while playing Also - there's a WIP cabinet model I'm playing with in the background. Bought it, and I think I'll be able to adapt it in Max to create a variety of different cabinets, to put the working MFME 3D machines into (Family Guy is just the static demo textures it came with). So the flow is now: - launch Renderer exe - it sets itself to always draw on top of everything, and hides the mouse pointer (System-wide) - it loads MFME and the data layout - it listens for system-wide Key input (as it no longer has focus, since MFME needs it for the key inputs to play the machine), if it gets an Escape, it kills MFME process (ungracefully) and quits It's all pretty hacky, nature of the beast really - hopefully with another day on it I can resolve the various issues, and minimise the hackiness. It is nice to see it launch full screen though with no MFME window on top obscuring stuff
  9. I'm not sure what the file format would be yet, for the 3D layouts - probably text format Unity scriptable objects for various data, along with textures/materials. But they could easily be packaged along with original source MFME layout (or visa versa) - I've honestly not thought that far ahead. Still in the exploration stage of how what can be done, but would be totally open to what works best for the scene Thanks for the offer of forum area - I'll just keep popping updates in here for now while it's just a tech demo I'm tinkering with, but if it gets past some of the other hurdles that need figuring out and starts to get to a usable platform, that'd be great
  10. I know - it's a shame the timing I only got back into this stuff as I signed up here to pay my respects in the Wizard's Rest thread, then started thinking abut FME again. End goal wise - I don't think it could be fully automated, it would be more that there would be a 'layout format' like MFME has, so layout artists could make new ones from scratch, or convert 2D MFME ones (like I have done here). I still have some fundamental stuff to research/code, in order to have the 3D view full screen, and MFME hidden behind but still receiving input, though I have a rough strategy for that which should hopefully work. The rendering is indeed driven by MFME (it could also be driven by MAME, though that has far lower compatibility compared to Chris's amazing emulator). I'm still playing to be honest ...here's another take on the camera - with the machine in an environment that can be navigated
  11. Done the top glass, so a little closer to a full machine Made a very minimal start on the 'auto-director' idea for the camera. Final camera pans will be much nicer (damped at start and end, position as well as rotation movement), this is just bare minimum to test. So the director looks for specific lit/off lamp combinations to know when to switch to different camera angles (there are only two angles in this early test - full bottom glass and full top glass). It was pretty stingy with the nudges, but got a couple of sets in the first few credits on this vid so you can see the basic idea
  12. Yep mate, with a shader it's possible to do specific stuff like that For instance you could have a shader to turn all green-ish pixels in an image black, or change all pseudo-silver coloured pixels to have a reflection of the room/lights behind etc. So configurable custom shaders will be the ultimate way to go for some of these effects. To the layout designer though, when the shader is done, the coding will be hidden away The parameters will just be tweakable in realtime with named sliders to configure the desired look for that machine (e.g. Glow Bleed 0 --------|--- 1 ).
  13. I've had another bash at the reel lamp effect. I went a bit overboard on the 'warmness' of the lights (these Tuppenny Nudger type machine's reel lamps seem to be a lot brighter/whiter on the youtube videos)... but I do like a nice cosy bulb glow! In the long term it'll want a custom shader, that will give a much better effect than this quick job, but I'm just getting things 'good enough' for now, so I can keep progressing the prototype.
  14. Hi So how this currently works is by scraping the contents of the emulator window. You'll see in the bottom-right there's a 'data layout' - I am capturing the MFME window content each update, deriving the emulated reel step positions and lamp matrix state, then hooking up my 3D components (reel, lamp etc) to be driven by the scraped inputs. How the data gets from MFME to the engine may completely change but that's a conversation for the future. I could also make a fruit machine 'data layout' in MAME (which emulates quite a few machines from some work done a few years back), and it would work in the same way - so it's technically emulator-agnostic. The primary focus is on MFME though Yes, that's planned (smooth panning between topglass view, bottom glass view, reel peek etc) This will initially be just skipping through views with say pressing Tab key... but later may also have an 'automated Director' option, constructed per layout based on rules Ie: If Stop Nudges Top Glass message lamp flashed, and no other lamps flashed in sync: Trigger pan to top glass (as the system has detected time to stop nudges) ...then... If Nudge buttons flashing and on top glass, trigger pan to bottom glass (as the system has detected time to use nudges) Something like that could probably made to work pretty well, to save the user having to manually tab. With the option to Tab at any time to override what the auto-director chose.
  15. - Added initial reel physics system - needs more improvements yet, but gives a ok 'bounce' - Very roughly placed lower backglass lamps in new masked lamp lighting test - all hooked up, but they are blurry and not quite in the right places as it was fiddly (I ultimately plan to make a tool that auto-converts the 2d lamps to their 3d counterparts without needing manual placement/scaling) - Snuck the credits VFD to lower backglass so it could be seen working in the demo - Reel lamps sadly temporarily out of action after I moved everything around, will set them back up soon I really wanted to win £3 or at least max the gamble ladder, but the machine was having none of it! Next time...
  16. Another little update - added a quick and basic 7 segment VFD down in the bottom-left corner of the screen. (plenty of potential for eye candy effects at a later point with a more complex/time-consuming VFD renderer, but this'll do the job for now ) @geordie52 I think this is the download:
  17. I had a look at the Jetsons pinball artwork, and I believe you should get incredibly good results following the guide I posted earlier in the thread. The reason being is that it's drawn art, exactly what the waifu2x AI was trained on (manga graphic novels).
  18. Thanks for all the positive feedback guys, it's taking the edge off my hangover that's still lurking around One more update for today: I've hooked up the ROM-controlled reel lamps. While they're working properly logically, I'll be able to make them look better than they do here - but these are fine as placeholders. I'm just gonna everything basically working first, then do a second round of polishing up the graphics where needed.
  19. Had a look into ways to deal with the masked lamps - decided the best approach is the simple one I was originally going to do something more involved, but this way should be quicker to implement and it'll look like the original layout artist intended. Short demo video - the glass is 4x AI upscaled, and the lights smoothly fade up/down. Will be able to do the slight ramp up/ramp down that the incandescent bulb era machines would have with this technique too.
  20. As this has kind of morphed away from the original topic of AI upscaling now - I've started a new thread in the Technical section, for updates to the 3D renderer project
  21. I've recently been tinkering with making a 3D machine renderer. I was originally playing with using AI for upscaling low res textures, then got quite heavily sidetracked! I'd been posting in the DXcellent layout discussion forum (back when it was just about AI upscaled textures), but a friend on here advised this would be a better place to post updates, now that it's turned into a more technical project. Here it is rendering an MFME instance. The flashing sphere above the reels is the first test lamp (the start button lamp). The reel symbol textures in this demo are an example of the AI upscaled textures - they were generated from the low res ones in the layout. For further info on the AI upscaling stuff with some more examples, here's the original thread:
  22. Just a little tech tinkering with those upscaled reels and MFME - MFME driving the 3D renderer (the 3D reels are mirroring the MFME 2D reel). It's all very hacked together and laggy, I may be able to fix the slight delay between MFME and 3D engine...
  23. With Unity, it's got a ton of ways of rendering stuff, various pipelines etc. I think a shader may end up being the way to go. So unlike mfme's inbuilt renderer that has dark and light images, it would have say just a large glass 'lamps off' image, and then illuminate areas on that image dynamically with the shader to simulate the individual lamps behind the glass, reels etc. Summats like that anyway
  24. Just for the fun of it, I upscaled a reel from a Tuppenny Nudger style machine from this site, and mapped to a '3d reel' in Unity - original scale on left, upscaled 8x on right
×
×
  • Create New...