Quanto tempo e que tipo de complexidade estaria envolvido em Chris Sawyer escrevendo a maior parte do magnata da montanha-russa na montadora?

14

A partir desta pergunta , eu tenho outra pergunta sobre ...
Quanto tempo e que tipo de complexidade estaria envolvido em Chris Sawyer escrevendo a maior parte do magnata da montanha russa em assembler?

Para especificar e detalhar esta questão, estou interessado;

  1. Aproximadamente quantas horas-homem (adivinhe) você estima que Chris levaria o jogo sozinho? Ou, alternativamente, forneça uma porcentagem aproximada da proporção de horas de codificação do montador, escrevendo a coisa toda em C / C ++.

  2. Os programadores que conhecem o assembler consideram isso uma tarefa excessivamente complexa para uma abstração de linguagem de baixo nível? Além dos benefícios de desempenho, essa é apenas uma habilidade natural esquisita que Chris tem, ou um conjunto de habilidades digno de aprender nessa medida? Estou interessado se as pessoas pensam que a complexidade / desempenho vale a pena aprender bem o assembler (para escrever) ou apenas "vale a pena" se você tiver muitas habilidades naturalmente desenvolvidas em assembler (presumivelmente por trabalhar com hardware / drivers de hardware / eletrônicos / etc).

Tipo anônimo
fonte
1
Ele poderia começar escrevendo-o em C e depois alterar partes para montador, conforme necessário para o desempenho?
Jon Onstott
1
Ha, ha, ha, isso é como uma pergunta de alguém que está lendo meus comentários antigos.
Mark C

Respostas:

12

Da leitura de sua biografia bruta , parece dois anos (do início de 1997 ao final de 1998). Dado que ele parece ser uma pessoa de “um projeto de cada vez” e o conjunto de ferramentas e o cronograma não são bons para o 'desenvolvimento da equipe', eu assumiria 24 programadores-meses seguidos.

Naquele momento, ele era um programador profissional de jogos trabalhando em montagem desde 1983, então eu não compararia "dois anos de Chris" a "dois anos de mim" de trabalho.

Dado que a maioria dos jogos profissionais leva cerca de 25 anos para o desenvolvimento de uma equipe, os anos de duas pessoas para um jogo líder do setor são uma conquista incrível, dando credibilidade aos dizeres:

Então, nesse caso, quanto mais rápido o Rollercoaster Tycoon seria gravado se Chris tivesse usado C ou Java ou Javascript ou ...? Provavelmente, não teria importado além do fato de que ele poderia ter sido um pouco mais lento usando uma linguagem de nível superior com a qual ele não tinha 14 anos de experiência ...

Jay Beavers
fonte
grandes pontos, pensei que poderia ser o caso.
Tipo anônimo
4

Se você pensa em C como pouco mais do que um montador de "alto nível", e assumimos que Chris não fez otimizações malucas para seu código de montagem em todas as rotinas, então eu imagino em termos de% de tempo a mais, então pode não ser muito mais para um programador de montagem qualificado.

A montagem fica complicada quando você está realizando todas essas otimizações malucas (operações de vetorização, fazendo uso de conjuntos de instruções especiais (SSE, etc), ajustes de bits etc.) que você simplesmente não pode fazer com C. Se estiver fazendo essas coisas, então, o tempo está realmente no loop "mexer neste bit, montar, medir ... mexer neste bit, montar, medir ..." e não na codificação real. Com um bom montador de macros e um programador habilidoso, escrever um assembly não é um grande passo para escrever código C.

Ainda assim, eu não teria sido capaz de fazê-lo! Estremeço ao pensar em tentar inicializar o DirectX diretamente na montagem! ( Edit: Wikipedia me diz que ele escreveu algumas partes em C para "interagir com o sistema operacional Windows", então eu acho que ele não estava inicializando o DirectX na montagem então ... ufa!)

Dean Harding
fonte
Sim, foi o que eu não consegui entender inicialmente. Mas então eu li um pouco sobre o uso do C para DirectX. Obrigado pela informação sobre otimizações que é muito interessante.
Tipo anônimo
3

Outra pessoa conhecida por escrever muitos programas Windows em assembler é Steve Gibson, autor de SpinRite, ShieldsUp! e outros utilitários. Ele discute seu amor pela linguagem assembly aqui .

Randy Hyde (a quem eu conhecia quando escrevíamos o código de montagem 6502 para o Apple II) tem um novo livro on-line chamado Windows Programming in Assembly Language . Ele é um grande defensor do uso de macros sofisticadas (incluindo construções em loop) para tornar a programação de montagem mais parecida com o uso de uma linguagem de alto nível. Sawyer provavelmente usou uma abordagem semelhante para ser mais produtivo.

tcrosley
fonte