Jump to content
LaunchBox Community Forums

Ize

Members
  • Posts

    58
  • Joined

  • Last visited

Posts posted by Ize

  1. All the work is basically done. We "just" need a simple 3d plugin for bigbox that allows to load custom textures like it already does for all the images.

    You can scrape spines (see attachment) / textures or individual sides from emumovies or screenscraper.fr which is the unwrapped coverart from the boxes... slap that onto a simple 3d cube, distort it in  x y z ... bam instant 3d box with covers.

     

    This is the same wiiflow did (maybe they used actual 3d models for the different platforms but this would work too)

    Why did i wrote "just"? Well because xaml sucks and while it supports 3d objects, it's support for 3d is abysmal.

     

    This topic comes up every few months (and i started annoying @Jason about it years ago) and while it would be cool to include this in bigbox, i fear it would have to be completely rewritten :/

     

    I wrote my own frontend, multiple versions even... using Unity, Electron and c++ (well copy and pasted together really :P) and it's not that hard todo (atleast the start) thanks to the output launchbox generates, just parse it, add texture loading and you're done basically...

    I have some of my old test videos still up:

    First parse test: 

    Update 1: 

     

    Linux version: 

     

     

    why didn't i finish it? time... this stuff takes ages to tweak and i just use bigbox and attractmode now instead of looking at spinning 3d boxes

    f-zero.png

    • Like 2
  2. (surprisingly) another update:

    I'm not dead yet just a bit more busy at work atm...

    I finally managed to make it run in linux, which was one of my goals in building a multi platform coverflow launcher based on launchbox data.

    You'd think, "I'll write this in node.js and it'll work on any platform supported by it from alone"... so did i... NOPE... gotta actually tweak things for each platform but i finally got it to run as you can see. :D

    Also, Manjaro Linux is kinda awesome.

    • Like 5
  3. Slow progress in the week as usual, however i added gamepad controls (hardcoded, same as the keyboard input right now) and .ini support for basic config stuff like the LaunchBox path (i hate xml :P)
    I've also made the Massive window minimize when you launch a game so it doesn't use resources when it doesn't have to... went from 6% usage to 0% 

    This of course depends on the theme.

  4. Well, that was easier than expected:

    - implemented basic coverflow

    - added fuzzy search | finds the correct texture from a folder of files

    - started work on a real theme (i only load 9 game boxes for testing)

    - logic is now actually in the theme file so it's 100% customizable (rotate left/right, details view etc.)

    - games can actually be launched now :DMassive will resume it's previous state on exit (music stopping / starting in this case)

    probably more i forgot... heh... 

     

    Now i'll start working on the basic theme and cleaning up this (Massive :P) mess so others can actually work with it.

    It's still clunky af and kinda buggy but all the basics are in now :)

    • Like 3
  5. I obviously had too much free time at work today and this is the result:

    - parsed all of launchbox's xml files

    - added basic theme support... well in this case a theme is just another js file so you can do whatever you want in them :P

    - added some helper functions like the fps display, cleaning strings, music helper

    - fullscreen mode & detection

    - video snaps with sound

    It uses kinda a lot of ram cause of the benchmark cube, without it it'll drop to ~200mb'ish... will increase again later tho because we will have to store atleast a decent amount of snaps in ram so our pooling will work and won't be visible to the user

    i'll just have to add application (emulator) launching and monitoring next and it's basically a working (ugly) frontend. :D

    The cube theme shown below just loads 3 hardcoded snaps right now but as i've parsed everything already we just have to throw all that junk into a for loop and go through our array... bam full blown frontend :P

     

  6. I didn't have the time to work on this for a while but i recently started a "new" project.

    I'll rewrite Massive in JS using Electron and babylonjs because Unity3D was kinda overkill... +Electron Apps run on nearly every platform, be it windows, linux, macosx etc.

    My tests so far look quite promissing imo, here is one from today:

    It renders 800.000 individually lit triangles and runs 2 backgrounds threads at the same time (emulating file loading / parsing etc. for example). Steady 60 FPS. :D

    It also plays music and a sound on keypress (that's when it changes the bg color).

    This is the native windows version (x64), at work i tested it on linux and it ran pretty good too (reduced triangles cause shitty work pc :P)

     

    I don't know how well it can launch other programs (emulators) and monitor them yet but that'll come next... i already know how to parse all of launchbox's files from c# project / unity. So i'll just have to translate those to javascript. :)

    • Like 1
  7. @ckp there is the integrated lobby of retroarch which i didn't implement in my plugin... i forgot to tell @Jason Carr about it so it's good that you mention it:

    lobby.thumb.jpg.84319e34c1f7b18cbedf70e026429b89.jpgI'm the german flag :P

    It can be reached via the web @ http://newlobby.libretro.com/

    or more interesting for @Jason Carr, there is an easy to parse json feed available here: http://newlobby.libretro.com/list/

    EDIT: I just tested it via the new option to host in LB and it WORKS! It announces to the masterserver if you hit host :D

    So @Jason Carr "just" has to parse the feed and we have an integrated serverbrowser in bigbox :D

    • Like 4
  8. You only need to have the roms scanned in retroarch if you use the integrated serverbrowser of retroarch afaik... so it can join a sesssion properly by checking if you have the correct rom.

    By starting it via commandline you directly tell it which rom to use... so no need to check it's own database :)

    It's just important that both players use the EXACT same core (you have to set this up before!) and the EXACT same rom... if there is a crc missmatch during the handshake retroarch won't sync the games or abort the connection.

    • Like 2
  9. @Jason Carr the roms checksum has to be same and it'll work... i've never scanned my roms with retroarch :)

    I'll just paste the HORRIBLE class here:

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Unbroken.LaunchBox.Plugins;
    using Unbroken.LaunchBox.Plugins.Data;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.IO;
    using Microsoft.VisualBasic; //need this for the inputbox... obsolete with proper gui
    
    //I apologize for this horrible code but maybe you can still use something from it :P
    
    namespace LBP_SimpleRetroarchMultiplayer
    {
        public class Class1 : IGameMenuItemPlugin
        {
            public string Caption
            {
                get
                {
                    return "RetroArch Multiplayer";
                }
            }
    
            public System.Drawing.Image IconImage
            {
                get
                {
                    return null;
                }
            }
    
            public bool ShowInBigBox
            {
                get
                {
                    return true;
                }
            }
    
            public bool ShowInLaunchBox
            {
                get
                {
                    return true;
                }
            }
    
            public bool SupportsMultipleGames
            {
                get
                {
                    return false;
                }
            }
    
            public bool GetIsValidForGame(IGame selectedGame)
            {
                if (PluginHelper.DataManager.GetEmulatorById(selectedGame.EmulatorId).Title == "Retroarch") //emulator is retroarch? ok for netplay!
                    return true;
    
                return false;
            }
    
            public bool GetIsValidForGames(IGame[] selectedGames)
            {
                return false;
            }
    
            public void OnSelected(IGame[] selectedGames)
            {
                return;
            }
    
            public void OnSelected(IGame selectedGame)
            {
                var emulator = PluginHelper.DataManager.GetEmulatorById(selectedGame.EmulatorId);
                var platform = PluginHelper.DataManager.GetPlatformByName(selectedGame.Platform);
                var emulatorPlatform = emulator.GetAllEmulatorPlatforms().ToList<IEmulatorPlatform>().Find(p => p.Platform == platform.Name);
    
                Process myArch = new Process();
                myArch.StartInfo.FileName = Path.GetFullPath(emulator.ApplicationPath); //retroarch doesn't like shortened paths so i use the GetFullPath function
                myArch.StartInfo.Arguments = emulatorPlatform.CommandLine + " " + '"' + Path.GetFullPath(selectedGame.ApplicationPath) + '"';
                myArch.StartInfo.WorkingDirectory = Path.GetDirectoryName(Path.GetFullPath(emulator.ApplicationPath)); //set working directory to retroarch.exe's dir
    
                var addCommand = "";
    
                if (MessageBox.Show("Do you want to host?" + Environment.NewLine + "If you choose no, you will connect as the client.", "Netplay setup", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    addCommand = addCommand + "-H "; //-H = Host
                    addCommand = addCommand + "--nick " + Microsoft.VisualBasic.Interaction.InputBox("Please enter your nickname:","Multiplayer setup");
                }
                else
                {
                    addCommand = addCommand + "-C " + Microsoft.VisualBasic.Interaction.InputBox("Please enter the Server IP or Hostname:", "Multiplayer setup"); //-C = Connect to server as client
                    addCommand = addCommand + " --nick " + Microsoft.VisualBasic.Interaction.InputBox("Please enter your nickname", "Multiplayer setup");
                }
    
                
                myArch.StartInfo.Arguments = myArch.StartInfo.Arguments + " " + addCommand; //add our new command to the arguments
                myArch.Start(); //launch
            }
        }
    }

    Maybe you can still salvage something from it... it doesn't really do anything except start retroarch with parameters :D

    I didn't develope this any further cause there wasn't much interest :(

    • Like 2
  10. Thanks for the mostly nice feedback guys :D

    I've already fixxed the fullscreen video issue and added fuzzy matching for the covers / textures and the reflective floor (optional shader).

    The position & rotation of the boxes in the current wip massive theme are fully adjustable... you can put them flat on the ground for a more traditional coverflow if you want.

    Fully rotatable arcades cabinets would be "possible" but i don't know if theres a universal marquee layout for the images.

    Building 3d models for every arcade would be a) very time consuming and b) VERY hard on the system since i couldn't spawn just instances of one object with a different texture... which also means pooling wouldn't work...

    So instead of ~10 3d models you'd have to keep THOUSANDS of 3d models ready for mame... not a good idea and loading them all on the fly.... eh... rip hdd / ssd xD

  11. I've been kinda silent here cause of work :/ but i had a bit of time again to work on my own frontend for launchbox called Massive (in size and hopefully in features sometime in the distant future :ph34r:)

    Without further ado, here is a short pre pre pre alpha video: 

    As you can see it's based on Unity3D and parses the xml's generated by launchbox.

    Everything (3d models, textures, sounds etc.)  is loaded dynamically from easy to edit theme files (currently .ini based) .

    Currently i haven't adjusted the platform files so most 3d models are rotated wrong.

    I'll probably never release it cause bigbox but jason (who's seen a different version a while ago) said himself it wouldn't make bigbox obsolete (and it definately doesn't in it's current state :P)

    But yeah this is my WIP Wii-Flow like launcher for Windows, Linux, MacOS, Android, IOS, Raspberry Pi etc. it runs on everything...

    I'll keep working on it when i'm bored... only god (and maybe Jason 9_9) know when there will be 3d support in bigbox or bigbox for other platforms.

     

    • Like 3
  12. While playing around with RetroArch 1.60 at work today, i threw this plugin together to quickly launch netplay sessions.

    It works great in lan but i haven't tested it via WAN... you'll probably need a good connection for it to work decently over wan for now.

    I haven't added the framesettings etc. yet, it's as simple as can be.

    If you want to test it, make sure that the host and client both use the same core in retroarch and EXACTLY the same rom, retroarch will say nope otherwise :)

    Here's a short video of me testing it locally with mk2(pool fatality, pit fatality, fatality!) f yeah :D :

    If there's any interest i'll update this with more features and saving of the nickname etc.

    LBP_SimpleRetroarchMultiplayer.dll

    • Like 5
  13. While building my youtube & progetto scraper, i noticed that there is not a single public resource to view and maybe get video previews of ALL systems.

    This is the reason why i have started the channel "Archive of Game Emulation" or AGE for short.

    Link: https://www.youtube.com/channel/UCQFnHbktEWR_1gozbUuXr6A/

    I'm currently uploading all my amiga videos, which is gonna take a while because i can only upload 50 - 100 videos every day and i have collected LOTS of previews for other systems over the years.

    If you have any interest, please subscribe, as every subscription helps to make the channel more valid and it will be less likely to be killed by youtube for uploading so many videos ;)

    I make no money at all from this, monetization is disabled globally for the whole channel.

    Any feedback would be appreciated. (I still need to upload channel graphics etc. sorry) :D

    Thanks. :)

  14. 4 hours ago, Resident Stevil said:

    Plugin doesn't find the correct video associated with the game title, and skip button doesn't seem to work.

    As mentioned in my intro post: "So if that channel doesn't have the video for your game, you might get something strange."

    However, thanks for mentioning the thing with the skip button, i only tested it with multiple games to be honest.

    Have you tested other games / consoles? How were the results?

     

    Edit: Seems like chaos legion is a rare gem, only old gameplay videos, no snaps (not even for hyperspin) and the short videos i found were in toaster quality. ^_^

×
×
  • Create New...