mercredi 21 octobre 2015

Games 3.18.0 released

Do you like video games but don't like how inconsistent and annoying it can be to enjoy them on a personal computer? Then read on, I have something for you! And if you're not such a gamer, you'll probably learn fun things in the article nonetheless.

In this article I'll present you the new GNOME application called Games, whose first preview version (labelled 3.18.0) just came out.

Your games library

Video games on personal computers exist in lots of shapes and formats, each of these being accessible in very different ways:

  • games installed from Software are found alongside the applications,
  • Steam games are listed in the Steam client,
  • video game consoles and retro computers games are handled as ROM files, disk images or archives, each one playable with a different application depending on the original platform,
  • some game engines have their games distributed as packages that have to be run with the correct engine, such as LÖVE or the Doom engine,
  • Web based games are available on Web browsers,
  • and there are probably more formats we didn't thought of!

There is no consistent way to access them all, which hide the fact that games are more than files or applications: they all represent the same kind of media, meaning they all share lots of metadata types which could be used to ease your life!

Games tries to solve this problem by automatically listing and presenting you the games available on your computer, letting you browse your collection and play the game you want very easily!

Currently, Games handle these game types:

  • your regular desktop games,
  • your Steam games,
  • your LÖVE games,
  • your NES/Famicom games,
  • your SNES/Super Famicom games,
  • your Game Boy/Game Boy Color games,
  • your PC-Engine/TurboGrafx-16 games.

More games are listed but are not playable yet, and more will come in the future!

Game integration

