Dota 2 in esecuzione su Linux, Mac e Windows - Come fanno?

6

In che modo Valve crea giochi che girano su Linux, Mac e Windows? Immagino che non scriveranno davvero una versione per ogni piattaforma, perché sarebbe solo un incubo ... o no? Immagino sia scritto in un codice C ++ portatile (o C #?) Ma volevo sapere più dettagli su questo. Ho sviluppato un'applicazione su Adobe AIR e sto considerando di portarla su un linguaggio diff come Adobe ha abbandonato il supporto linux.

    
posta StephenNYC 18.11.2013 - 23:11
fonte

2 risposte

16

Ogni prodotto Valve è sviluppato utilizzando il proprio motore di gioco interno chiamato Origine . Motore di origine è scritto in C ++. Il motore di origine contiene sia un renderer OpenGL che DirectX che lo aiuta a essere multipiattaforma, ma la chiave è SDL . L'open source Simple Direct Media Library è utilizzato da un team all'interno di Valve, il cui compito è quasi esclusivamente quello di utilizzare i prodotti popolari di Valve su più piattaforme. SDL consente a Valve di concentrarsi meno sulla scrittura di codice ridondante che funziona qui, là e ovunque e si concentra invece sulla correzione di ciò che deve essere modificato per consentire alla build di funzionare sulla piattaforma X, Y e Z e lasciare che SDL si prenda cura di il resto.

SDL consente ciò creando una semplice interfaccia che funzioni per ogni piattaforma (bene non tutte le piattaforme, ma quelle che contano) quando si tratta di cose come gestione delle finestre, gestione del contesto, gestione degli eventi, ecc. Senza SDL si dovrebbe Devo scrivere un codice che faccia una finestra per Windows, OSX e Linux solo per far funzionare la gestione di base delle finestre su piattaforme diverse. In SDL, chiamate tre funzioni e avete una finestra. Vedi il motivo per cui le persone lo usano ora? SDL è al centro della maggior parte dei giochi di Valve oggi perché stanno iniziando a pensare a multipiattaforma sin dall'inizio.

Ecco un buon articolo sul supporto Linux e sul team che lo rende possibile a Valve .

    
risposta data 18.11.2013 - 23:32
fonte
1

Non sto parlando specificamente di Dota2 ma della maggior parte dei giochi multipiattaforma in generale.

Di solito gli sviluppatori creano / usano un mezzo erano chiamati GameEngine. Solitamente si tratta di una libreria di grandi dimensioni contenente strumenti per ogni genere di attività, come la gestione fisica dei giochi, il caricamento e il rendering di oggetti grafici, il caricamento e l'esecuzione di script, la gestione di materiale correlato alla rete e così via ...

Quella cosa di GameEngine può anche fornire supporto per questo tipo di cose su più piattaforme. Fornisce agli sviluppatori un'interfaccia unificata, pur avendo implementazioni diverse su piattaforme diverse. La stessa cosa accade quasi ogni volta che vedi un'applicazione cross platform. Anche C # stesso che hai menzionato sta facendo la stessa cosa sotto il cofano; sta fornendo un'esperienza di sviluppo unificata su tutte le piattaforme, mentre gestiamo le differenze specifiche della piattaforma sotto il cofano.

In caso di valvola (Dota2 e altri giochi), GameEngine si chiama "Source Engine". mentre qualsiasi cosa costruita su Source Engine è indipendente dalla piattaforma, il motore stesso ha implementazioni differenti per diversi sistemi operativi. Ecco un esempio: il motore potrebbe avere una funzione per disegnare una sfera. In Windows questa routine è scritta usando DirectX mentre in Linux e Mac sta usando OpenGL.

Significa che gli sviluppatori di livello più alto, inclusi quelli che stanno implementando la logica di gioco e praticamente tutto in un gioco, non noteranno nemmeno i cambiamenti della piattaforma, ma nel suo codice di livello base Dota2 (e praticamente qualsiasi altro gioco) viene scritto una volta per piattaforma.

    
risposta data 18.11.2013 - 23:44
fonte

Leggi altre domande sui tag