Jump to content

Cranium

  • Posts

    8
  • Joined

  • Last visited

Posts posted by Cranium

  1. 1 hour ago, johnparker007 said:

    Hiya :)  Thanks for those detailed suggestions, sounds like you know your stuff man! 

    Ok so in the end, I am not actually using GPU-accelerated h264;

    "double-digit seek times were not uncommon in very large files, even on top hardware"

    I found the only really way to effectively combat this using h264 on GPU was to go for forced keyframes, which of course then made the file size larger, as really they want to be on scene changes... I got it working 'ok', but once I started scaling further up (more screens) it was still breaking down.

    So, then I did some tests with VP8 (google's open source version of h264) - and I don't know what they did differently in their implementation, but it seeks much faster (without needing to force keyframes)!  Which is amazing, as that's what I need for the technique I'm using to get all those videos running.  And with some less intense quality settings (like shown in the most recent video above), I am hoping to get the attracts for the 64 initial games down to around 200-250MBish.

    So while h264 is a great codec, google's VP8 seems to be a clear winner of the two in terms of seek times, whilst also being able to have a smaller file, due to no keyframe-forcing needed for fast seeking once cached.

    It's generally down to h264, h265 (sort of) or VP8, as I'm using the Unity game engine to make this in, and it has best support currently for h264 and VP8.  h265 is even worse for seeking, due to even more temporal frame stuff (costs more cycles to decode a seek point).  At some point in the distant future when it's all working well on PC, there may other platforms supported and hopefully the same VP8 decoding seek speed would be present there... though with the copyright issues surrounding like, everything in Arcade Sim, I wouldn't be able to put it on PS5/Xbox/iOS, so it'll probably be Mac/Linux/Android (if it seems worthwhile in the future).

    How I am getting all those videos running at once, is by creating the original arcade resolution video, for when you are close.  Then as you move further away from the videogame screen, it drops to a half-resolution video (and again two more times).  So I background seek the next resolution down, and once I can see it's successfully decoded a frame, I stop the current video, and switch to rendering the half resolution video.  It's barely noticeable (though I haven't tuned the crossover distance thresholds yet).  There are more tricks I can do such as blending between the two over a threshold distance, to really get the crossovers invisible, but that would cost a little more CPU overall.  A 'nice to have' setting for later.

    Still not counting my chickens though, I may hit some other bottleneck once I've further developed the new pipeline, and got the other games in a stress test scene - fingers crossed though! :) 
     

    Before I got into psychology, I worked in television, so I was immersed in codecs and their inner workings. Having been out of that game for a few years I'm definitely getting rusty though 🙂

    It sounds like you've got it working much better though, and thank goodness - there was something really rather mesmerising about seeing all of those flickering attract screens peeling off into the distance.

    I couldn't say for sure, but I suspect your seek-times have massively improved, in part because of their strict frame referencing, and golden frames (caching for keyframes). Have you figured out why it's running so slow on the GPU? I suspect that's probably down to the decoder implementation in the hardware, perhaps you could utilise that for the very low-res videos playing in the distance, if CPU use becomes an issue?

    I think you mentioned it in an earlier post but have you had any idea about sound yet? I've been working on procedural arcade ambience generator that uses the sounds from the machines like instruments to create procedural background audio depending on which 'zone' you're in (and what machines are nearby and active).

    It's amazing to see new life being breathed into emulation, looking forward to seeing more updates 🥳 

    • Like 2
  2. Quite an achievement to get that many videos playing onscreen at once, especially in h264! I still have nightmares about that format back when I was an edit technician, double-digit seek times were not uncommon in very large files, even on top hardware...

    Out of interest, what encoding settings are you using?

    If you haven't tried it already, disabling b-pyramid will help get the size of your decoded picture buffer down, you might want to check the maximum reference count as well, a higher count will give you much better compression on videos with lots of flat shading (i.e. animation) but the CPU has to go searching multiple frames when decoding.

    Perhaps, have a play around with the deblocking filter, it's normally quite a small CPU hit but if you're decoding hundreds of videos simultaneously that can add up.

    It's been a long time since I did any work with encoding/decoding, so I'm probably re-stating much of the obvious here, anyway, your progress is very impressive aesthetically and technically, can't wait to see how this progresses 😀

    • Like 3
  3. I often see a number of terms pop up when people are describing certain machines that are related to one another in some way. Clone, rebuild, reglass, conversion etc. I'm just wondering whether someone could explain the difference between them?

    The way I understand it, a clone would be a machine that has substantially the same gameplay/programming as an earlier release by the same manufacturer, but differs in artwork and sound package, perhaps? Or perhaps a clone would be a sort-of 'knock-off', taking a popular brand of machine, tweaking the name but keeping everything else very similar.

    Whereas a rebuild is a machine that has different gameplay/programming, sounds and artwork but is housed in a cabinet recycled from a different game and is running on the same tech. If I had to guess at reglass, I'd assume that would be a machine kept exactly the same except for a change of artwork, so the art and bulbs might be moved around but it's exactly the same machine in a different guise. I'm not sure what a conversion is, I'm imagining it's possibly another word for clone or rebuild. So much for my uneducated guesses anyway. There are a couple more terms I've heard but the minute I sat down to ask about them, I've bloody forgotten them 😂

    Sorry for the basic questions, I'm probably missing something obvious, but I did have a search around and I couldn't find these descriptions explained anywhere.

    Cheers,

    Matt

×
×
  • Create New...