Games tries to integrate games as tightly as possible. An example of that is the usage of the Libretro API (via the Retro and RetroGtk libraries) which allow it to integrate some gaming console emulators and some video game engines directly into the application, making them installable as plug-ins and avoiding to cripple your file system with support for gaming platforms you don't care about. Thanks to this API, Games can treat emulators and engines just as a music player would treat audio codecs and play the games itself, controlling lots of details in the process, such as:

  • the execution of the game,
  • the outputs (the audio, the video, the gamepad's vibrations, ...),
  • the inputs (the pressed buttons, a camera, ...),
  • serializing the emulator/engine's state,
  • and more!

An obvious feature is that we can integrate the inputs and the outputs into Games' window, but a particularly interesting feature we can offer by leveraging the serialization capabilities of the API is to propose you to resume the game where you left it!

For this release, only the NES, SNES, Game Boy and PC-Engine games are integrated. You can control them using your keyboard with the following hardcoded mappings:

Keyboard NES/Game Boy SNES PC-Engine
Arrow keys D-pad D-pad D-pad
Return key Start button Start button Run button
Backspace key Select button Select button Select button
D key A button A button Ⅰ button
S key B button B button Ⅱ button
W key - X button -
A key - Y button -
Q key - L button -
E key - R button -

Future

Covers, icons and other metadata

Currently, the listed games have very few available metadata, some don't even have an icon or a cover. We obviously want to offer covers or icons for all the games, but we also want to go further by using metadata to offer interesting features such as refined search.

Game controllers

Game controllers can range from regular gamepads to dance mats, via light guns and guitars. Unlike keyboards and mice, game controllers are available in very different shapes and sizes and have equally different kinds of inputs (analog or digital buttons, direction pads, analog or digital joysticks, triggers, spinners, motion sensors...), making them really hard to handle by developers. Even controllers that are very similar — such as the Xbox and PlayStation gamepads — can have buttons placed similarly have different hardware button numbers in the drivers: even wired and wireless Xbox 360 controllers have different button numbers!

These details make game controllers hard to handle, as you have to know the type of the controller, the number and kind of inputs it has, and its layout.

You probably want gamepad support, and not to configure it if possible. To do that we will have to add a gamepad configuration facility — preferably in the Control Center — and to gather the gamepads' layout descriptions and button mappings.

More games

Currently, only a handful of game types are playable and barely more are listed. We want to support (and integrate) as much games as we can!

Improved search

Looking for games should be refined: we want you to be able to filter games depending on their genre, on the allowed number of players, on the required controllers, on their developers...

Deeper integration into GNOME

Games could be a Shell search provider, allowing you to quickly search and run any game.

Also, the Control Center should be leveraged to configure the gamepads.

Help wanted

If you want to test the application, you have some crazy ideas we could implement, you know some crazy game formats and consoles we didn't think of, you know an awesome video game database website we could use, you are a specialist of some particular format/architecture (MD-DOS games, ScummVM, ...), you know OpenGL, GtkGLArea, PulseAudio...: we need your help!

Cake, and grief counseling, will be available at the conclusion of the test.

21 commentaires:

  1. Hi,

    that sounds awesome!

    When you talk about hardcoded keyboard configuration, please make sure to always run in QWERTY mode and/or make it possible to reconfigure those keys. Not everyone uses a QWERTY keyboard...

    And a last thing: any hope of having MAME games too?

    RépondreSupprimer
    Réponses
    1. Actually I referred to QWERTY to simplify but what I really use is the hardware key numbers, not the corresponding character, for example, I use an AZERTY keyboard but I use the AZEQSD keys to play.=)

      I know how annoying it can be when software have been developed with QWERTY only in mind. ;)

      This hardcoded setup is there to be able to play the games while we work on a nice design to configure the keyboard to gamepad mappings.

      I would love to have MAME integrated! The only problem would be MAME's non-free license (but I read some what to change that up).

      Supprimer
  2. would be nice to fire app the "gnome-games" app by pressing a special button on the gamepad (the central X button of xbox controller?) moving trough game by pressing gamepad direction keys and select and start the game, everything by using only the controller.

    RépondreSupprimer
    Réponses
    1. I would love that too, to do so we will probably have to make gamepads first class citizens in GNOME just like keyboards, mice or graphics tablets are.

      Supprimer
  3. It is possible to have categories inside Gnome Games? Like NES, SNES, native games.
    And inside each category could be RPG, Action..

    RépondreSupprimer
    Réponses
    1. Being able to filter games is something we want, the only question is: how to do it the right way. We will have to discuss that with designers.

      Supprimer
  4. Thanks a lot, it is a great software, but it still has some work to do in my opinion.

    -1.- ROUTES you must be able to tell the software where you have your roms if it does not find them or make it search better

    - 2.- There must be a game installer with categories one of them must be emulators, and one option i think must be "install all the supported emulators"

    And you can use the code from Packagekit and you can use use AUR / yaourt as it is multiplattform and or their git repos

    - 3.- Several ways of selecting your FILTERS, big icons, small icons and mosaic, and list, list, sort by genre, year, times played, hours played etc
    - Nested (several) Filters or not as Native, Emulated, Platform genre times played, hours played, year etc.

    And i would suggest an almost crazy thing as you ask for

    - 4 .- Docker (or future standard container) emulation, this may sound crazy, but it can be possible to install FreeDos (instead of using dosbox) or MS-DOS at docker or boxes and launch games from Gnome-Games even a future MS WOS container version (or in a special Gnome box) as well as emulate consoles or MAME hardware

    - 5.- Finger friendly menu, able to be used at tablets running Gnome, with Icons/ideograms with text subtitle (or not) - configurable in a vertical dash as menu with nested matrix (arrow of arrows) for submenus 3x3,

    Where clik/tapping the center square or a corner with the usual door for quit/exit ideogram would go back in the menu tree. that I think would be the finger friendly menu scheme in the future for Gnome software, configurable with subtitles, or popup balloons as you put your mice over the icons/ideograms, and even the size to adapt it from 4" phones to 60" TV screens use.

    RépondreSupprimer
    Réponses
    1. 1: Can you tell me what kind of games where not found and where they are placed? Games uses Tracker to look for games by their MIME types, so it may be that Tracker don't track the directory where your ROMs are or your shared-mime-info isn't recent enough to support the required MIME types.

      2: We want the right design to filter games by their types, but that's clearly something some users want! =) About installing the required emulators: we already plan to use PackageKit to do that automatically like Videos do, we just didn't implement it yet. ^^

      4: I already managed to run MS-DOS games integrated into Games, but we are not satisfied at all by how the games are found/listed, hence it is not supported yet. But yeah, wow, using Docker sound pretty crazy indeed. =p It's an idea worth keeping in a corner, who knows what could come out of it.

      5: Isn't the application already working well on touchscreens? It works pretty well on my laptop. =o Could you explain what you think doesn't work well exactly, as I'm not sure I understood it?

      Supprimer
  5. "You can control them using your keyboard with the following hardcoded mappings"

    What about those using a fr_CA Dvorak keyboard layout? ;)

    RépondreSupprimer
    Réponses
    1. See my anwser to the first comment. =p

      For short: it will work as you want it: Games use the hardware keycodes.

      Supprimer
  6. Looks Great! Would love to see this in the Arch User Repository, seems a little involved to get up and running. Otherwise really looking forward to the unification, I think this is a great project!

    RépondreSupprimer
    Réponses
    1. I think Laurent Pointecouteau wants to work on it as he is an Arch user and I'm not, don't hesitate to go chat with him if you want to help with that. =)

      Supprimer
  7. Réponses
    1. Sure, we want to support it, as many other platforms.

      You can see a list of the systems we would love to support at the end of this page: https://wiki.gnome.org/Apps/Games/Roadmap

      If you see any missing system, don't hesitate to add it to the wiki or to open a but entry!

      Supprimer
  8. wow :) so happy to see this. However I'm unable to compile/install gnome-games on fedora 23, would be great to have an .rpm package, like now! :) I'd suggest to add secondary description to the game icons, like 'unplayed' 'played '35min'' 'single player only' etc... also perhaps in app or global notifications for events like 'new games found' or especially for gamepads, messages like 'gamepad one/two detected' after a button on the controlers is pressed. also, some buttons on the headerbar would be nice, like, 'continue last game' or 'stats' 'or simply a gamepad icon to bring up a gamepad configuration screen(ideally to bring up the gnome global settings screen like you mention). keep up the good work!

    RépondreSupprimer
    Réponses
    1. If you had any problem compiling retro-gtk, there was an error in its configure.ac, a new package have been uploaded.

      I plan to make a F23 COPR repository for Games, if it fits within COPR's rules.

      Secondary descriptions would be cool, but we have to be sure to display the *right* information. We will have to discuss this with the designers, could you open a bug entry about it? =)

      Some goes for your other suggestions: bug entries are welcome! It will help us to track the ideas and feature requests. ^^

      Thanks!

      Supprimer
  9. Hi,

    Very interesting new and very interesting project.

    Which libretro core do you use ? Your owns or libretro organisation's one ?

    I use libretro cores and retroarch from git source for a while now (with EmulationStation) and it's not always simple. Lot of configurations per system to do manually (in retroarch.cfg and a cfg file per system).

    Libretro organization seems not so well managed and with a difficult roadmap. In my opinion, they want to do too much as the same time (for example writing core usable in on a lot of systems, from Windows XP to 3DS...) and they rewrite large part of well known emulator (maintenance issues).

    After 6 months on using retroarch it just appears to be a new layer between emulators and sdl or opengl with its own bug and I have came back to standalone emulator. For example, Nestopia core is way too fast, so I use Nestopia package from debian instead.

    Anyway, I will try to your implementation and report bug if needed.

    Thanks for the hard work.

    RépondreSupprimer
    Réponses
    1. As I can't maintain such a huge stack alone, what I currently do is to wrap existing Libretro cores to make them easier to distribute and install at the correct place with the correct name.

      As video game preservation is one of our* concerns, we try to use the most accurate emulators available as long as they are usable, an example of that is that we use bsnes as our SNES emulator, but in its "balanced" profile and not its "accurate" profile. Basically, we want very sane and faithful defaults, and hence to manage configuring the cores ourselves. It should just work.

      AFAIK Nestopia accepted Libretro into its own repo and hence the code should be the same, maybe you're experiencing one of these configuration problems?

      Anyway, if you find anything wrong with how a core is handled by Games, don't hesitate to file a bug!

      Thanks for the cheers! =)

      *I am the only active dev so sometimes I say "I" but there is also Laurent Pointecouteau working on other areas of the project, hence the "we".

      Supprimer
  10. "Resume last game" (and similar dialogs) should use GtkMessageDialog; buttons in the header bar really don't work there

    RépondreSupprimer
  11. Great initiative, love to see something like this for free games. Hope to find some time to contribute in the future.

    RépondreSupprimer