Jump to content
LaunchBox Community Forums

Ize

Members
  • Posts

    58
  • Joined

  • Last visited

About Ize

  • Birthday 11/28/1983

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Ize's Achievements

16-Bit Artificial Intelligence

16-Bit Artificial Intelligence (4/7)

80

Reputation

  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
  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. Also, Manjaro Linux is kinda awesome.
  3. Woo another update As you can see... still lots of quirks but it's getting there... still gotta implement that pooling... *urgh*
  4. 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.
  5. 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 , Massive 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 ) mess so others can actually work with it. It's still clunky af and kinda buggy but all the basics are in now
  6. Aaand finally another (small) update: Last week was kinda slow but i managed to add some UI stuff and finally 3D Boxes. The window now scales everything more or less properly at any resolution and as seen at the end, i've added the first tweened motion to switch between boxes / games Next is the coverflow stuff
  7. 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 - 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. 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
  8. 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. 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.
  9. @Rincewind sure. I use half spine covers in those videos, the same once used for wii flow. I couldn't find full spine covers that also include the original side art but i guess this is a good compromise
  10. @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: I'm the german flag 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 So @Jason Carr "just" has to parse the feed and we have an integrated serverbrowser in bigbox
  11. lol that was fast. i'll test it when im back from work later today EDIT: meh... just startet lb @ work cause i wanted to test it: Works great actually @Jason Carr
  12. 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.
  13. @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 I didn't develope this any further cause there wasn't much interest
  14. A little update: implementing object pooling for the covers helped ALOT... as you can see in this video... i've increased the amount of covers from ~10 to infinite and it runs better than before as you can see by the enabled debug fps counter Now your 20000+ title collection from mame shouldn't bother it anymore
  15. Thanks for the mostly nice feedback guys 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
×
×
  • Create New...