Je prépare un stage en tant que programmeur de jeu dans une société de développement de jeux de renommée mondiale. Lorsque j'ai cherché sur leur site Web les conditions préalables nécessaires, cela m'a montré ceci:
Avantage ajouté
- Connaissance de DirectX / OpenGL.
- Maîtrise des mathématiques 3D et de la physique.
- Développement de Visual Studio IDE pour C ++.
- Programmation système et concepts de système d'exploitation.
Qu'entendent-ils exactement par programmation système et concepts de système d'exploitation?
Devrais-je étudier la programmation Windows? Ou devrais-je utiliser la programmation Linux (ce qui signifie qu'ils veulent que je connaisse les concepts importants). Ou est-ce quelque chose de totalement différent?
terminology
career
Dhannanjai
la source
la source
Réponses:
"Programmation système" (ou "programmation système") a tendance à signifier une programmation réalisée à un niveau d'abstraction inférieur à celui d'une programmation de jeu (par exemple). La programmation de jeu consiste généralement à créer les mécanismes de jeu réels et les fonctionnalités frontales qu'un utilisateur peut voir, alors que la programmation système consiste davantage à créer les cadres sur lesquels travaillent les programmeurs de jeu.
Cela peut signifier des graphiques, le chargement et le streaming de ressources, l'audio, la gestion de la mémoire, les entrées / sorties de fichiers, les API d'abstraction de plate-forme, etc. Les détails varient un peu et, comme il n’existe pas de normes pour les intitulés de postes dans l’industrie du jeu vidéo, il n’existe pas non plus de normes pour les noms de domaines de programmation. Dans un studio, vous constaterez peut-être que "programmation système" désigne tout ce que j'ai énuméré ci-dessus. À un autre moment, vous constaterez peut-être qu'ils distinguent la "programmation graphique" en tant que domaine distinct et appellent toutes les autres tâches de programmation autres que le gameplay "programmation système". Dans un autre cas encore, ils pourraient ne pas utiliser le terme du tout et l'appeler simplement "programmation moteur".
Comme il s’agit d’un domaine de niveau inférieur et implique généralement une interface plus directe avec les API spécifiques à la plate-forme, quelle que soit la plate-forme pour laquelle le jeu est créé, il sera utile de connaître ces plates-formes, tout comme le fait de connaître le domaine plus général (par exemple, , des concepts de système d’exploitation sans tenir compte de la façon dont fonctionne le système d’exploitation spécifique, tels que la mémoire virtuelle, le fonctionnement des threads, le fonctionnement de la mise en mémoire tampon des E / S, etc.).
la source
La réponse de Josh est vraiment bonne, mais je me suis dit que je parlerais bien de l'équipe des systèmes où je travaille. Je ne travaille pas sur les systèmes mais je travaille souvent avec eux. Les responsabilités d'une équipe de systèmes varient beaucoup d'une entreprise à l'autre.
Notre équipe de systèmes est en charge de beaucoup de choses:
Il y a beaucoup de connaissances des domaines Windows et Linux ici, ainsi que de la physique, de la logique de jeu principale et de la gestion de la mémoire de bas niveau. Les équipes de systèmes seront généralement impliquées au moins en partie dans chaque système d'exploitation pris en charge, car la plupart de leurs projets reposent sur chaque système d'exploitation à un niveau assez bas.
Certaines choses pouvant appartenir à une équipe «Systèmes» que nous divisons en équipes distinctes (mais notre équipe Systèmes interagit toujours assez fortement):
la source
La programmation système est très bien définie, mais les entreprises essaient de l’étendre à leurs besoins. Si vous utilisez ou écrivez des appels système, vous effectuez une programmation système. Les appels système sont les fonctions fournies par le noyau ou les pilotes de l'espace utilisateur. Cela inclut OpenGL car il s’agit d’un pilote.
la source
Les avantages supplémentaires énumérés ci-dessus concernent principalement la programmation des moteurs de jeux lorsque cela est nécessaire, ce qui implique l'utilisation d'API de bas niveau. La programmation système attend ici que vous sachiez comment passer des appels vers le système d’audio audio, la gestion des processus, la manipulation de fichiers, les appels réseau, etc.
la source
Puisqu'ils font référence à Visual Studio, la programmation système fait référence à l'écriture de programmes spécifiquement pour les systèmes d'exploitation Windows, c'est-à-dire: appels système Windows (par exemple, il n'y a pas de chaîne fork-exec), comptes d'utilisateurs, où placer vos données spécifiques, modèles de partage de données Windows Recherchez, par exemple, comment vérifier l'utilisateur actuel dans Visual C ++ ou comment démarrer un nouveau processus
Concepts de système d'exploitation, référence à la planification, à l'abstraction de fichiers, aux threads, à l'espace utilisateur, etc. Le dev wiki et les forums peuvent être une bonne lecture
L’authentification de l’utilisateur se trouve par exemple dans les deux sections, car Windows est un système d’exploitation monoposte, qui intègre beaucoup plus profondément le noyau de la gestion des utilisateurs et de l’interface utilisateur.
Le msdn est la base de connaissances pour tout ce qui concerne la programmation Windows: apis, bibliothèques, etc. https://msdn.microsoft.com/
Stackoverflow pour le codage réel si vous êtes bloqué.
la source