Jump to content

johnparker007

  • Posts

    2,692
  • Joined

  • Last visited

  • Days Won

    120

Everything posted by johnparker007

  1. Time for a tech update After a week's grafting, I am relieved ...to see the first actual working test of the experimental occlusion mapping system. It's working better than I'd expected, as this was all a bit of a gamble to be honest, it's totally custom stuff Right, so here is a test map in the editor: ... and here is the first working demo of the basics of it working. It is very generous (to ensure we don't see machines 'popping in' as we go around corners), and there's other (much easier) stuff yet to add, to hide machines that are simply offscreen to the left/right/behind the camera. This is the real meat though, this is determining machines that cannot possibly be visible (ie. 'occluded' by ones that are closer to us) and only drawing/updating the potentially visible ones. If the arcade contained hundreds of machines, the system would cope just fine without killing the CPU... expect a larger demo soon So on the right, you can see what you'd see when playing the arcade. On the left, you can see a debug overhead view, and you can notice a red line, that is the forward-looking direction of my camera. You will see machines popping in and out of existence on the left (so saving CPU), but on the right, you cannot tell this is happening (as the one's being made invisible are safely behind machines that are blocking our view of them)
  2. 400th?! That is seriously a lot of layouts man - awesome work
  3. lol all I know about these 'naughty ones' is that they're apparently naughty! Hours per day depends, I'm usually putting in around 20-30 hours a week at present. It was more like 40 hours, but on top of my day job it was starting to burn me out, so had to dial it back a bit
  4. Have made some good progress on this tonight, and it's now looking like some kind of abstract art piece! Prints available from $999.99 But there's valuable culling info in those flat colors to be had, hopefully this will end up working even though it's a bit crazy
  5. Well that all depends on what these 'naughty ones' are haha!
  6. Another tech update on the occlusion culling system research So my initial thoughts were to fire lots of 'rays' (straight lines like from a laser pointer) from each test position, see what they hit around all 360 degrees and use that to build up lists of what machines I can see from each position. So it would look something like this: ...(but continuing behind as well). This is going to be pretty slow though, and since the rays spread out over distance, they are going miss some things. In this example below, the machine in the middle behind the other two machines could easily be missed, if one ray hits the left machine, and the next ray hits the right machine, skipping over the machine in the middle: And so then when you were stood in the arcade at that position, I wouldn't be drawing the middle machine at the back as it was missed by the rays, which isn't great... So I'm now thinking about coming at it from the other direction (analysing what is drawn), which should be faster and eliminate the problem of these gaps Firstly, I knocked up a quick test arcade in the editor: Then, using a shader, I've generated this somewhat mind-bending 360 degree rendering, from a position near the middle of the arcade: So this is kind of like when you take a panoramic photo on your phone by slowly turning on the spot taking snaps, then it stiches them all together. Apart from looking pretty crazy, it shows every machine that will be in view when stood on that spot, for any direction you are facing. The 'next stage' (I'm kinda making this up as I go a bit!) is to get the machines rendering with no textures, just flat colour. So in a really simple example, here is a close up part from the left side of the 360 image above: And now here is a mockup of that same part, with each machine being rendered a different solid color: So then, since I know which color I chose for each machine, I can scan through this 2d image (ignoring the floor and ceiling areas), and find all the different colors. Then I'll know what machines have been drawn. (Red is Smash n Grab, Pink is BarX etc). In reality, the differences in color will be very tiny, so there'll be say 255 different shades of pure red for instance (and the system will support up to 255 or up to 65536 machines, though it'll go a bit faster with 1-255 machines). I think there should be a fair bit of room for optimisations, so hooopefully (crosses fingers and toes), it won't add too much to the time when saving, certainly for very small arcades it should be fast. If it's still slow for larger ones, there will perhaps end up being an option in the editor, to choose when to update the 'culling map', or to choose 'draft quality', for quick testing your arcade, that will be created much faster, albeit potentially with a few minor missing machine issues (where they are hidden between tiny cracks in the distance). Certainly a learning curve all this, but being able to make your own large arcades is such a fun feature (and needs this system creating), - I will continue to work on this and hopefully get to a decent solution
  7. A little 'tech update' as I know some are interested in this side of things So having done some more stress testing, it's become clear than I need to write a custom 'occlusion-culling' system. Occlusion culling is one of the tricks we use to save CPU/GPU time, by only updating and drawing things the user can currently see, for example here you can see lots of the world 'disappears' when it's not in the viewing cone: That's how you run large complex worlds (or arcades!) without everything slowing to a crawl. Unity game engine has a system for this, but it is entirely based on fixed levels that ship with the game, so it can't work for our use case, as we have a level editor so the user can make their own levels. This also means I will have to do other custom stuff for lighting/shadows as again, none of it ships with the game, you can make any arcade you want. So, here you can see a shot of a test arcade running - with task manager open, we see from the top row (Machine Renderer.exe) that I'm using a whopping 70% of CPU capacity, along with over 20% of the GPU capacity: and in the bottom-left we see that I'm only getting 27FPS. "Why is it so bad JP?" I hear you ask Well, if we look in the Arcade Editor at the test map, things become clearer: So even though we can't see them in-game in that first screenshot above, there's a lot more machines hidden behind the machines we can see. Even though they are obscured from view, every one of them is still being updated, drawn, running various code etc. Which translates to a lot of CPU and GPU load. It is very expensive at runtime to figure out what can and can't be seen, so we can't do it on-the-fly (or we'll have a horrible low framerate from all the calculations involved in deciding what to draw/update based on whether it can currently be seen). With that in mind, my plan is to pre-calculate what can and can't be seen from every point in the Arcade, whenever an Arcade design is saved in the Arcade Editor and save this as part of the arcade file. This will be done by dividing the floor up into grid squares, say 50cm x 50cm and working out what can possibly be seen from each square. By doing the expensive calculations once at the point the Arcade is saved from the Editor, when it doesn't matter that the computer is busy for a few seconds working it all out, we won't be killing the CPU when actually playing the arcade. For each square, I will work out what is visible at any point within the square, looking in all directions from that point. And I'll break that into: - is any part of any of the front glass panels with all the reels, lamps etc visible? - is any part of the 3d model of the machine cabinet visible? The reason for this is that all the machines that are facing away from us, we still want to draw the back/side of the cabinet if it's visible, but we don't want to draw/update all the expensive lamps as they're facing away from us and we can't see them. And of course, if the entire cabinet is not visible from our current grid square, then we can skip most stuff associated with this machine. Using the editor to mock up what would happen if we were stood in the arcade like in the screenshot at the start of this post - all the machines with boxes around them, I wouldn't update/draw the glass panels as they'd be hidden from view anyway: And around 90% of those machines above, their entire cabinet would be hidden from view so I wouldn't draw that either. Once this is all done, I believe it should solve the problem of high CPU/GPU load with lots of machines So at runtime, in the arcade, I will check what square I'm in, get a list of what glasses/cabinets could possibly be seen from my square, and only draw/update those. A chunky task to be sure, but it will make everything much smoother for large arcades
  8. Have implemented the Coin/Note & Effect dropdowns in the data layouts which fixes the coin mechs issue. Have updated some Eclipse machines to the latest so they can be used. Here's a vid of adding copies of the new machines in the editor to make a little corner of an arcade and testing a few (the £1 stake start button not working on one of the machines is a new issue to do with a clash between LED lamp and normal lamp, it's on my buglist for fixing at some point)
  9. I did notice there are letter 'N' in that carpet pattern (inside the smaller circles with a little crown on top), makes more sense now if it's Nobles!
  10. Thanks bud It's such slow work but there will be a pre-Alpha tester release at 'some point' so people can finally have a play with the project so far. There's still a lot to do to get to that stage, so I guess maybe tentatively a couple more months to have something people could try out... For instance I've spent all afternoon finishing up a part missing from my custom Delphi font scraper as it couldn't differentiate between I and l in the Delphi font (uppercase 'i' or lowercase 'L'). I now need that ability in order to re-add Coin mech support back to the optimised data layouts. I swear hours just vanish! But, there's progress all the time, it'll get there Hopefully get those coin mechs actually working again tomorrow...
  11. Right going to call the Eclipse cab done enough, since it's not perfect anyway, so not worth more work (these will all end up getting remade again later when I have more 3d modelling skills). Added remaining black panels, added coin tray at bottom, upped black slightly so these things are actually visible, fixed issue with missing reels: Frees me up to look at getting the JPM Vogue cab to acceptable relative scales/overall scales (so everything is about the right real-world size), then adding back in support for inserting coins on the newer machines (that no longer works after optimising away most of the old contents of the data layouts) - now this data needs populating by the converter:
  12. No rush on that at all if it's a hassle to find (but thanks if you do ), the badges are that small I don't think any more resolution will make a difference at present! Betcom badge: The correct QPS badge for this machine:
  13. lol looks sharper than mine, but I did a double-take - there's been shenanigans here!
  14. Blackpool Funland carpet texture in action after some processing of the texture
  15. Another (not yet touched up) quick arcade carpet test (from Ocean Beach Pleasure Park, South Shields): Youtube image: In simulator:
  16. A bit more fun playing with images as it's Friday night - decided to take a look at getting 'real' arcade carpets in from the youtube videos of arcades - here's my first attempt, it's the carpet from Funland Amusements in Blackpool! I need to do some stuff to remove the lighting differences so it's more seamless and tiles better, but promising The frame of video I did a quick capture from: And then getting the (non-touched up) carpet into the simulator as a test:
  17. Awesome thanks If you have them in just 'flat' color (no lighting shading etc) please, then I can use them for the 3d rendering textures, much appreciated! Done one more (it's addictive doing these) - from a betcom logo from online, little bit low res (though these badges are tiny so will prob be fine), will perhaps AI upscale at some point: I'll hold off doing any more, and see if we can use yours @vectra666. Back to some Eclipse work tomorrow
  18. @Reg Is it this cabinet? - nowt too tricky there really if so, now I'm getting to grips with the basics at least of the modelling Will need to get a good side profile and dimensions from somewhere, but I'm sure it'll get done at some point down the line - probably be moving onto other stuff next that needs doing once I've got the Eclipses and Vogues finished up and scaled ok, but planning to do as many cabinets as I can later on Knocked another Eclipse top bar badge from images found online:
  19. Eclipse cabinet starting to come together now at approximately correct ratios - just knocked up a Bell Fruit manufacturers 'badge' for the top Will keep on fettling... Also added in a very quick basic 'suspended' ceiling like they used to have in a lot of arcades:
  20. Thanks guys I think while my modelling skills are so amateur, I'll just keep going with these approximate side profiles for now, rather than hassling the guys on the Mecca. Thanks very much @vectra666 for those Rio cabinet measurements and side profile, they'll be super useful (though I will have to implement support for non-rectangular glass panels first for the top bit). Thanks for the offer of measurements @slasher, I should be ok for now with that latest side profile grab from the video, save you going to the shed where all the spiders live! I will start on the Eclipse again tonight
  21. Just another update on my quest to get 'side profiles'... since no-one really intentionally takes photos of sides of machines, I then thought about stock photos of arcades, and did find some gold there. Then, I've had a breakthrough, certainly for modern machines So there's people on youtube walking around UK arcades recording with a camera at 1080p60 - so from the first video I scanned through I've found this gem: Be more of use for the newer machines, but a nice new source of really good side on shots, since they just get captured in the footage if the sides are exposed like this beauty And this solves my eclipse issue, I'll start fresh with that image.
  22. Is that a rare one? Just happens to be in the background! There's some more photos of that model in this auction if you want them for your images collection https://www.ebay.co.uk/itm/Batman-100-Jackpot-Pub-Fruit-Machine/174575515891?hash=item28a582f8f3:g:4lQAAOSwuLdf6mo- Edit: just realised the one I'm going to use for the side profile is also a Batman machine! Well, let's hope his powers work to correct my perspective issues
  23. Well - I've got the basics of the eclipse cabinet done, but unfortunately its relative ratios are off It's trying to derive 2d side profiles from these bloomin' perspective photos that's getting me... the Barcrest 80s cab seems to have come out about right, but this new Eclipse one, the upper part of the cabinet is stretched and the lower part is squashed... so you can see the button panel is clearly too low down... Back to the drawing board I suspect... if anyone has a flyer or something that shows one of these perfect 2d side profiles for an eclipse cabinet, that'd be super welcome E.g: I thought using the perspective tool in gimp would do it, I'm thinking I may try using sketch up again, it seems to do more correction - this was where I started to do the Vogue side profile in sketchup, before moving onto gimp: Edit: since had a scan around the internet, I think if I start again and use the second machine back in this photo, that should hopefully balance out the upper/lower relative size issue. Fruit machines far away from the camera less affected by height distortions (hopefully)
  24. Started work on a proper Eclipse cabinet to replace the one I bought (which doesn't really seem to be any particular real cabinet)... once done will be the correct dimensions and hopefully fairly accurate relative ratios...
  25. Brill thanks @Tommy c That's great as I had the Horizon width measurement significantly wrong from a website I copied it from (I had 710mm not 650mm) - database updated with correct info now
×
×
  • Create New...