Journal Jouer Concrètement à Space Nerds

Posté par  . Licence CC By‑SA.
Étiquettes :
14
5
oct.
2020

Il y a environ un an et demi Un journal de MCMic sur un jeu en cours de réalisation Space Nerds in space m'avait m'avait beaucoup fait rêver.
C'était un jeu convivial puisqu'il fallait former un équipage de passerelle avec d'autres joueurs et explorer un univers et remplir diverses missions.

L'autre aspect du jeu qui m'a beaucoup plu c'est la possibilité de personnaliser l'univers (les systèmes solaires) les missions les vaisseaux.
Un univers miniature à partager avec des amis.

Le site du jeu

Je recommande également la chaine youtube du créateur du jeu.
et le dépôt github

Assez motivé au départ je me suis aperçu que l'installation du programme était un peu ardue.
Pas grave ! je me dis que j'allais reprendre mes bonnes vielles habitudes et tout compiler moi-même car aucun paquet Debian n'existe encore (I love Debian).

Et à ce moment, comme bien souvent problème de dépendance la version des bibliothèques n'est pas la même sur ma distribution que sur celle du développeur,
Bref tous les souvenirs que j'avais refoulés de mes premières années remontaient. (heureusement les distributions Linux et Debian ont mis en place des outils de gestion de paquet très efficaces).

Mais point de paquet SNIS et donc un peu compliqué de suivre les mises à jour régulières de ce projet.

Donc sur ce, le temps passe mais point de renoncement en discutant avec Nwrk (il passe de temps en temps sur linuxfr), il me dit: "Mais Docker c'est fait pour ça !"
Il me montre les bonnes pratiques. Je commence à créer mon Dockerfile pour installer ce logiciel ce qui au passage m'a permis de progresser sur docker et son utilisation.

bref voici donc mon Dockerfile pour ceux que ça intéresse

Pour le moment, il est limité à la compilation de SNIS et à la création d'un container d'exécution pour le moment sans le son mais ça va évoluer.

Je vais essayer en plus de générer des paquets Debian pour une Debian 10 ce qui permettra de l'installer sur une machine directement.

Mais après ces quelques explications, je vous soumets ce Dockerfile. Toutes les remarques constructives sont les bienvenues.

from debian:10 as build

run apt-get -y update

run apt-get -y install build-essential
run apt-get -y install portaudio19-dev
run apt-get -y install libvorbis-dev
run apt-get -y install libsdl2-2.0-0
run apt-get -y install liblua5.2-dev;
run apt-get -y install libglew1.5-dev;
run apt-get -y install libssl-dev;
run apt-get -y install libpocketsphinx3
run apt-get -y install git
run apt-get -y install stgit
run apt-get -y install libsdl2-dev

run git clone https://github.com/smcameron/space-nerds-in-space.git

run sed -i -e 's/main/& contrib non-free/' /etc/apt/sources.list && apt-get update
run apt-get -y install libttspico-utils

run apt-get -y install libgtk2.0-dev
run apt-get -y install libbsd-dev
run apt-get -y install wget

run apt-get install -y desktop-file-utils

workdir /space-nerds-in-space

env PREFIX=/usr/local
run make -j 16
run make update-assets
run make install

# ---environnement d'exécution
from debian:10

run apt-get -y update
run sed -i -e 's/main/& contrib non-free/' /etc/apt/sources.list && apt-get update

run apt-get -y install \
        libportaudio2 libportaudiocpp0 \
        libogg0 libvorbis0a libvorbisenc2 libvorbisfile3 \
        libsdl2-2.0-0 \
        libgtk2.0-0 \
        libbsd0 \
        liblua5.2 \
        libglew1.5 \
        libssl1.1 \
        libpocketsphinx3 \
        libttspico-utils \
        procps \
        vim \
        less \
        alsa-utils \
 && apt-get clean

copy --from=build /usr/local /usr/local


run apt-get install -y glx-alternative-mesa \ 
                       mesa-utils \
 && apt-get clean

run useradd -m nodeus

env  PATH=$PATH:/usr/local/bin
workdir /home/nodeus

Vous pouvez utiliser les binaires ainsi générer

Je vous laisse customiser ce Dockerfile.

dès que j'aurai un peu de temps :
Je pense le faire évoluer pour la création de paquet Debian pour installer directement sur une machine les paquets compilés.

Même s’il n'est pas encore complet ce jeu mérite vraiment d'être connu et de créer sa communauté.

Pour les amateurs de simulation de passerelle de vaisseau spatial de science-fiction : essayez ça vaut la peine.

  • # au modérateur

    Posté par  . Évalué à 3. Dernière modification le 05/10/20 à 16:54.

    une erreur d'orthographe m'a échappée : possible de remplacé "d'autre joueurs" par "d'autres joueurs" et corriger ma coquille svp

    Il a également un s en trop beaucoup plu

    malgré ma relecture il en reste toujours

  • # Live USB

    Posté par  (site Web personnel) . Évalué à 8.

    Je rappelle que j'ai mis en place https://gitlab.com/MCMic/snislive qui permet de compiler un live usb, ce que je trouve le plus pratique puisqu'il faut de toutes façons faire tourner le jeu sur ~6 ordinateurs.
    J'ai pas encore pris le temps de réactualiser la recette depuis que le jeu a migré vers SDL mais promis je fais ça à l'occasion et je relance un build.

    La session que j'avais prévue est tombée à l'eau suite au confinement et j'ai pas eu le courage d'en réorganiser une depuis. Du coup j'ai peu contribué ces derniers temps. (deux même, celle prévue chez moi et celle prévue aux jdll)

    Le dev du jeu lui a pas mal bossé pour améliorer le fonctionnement du jeu au travers d'internet également suite au confinement. Il a mis de la voip dans le jeu notamment. Mais bon pour moi ça reste un truc à vivre en LAN. Éventuellement un équipage chez moi et un équipage ailleurs par internet, mais ça devient complexe à organiser.

    • [^] # Re: Live USB

      Posté par  . Évalué à 3.

      Bien l'intérêt du container est de pouvoir recompiler sans effort.

      Pour la gestion des serveurs réseaux, c'est également pratique.

      Une fonctionnalité amusante est la commande vocale.

      Je n'ai pas encore testé la fonctionnalité voip
      ça fonctionne pour la communication inter-vaisseau ?

      j'aimerai bien également expérimenter en multi-vaisseau dans un même univers.

  • # Star Trek Next Generation

    Posté par  (site Web personnel) . Évalué à 6.

    Pour les amateurs de simulation de passerelle de vaisseau spatial de science-fiction

    En parlant de passerelle de vaisseau spatial de science-fiction, il y a des gens qui ont essayé de refaire l'interface de Star Trek Next Generation dans des thèmes de bureau ou des jeux ou que sais-je encore ?

    … ok je m'auto-réponds vu que je viens de chercher et de trouver… cf https://fr.wikipedia.org/wiki/LCARS

  • # nproc

    Posté par  . Évalué à 4. Dernière modification le 06/10/20 à 08:22.

    Au passage :

    run make -j 16

    run make -j `nproc`

    Ça permet d'être plus générique

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: nproc

      Posté par  . Évalué à 4. Dernière modification le 06/10/20 à 08:52.

      oui en effet , mais j'aurai utilisé plutôt

      run make -j "$(nproc)"

      En l’occurrence ça dépend du nombre de cœurs que tu veux utiliser :

      dans ce Dockerfile je n'utilise pas tous les cœurs mais seulement une partie

      Et donc la valeur en dur était plus simple à utiliser

  • # apt

    Posté par  . Évalué à 5.

    # ---environnement d'exécution
    from debian:10
    
    run apt-get -y update
    run sed -i -e 's/main/& contrib non-free/' /etc/apt/sources.list && apt-get update
    

    Il y a un update en trop, mais surtout je trouve cette façon d'ajouter un dépôt assez fragile. Ajouter un fichier dans /etc/apt/sources.list.d me paraît plus fiable.

    • [^] # Re: apt

      Posté par  . Évalué à 2.

      J'ai mis deux fois update pour pouvoir réaliser un layer dans la construction de mon fichier Dockerfile mais ce n'est pas obligatoire. ( Dans mon cas c'est que ce fichier et les caches de Docker sont communs à plusieurs projets ça évite de consommer trop d'espace)

      Personnellement dans /apt/sources.list.d/ j'ajoute les dépôt les dépôt étrangers comme virtualbox ou d'autres

      mais pas pour les cibles contrib et non-free des dépôt Debian.

      ça marche assez bien mais il y a toujours plusieurs manières de faire.

      • [^] # Re: apt

        Posté par  . Évalué à 3.

        ça marche assez bien mais il y a toujours plusieurs manières de faire.

        Faire une regex sur un fichier qu'on ne maitrise pas, sans plus de vérification préalable c'est vraiment plus sujet aux erreurs. Demain les mainteneurs de l'image se basent sur des dépôts qui n'ont que la section main par exemple, ton build va exploser. Moins violent S'ils ajoutent divers dépôts ayant des section contrib et non-free, ton temps de build va augmenter pour rien.

        Si vraiment créer un fichier te pose problème (mais séparer ce qui fait parti de l'image de base de ce qui est de ton ajout n'est jamais vraiment une mauvaise idée amha), tu peux ajouter une ligne en fin de fichier.

        • [^] # Re: apt

          Posté par  . Évalué à 2. Dernière modification le 06/10/20 à 23:00.

          Oui dans l'absolu, mais par défaut contrib et non-free ne sont jamais dans les images de base Debian officielles depuis toujours.

          donc non maîtrise du fichier dans ce cas c'est un peu exagérer c’est pour compiler un jeu c'est pas un container pour un serveur de prod :) ou là je crée une image dérivée.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.