-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcap-comparacao_com_tecnologias_atuais.tex
608 lines (530 loc) · 33 KB
/
cap-comparacao_com_tecnologias_atuais.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
\section[Comparação com outras tecnologias para jogos
casuais]{COMPARAÇÃO COM OUTRAS TECNOLOGIAS PARA JOGOS CASUAIS}
Com base nas funcionalidades apresentadas sobre as tecnologias que
fazem parte da especificação do HTML5, será feita uma comparação com
as principais ferramentas utilizadas para o desenvolvimento de jogos
na data da escrita desse trabalho. Para fim de avaliação serão
utilizados os quesitos performance, portabilidade, fragmentação e recursos para
desenvolvimento.
\subsection{Outras tecnologias utilizadas atualmente}
Com exceção do HTML5, as ferramentas atuais para desenvolvimento de jogos para a internet se
utilizam de extensões que são instaladas nativamente no computador,
essas extensões interpretam o código gerado pelo desenvolvedor e
executam o mesmo nativamente no dispositivo para obter um melhor
acesso ao hardware. A utilização de extensões de terceiros para a
executação de um jogo possui várias vantagens e desvantagens, e esse
capítulo visa mostrar quais são e compará-las com o que o HTML provê.
Essas tecnologias mais utilizadas para desenvolvimento de jogos são
Java, Flash e Unity3D.
\subsubsection{Java}
Java foi uma das primeiras tecnologias portada para os navegadores que podia proporcionar um
ambiente favorável ao desenvolvimento de games. Para que essa funcionalidade ficasse disponível para os
navegadores, a plataforma Java disponibilizou um segundo tipo de
aplicação chamado \textit{applet}.
Os applets são programas Java que podem ser inseridos em uma página de
internet. \cite{boese2009introduction}. Esses programas são inseridos nas
páginas utilizando a tag \textit{<applet>} no documento HTML passando
o arquivo Java em um dos seus atributos. Com isso o programa Java é
baixado do servidor e executado na maquina do cliente pelo navegador,
que utiliza um ambiente de \textit{sandbox}, assim não permitindo
ao programa ter total acesso dentro da maquina do usuário.
Durante um bom período de tempo a plataforma Java foi a única tecnologia
aceitável para se colocar um jogo disponível via internet, até que
novas tecnologias começaram a surgir e a plataforma Java perdeu um pouco do seu
espaço como tecnologia para desenvolvimento de jogos para internet,
apesar dele ainda ser utilizado por alguns, principalmente no meio
acadêmico.
\subsubsection{Flash}
Flash é um produto criado pela Macromedia em 1996, com a finalidade de
enriquecer o conteúdo da internet, trazendo funcionalidades que não
era possível disponibilizar apenas com HTML na época de sua criação.
Com Flash, foi possível a criação de diversos sites com animações, e
foi o que originou as home pages animadas com um "Clique para entrar".
Em 2005 a Macromedia foi comprada pela Adobe e vem sendo mantido por
ela desde então, juntamente com todo o pacote de multimidia da
Macromedia.
A facilidade em gerar animações com o Flash trouxe a idéia de
utilizá-lo para a criação de jogos que funcionassem diretamente no
navegador, tendo em vista que \textit{plugin} do Flash exporta um binário para ser
executado utilizando o Flash player instalado pelo usuário, a
performance pode ser bem melhor, pois o flash player tem acesso ao
hardware do dispositivo no qual ele está instalado.
Atualmente, Flash é a tecnologia mais utilizada para desenvolvimento de jogos para a
internet. \cite{website:adobeflashleading}. Essa ferramenta possui muitas
bibliotecas feitas para facilitar o desenvolvimento de jogos, e por
possuir uma interface simples tanto para o designer como para o desenvolvedor,
ela vem mantendo seu legado ao longo dos anos.
Mais de 99 por cento dos computadores pessoais possuem o Flash Player
instalado. \cite{website:adobeflashpenetration}. E esse é um dos grandes
motivos do sucesso do Flash, pois quebra um dos grandes problemas de
se desenvolver um jogo que necessita de dependencias externas para ser
executado.
\subsubsection{Unity3D}
Conforme \citeonline{blackman2011beginning}, a \textit{engine} Unity3D provê
um bom ponto de entrada para o mundo do desenvolvimento de jogos, pois
ela possui um bom balanceamento entre funcionalidades e um bom preço.
Unity3D é uma \textit{engine} relativamente nova para desenvolvimento de jogos e está
ganhando muito espaço no mercado devido a sua facilidade de uso e
aumento na popularidade dos seus \textit{plugins}. Utilizando-a é possível
desenvolver apenas um jogo e exportá-lo para ser executado em
diferentes plataformas, entre elas o navegador, que utiliza um
\textit{plugin} para executá-lo, e a quantidade de instalações do \textit{plugin} já
ultrapassa 35 milhões. \cite{blackman2011beginning}.
A \textit{engine} Unity3D é o principal produto da empresa
Unity. \cite{website:unity3dcompany}. Esse produto é uma \textit{engine}
que possui como foco facilitar o desenvolvimento de jogos no
geral, tirando do desenvolvedor a preocupação de criar um jogo para
diversas plataformas, assim deixando-o mais livre para pensar nas
funcionalidades do seu próprio jogo e também prover um ambiente
simples para esse desenvolvimento, dando-lhe ferramentas gráficas que
facilitam a criação dos personagens e mapas do jogo, tanto para jogos
3D, que são o foco principal da \textit{engine}, como para jogos 2D
que podem se utilizar do 3D para a criação de um jogo que faça uma
simulação simples de 2D,
É possível exportar jogos para rodar diretamente no navegador, mas
esse não é o único caminho que a \textit{engine} Unity3D fornece, é possível exportar
para Windows, Mac e outros dispositivos que já possuem versões do
Unity3D instaladas.
Apesar de possuir uma versão paga com muitas vantagens e novas
funcionalidades muito úteis para empresas de jogos, essa engine possui
também uma versão gratuita que permite ao desenvolvedor criar,
aprender e até mesmo vender os seus jogos sem precisar pagar nada, e
isso tem sido um dos grandes atrativos de novos desenvolvedores.
Essa engine vem crescendo bastante desde seu lançamento em 2009 e vem ganhando
cada vez mais novas pessoas na comunidade, que já possui mais de
400.000 (em abril de 2011 conforme
\citeonline{blackman2011beginning}), e vem disputando a fama de melhor plataforma
para desenvolvimento de jogos para o navegador.
O site oficial do Unity3D possui alguns jogos que foram feitos para
navegador, detalhes podem ser vistos em \citeonline{website:unity3dwebgames}.
Para que os jogos sejam executados o jogador precisa
necessariamente instalar o Unity web player para que o jogo seja executado.
Tal player está disponível para download no site da empresa. \cite{website:unity3dwebplayer}.
\subsection{Performance}
%usar isso http://www.timo-ernst.net/2010/09/a-scientific-performance-comparison-flexflash-vs-javafx-vs-silverlight-vs-javascript/
%http://www.mikechambers.com/blog/2010/03/01/relative-performance-of-rich-media-content-across-browsers-and-operating-systems/
%http://www.readwriteweb.com/archives/does_html5_really_beat_flash_surprising_results_of_new_tests.php
Performance é um assunto muito discutido no desenvolvimento de jogos
pois eles consomem muito processamento, memória e IO do dispositivo em que estão
executando, pois estão, entre outras coisas, em constante execução, fazendo
cálculos diversos para situar o jogador dentro do jogo por exemplo.
Entre esses cálculos, dependendo do jogo, estão os cálculos de física dos
objetos da cena e do próprio jogador, transformação de imagens para
dar impressão de movimento ou sombra e outras coisas que exigem alto
processamento em um curto período de tempo.
As tecnologias que exigem a instalação de um software de terceiros
(Java, Unity3D e Flash) tendem a possuir uma performance melhor em alguns casos
e pior em outros no momento de escrita desse trabalho. De acordo com \citeonline{performanceria},
o navegador teoricamente não deveria influenciar a performance de uma aplicação
feita utilizando uma tecnologia que exige um \textit{plugin} externo, mas isso acontece
em alguns casos, fazendo com que a aplicação perca um pouco em performance.
Um dos possíveis motivos do ganho de performance das tecnologias que
utilizam \textit{plugins} externos é a otimização da plataforma para utilização em um determinado
dispositivo, assim ganhando várias vantagens como um processo separado no
sistema, apenas executando um jogo que foi previamente "compilado"
especialmente para essa tecnologia.
O HTML5 juntamente com Javascript perde um pouco em performance, pois
o sistema operacional vê apenas um navegador como processo, e esse
navegador vai fazer a interface entre o jogo e o sistema operacional.
O navegador não é uma plataforma otimizada para jogos (como é o caso
de alguns \textit{plugins}, que possuem apenas essa finalidade, ou são bem
direcionados para o tal), apesar de estar em constante evolução e
desenvolvimento para interpretar Javascript de uma maneira mais veloz,
a cada nova versão.
Baseando-se nos testes de \citeonline{performanceria}, é possível notar que
cada tecnologia possui pontos fortes e fracos em termos de performance, sendo que
em muitos casos o Javascript consegue vantagem sobre as outras tecnologias.
\begin{figure}[H]
\centering
\includegraphics[height=\imgheight,width=\imgwidth]{chart-performance-timo}
\footnotesize\hspace{8\baselineskip}
Gráfico 1: Teste de performance 2D \\
Fonte: \cite{performanceria}
\label{img:chart-performance-timo}
\end{figure}
No Gráfico 1 criado por \citeonline{performanceria} é
possível ver a diferença de performance entre diferentes tecnologias para a
renderização de gráficos 2D.
Levando em consideração a tecnologia que possui melhor performance,
ou seja o Adobe Flash, podemos ver que o HTML5 ainda perde bastante em performance,
mas isso vem melhorando com o desenvolvimento dos navegadores e a melhoria nas
\textit{engines} de Javascript implementadas por eles.
Tendo em vista que o Adobe Flash é o único que possui a quantidade de FPS
(\textit{frames} por segundo) padrão para o desenvolvimento de jogos,
ele será utilizado como comparação com o HTML5.
O teste foi executado neste trabalho para mostrar o quanto a performance do Javascript evoluiu nesse curto
período de tempo desde o desenvolvimento da pesquisa feita por
\citeonline{performanceria}. O teste foi feito utilizando um
computador Macbook Pro, Processador i7, 4GB de memória RAM utilizando o sistema
operacional Mac OSX Lion, executando diversos navegadores.
\begin{figure}[H]
\centering
\includegraphics[height=\imgheight,width=\imgwidth]{chart-performance-pothix}
\footnotesize\hspace{8\baselineskip}
Gráfico 2: Teste que mostra a performance de um exemplo 2D em Javascript executado na data de escrita desse trabalho
\label{img:chart-performance-pothix}
\end{figure}
É possível notar no Gráfico 2 que o
Javascript evoluiu mais de 50\% no melhor caso
em relação ao Gráfico 1 e se seguir no mesmo ritmo de evolução
em breve chegará no mesmo patamar do Adobe Flash e será possível obter performances cada
vez melhores mesmo sem utilizar aceleração de hardware.
\begin{figure}[H]
\centering
\includegraphics[height=\imgheight,width=\imgwidth]{timo-runlength-benchmark-macos}
\footnotesize\hspace{8\baselineskip}
Gráfico 3: Teste de performance para redução de tamanho de string \\
Fonte: \cite{performanceria}
\label{img:timo-runlength-benchmark-macos}
\end{figure}
Ainda utilizando os testes feitos por \citeonline{performanceria},
pode-se notar no Gráfico 3 um
caso em que o Javascript consegue vantagem sobre as tecnologias
concorrentes. O teste executado se refere a redução de tamanho de um
determinado texto.
Alem de 2D também é possível utilizar aceleração de hardware para conseguir um quantidade
de \textit{frames} por segundo competitiva entre o Adobe Flash e o
Javascript em algumas plataformas. Para o caso do Javascript é necessário o uso do WebGL para
utilizar essa aceleração. De acordo com os testes feitos por
\citeonline{website:webglvsstage3d}, os valores são bem parecidos entre várias
plataformas, novamente dependendo do suporte do hardware para a
utilização da aceleração.
Os testes criados por \citeonline{website:webglvsstage3d} foram executados
neste trabalho utilizando um Macbook Pro, Processador i7, 4GB de memória RAM com o sistema operacional
Mac OSX Lion e os resultados obtidos podem ser vistos nas Figuras 10
e 11.
\begin{figure}[H]
\centering
\includegraphics[height=\imgheight,width=\imgwidth]{stage3d-flash-60fps}
\footnotesize\hspace{8\baselineskip}
Figura 10: Demo com mais de 100 cubos semi-transparentes sendo
executado a 60 fps \\
Fonte: \cite{website:stage3dperformance}
\label{img:stage3d-flash-60fps}
\end{figure}
A Figura 10 acima mostra a execução da
versão Adobe Flash do experimento, sendo executado entre 55 e 60 fps.
No caso do hardware que é utilizado, o Flash está utilizando OpenGL
para a renderização e consegue uma boa taxa de \textit{frames} por
segundo.
Já a Figura 11 abaixo mostra a execução da
versão WebGL do experimento, também sendo executado a 60 fps no mesmo
hardware. Há bastante divergencia nos testes pois cada pessoa que
executa o teste possui um hardware diferente e pode chegar a
resultados diferentes dependendo do tipo de suporte que o hardware
possui, mas o teste executado para este trabalho mostra que em alguns
hardwares a execução é bem parecida para as duas tecnologias.
\begin{figure}[H]
\centering
\includegraphics[height=\imgheight,width=\imgwidth]{webgl-javascript-60fps}
\footnotesize\hspace{8\baselineskip}
Figura 11: Demo com mais de 100 cubos semi-transparentes
também sendo executado com WebGL e Javascript a 60 fps \\
Fonte: \cite{website:webglperformance}
\label{img:webgl-javascript-60fps}
\end{figure}
O estado dos navegadores na data de escrita desse
trabalho suporta a execução de jogos casuais simples, que exigem
um processamento aceitável do dispositivo, ou seja, jogos em duas
dimensões, com cálculos de física básica. O jogo pode ser otimizado
para evitar gasto desnecessário de processamento, e menor utilização
de memória, com isso há uma grande possibilidade de que o mesmo
funcione sem grandes problemas e com uma performance aceitável em dispositivos
que possuem menor poder de processamento, como os celulares por exemplo.
Alguns computadores já possuem suporte para tecnologias como WebGL e
vários navegadores como Chrome, Firefox, Safari e novas versões do
Opera, já possuem uma implementação do mesmo, mas a performance ainda
varia dependendo do suporte dos \textit{drivers} e do navegador em
questão.
\subsection{Portabilidade}
Sempre que um jogo casual é desenvolvido, tem-se em mente que ele deve
abranger a maior quantidade de dispositivos possível, para assim
atingir um maior publico, e ser utilizado onde o jogador estiver (como
é o caso dos dispositivos móveis). Quando a tecnologia para o
desenvolvimento do jogo é escolhida esse quesito tem que ser
ponderado, pois ele vai ditar em qual tipo de plataforma o jogo em
questão será executado, pois dependendo da plataforma escolhida o jogo ficará preso
a um determinado fabricante ou dispositivo.
No caso de jogos desenvolvidos para a web, esse problema acontece com as
tecnologias que utilizam \textit{plugins} que devem ser instalados na
plataforma final, pois o desenvolvedor vai depender de uma empresa
terceira (nesse caso, o desenvolvedor do \textit{plugin} para essa tecnologia),
que na maioria dos casos utiliza código proprietário, impedindo que o
próprio desenvolvedor desenvolva o \textit{plugin} para essa outra plataforma,
e o jogo desenvolvido se torna dependente das plataformas em que o
\textit{plugin}
funciona.
Um grande exemplo de problema pode ser notado com o Adobe Flash, que possui
\textit{plugin} para varios navegadores e funciona muito bem em sistemas Windows,
mas tem uma qualidade não muito boa em sistemas derivados de Unix como
o Mac OS ou o Linux. Além desse baixa qualidade nos computadores, o
Flash não possui uma versão para os celulares da Apple, assim tirando
do desenvolvedor que escolher essa plataforma uma valiosa quantia de
jogadores que poderiam pagar pelo produto. O Flash possui uma versão
para celulares com o sistema operacional Android, mas a qualidade
também não é muito boa não trazendo muito sucesso para a plataforma em
dispositivos móveis.
No caso de jogos feitos com HTML5 e Javascript, a única dependência é
o navegador, que todos os dispositivos que acessam a internet possuem,
e assim como \citeonline{davison2005killer} mostra em seu livro com
Java, tudo depende da plataforma em que uma determinada aplicação está
sendo executada, no caso do Java o jogo vai ter mais performance ou
mais recursos dependendo da implementação do Java para aquela
plataforma. O mesmo acontece com os navegadores, o jogo vai possuir
uma melhor performance ou mais funcionalidades dependendo da plataforma que
o navegador está sendo executado. Grande parte dos dispositivos que
possuem um poder de processamento considerável também possuem suporte
as novas funcionalidades do HTML5, criando a mistura adequada para a
execução de jogos casuais.
Alguns dispositivos que atualmente possuem um navegador com suporte às
funcionalidades que o HTML5 especifica são celulares com o sistema
operacional Android e celulares da Apple com sistema operacional iOS,
também desenvolvido pela Apple.
Ambos os celulares possuem um navegador capaz de rodar jogos feitos
com Canvas com uma performance razoável dependendo do hardware do
aparelho. No caso de computadores de mesa e notebooks, os navegadores
podem ser instalados gratuitamente e muitas vezes apenas a atualização
do navegador que vem por padrão no sistema operacional basta para que
um jogo seja executado sem maiores problemas.
\subsection{Fragmentação}
Quando um jogo é desenvolvido para ser executado em diversas plataformas
(conhecidos como jogos multiplataforma) é muito provável que o
desenvolvedor terá que lidar com um problema de fragmentação, pois
para cada tipo de dispositivo o jogo terá que ser customizado de uma
maneira diferente dependendo da tecnologia que foi escolhida para o
desenvolvimento do mesmo, essas diferenças entre funcionalidades
disponíveis nos dispositivos com HTML5 é mostrada em vários pontos por \citeonline{pilgrim2010html5}.
Os desenvolvedores que usam as tecnologias que dependem de \textit{plugins} para executar o
jogo não sofrem muito com a fragmentação, pois o \textit{plugin} gerencia
grande parte das diferenças entre os dispositivos, permitindo ao
desenvolvedor se preocupar apenas com a lógica do jogo. Dependendo do
\textit{plugin} utilizado, alguns poucos problemas podem chegar ao
desenvolvedor, como o tamanho de tela, por exemplo, pois ao jogar em
um dispositivo com uma tela menor (um celular, por exemplo), o jogo
deve se adaptar ao novo formato, e dependendo das características do jogo, o
programador terá que lidar com as diferenças e adaptar o jogo aos
vários tamanhos de tela.
Ao utilizar HTML5 o navegador se torna a plataforma de execução do
jogo, portanto ele funcionará em todos os dispositivos que
suportarem o mesmo, com a vantagem de já estar instalado previamente
no dispositivo em questão.
Independente do navegador já estar instalado no sistema, o
desenvolvedor do jogo terá os mesmos problemas dos \textit{plugins}, ou seja,
também terá de lidar com as diferenças no tamanhos das telas dos
dispositivos móveis.
A comunidade de desenvolvimento vem se preparando para esse problema e
já começam a ser discutidas possíveis soluções para esse problema.
Conforme \citeonline{html5screensize}, uma das possíveis soluções seria a
utilização do sistema MVC (modelo, visualização e controlador), onde é
possível separar a apresentação do conteúdo em várias fases, asssim
tratando a fase de visualização de forma diferente dependendo do tipo
de dispositivo em que a aplicação for executada.
Uma das desvantagens do HTML5 sobre as outras tecnologias é a versão
dos navegadores que pode ser diferente em cada dispositivo, assim
aumentando o problema de fragmentação. Esse problema é conhecido pelos
desenvolvedores web, e não é um grande problema quando definido um
requisito mínimo para se utilizar determinada aplicação. Um exemplo
simples desse problema é o jogo demo Quake III, que por ter seu código
aberto está sendo portado para rodar com WebGL diretamente no navegador.
\cite{website:webglquake3}. Quando esse jogo é acessado por um
dispositivo que não possui suporte a WebGL o jogo não irá funcionar,
pois ele depende dessa plataforma para sua execução, portanto, quando
um jogo precisa de uma determinada funcionalidade para funcionar, e
essa funcionalidade ainda não é suportada por todos os navegadores
mais conhecidos, o usuário precisa ser informado do motivo dele não
conseguir executar o jogo ao acessá-lo. O mesmo acontece com as
tecnologias que necessitam de \textit{plugins}, pois se o \textit{plugin} não estiver
instalado no dispositivo do jogador o jogo não será executado.
O escopo desse trabalho são jogos casuais, assim excluiremos jogos
maiores como é o caso do exemplo acima, portanto para a maioria dos
casos é possível ter uma segunda alternativa para que o jogo seja
executado, mesmo que para isso a performance seja inferior.
\subsection{Supote e recursos facilitadores para desenvolvimento}
Cada tecnologia disponibiliza diferentes ferramentas para facilitar o
desenvolvimento em sua plataforma, para isso algumas utilizam meios
gráficos, como ferramentas WYSIWYG que facilitam o posicionamento de
objetos e outras apenas disponibilizam suas bibliotecas como um
framework para facilitar tarefas de código.
A Adobe possui o produto Adobe Flash professional. \cite{website:adobeflash}.
Esse produto possibilita ao desenvolvedor um acesso rápido às ferramentas de cores
e desenhos, e facilita muito o posicionamento e a transição entre o
código e a amostragem do jogo, integrando os dois lados em uma única
plataforma, o que facilita o trabalho para o desenvolvedor
inexperiente.
O Unity editor é o editor da engine Unity3D que possibilita toda a
criação do jogo utilizando a plataforma, permitindo, por exemplo, a
qualquer momento clicar no botão de iniciar e testar como está a sua
criação, emulando a plataforma que você deseja publicar. \cite{website:unity3d}.
Esse editor possui a facilidade de arrastar objetos e programá-los
facilmente, o que é totalmente necessário para um jogo 3D (que e o
foco do Unity3D).
Java não possui uma ferramenta diferente para o desenvolvimento de
jogos, apenas segue o mesmo padrão de desenvolvimento convencional
Java e utiliza as bibliotecas de applet para preparar o jogo para
funcionar na web, ou seja, com uma das conhecidas IDEs (Eclipse por
exemplo) você consegue desenvolver um jogo casual em Java.
O HTML5 ainda não possui muitos recursos gráficos para facilitar no
desenvolvimento de jogos, mas muito já está sendo desenvolvido. Um dos
exemplos disso é a própria Adobe (criadora do Flash), que está
desenvolvendo uma ferramenta parecida com o Flash, que irá gerar
HTML5, Javascript e CSS para fazer animações, essa ferramenta é o
Adobe Edge, que já tem um preview disponível
gratuitamente para os desenvolvedores. \cite{website:adobeedge}.
Outras empresas também estão trabalhando para oferecer engines para
desenvolvimento de jogos para o navegador, como é o caso da Rocket
Pack \cite{website:rocketpack}, que está desenvolvendo a Rocket Engine,
que ainda não suporta Canvas, mas já
exporta HTML5 utilizando elementos DOM para diagramar o conteúdo do
jogo no navegador. \cite{website:rocketengine}.
Há empresas desenvolvendo ferramentas pagas que ajudam no
desenvolvimento de um jogo em HTML5. Uma dessas ferramentas, ou
frameworks, é a \citeonline{website:impactjs}. Esse \textit{framework}
provê um conjunto de ferramentas e utilitários para facilitar a
criação de um jogo, incluindo ferramentas para avaliar a performance,
construtores de níveis para jogos 2D, versão para celulares,
integração com engines que simulam física e outras coisas que
realmente facilitam a tarefa de desenvolver um jogo casual.
Além das ferramentas e comunidades, como é comum entre as tecnologias
mencionadas nesse trabalho, o HTML5 possui também algumas empresas que
apoiam e contribuem para seu crescimento. Um exemplo de empresa que
está apoiando com material é o Facebook, que possui uma página
dedicada aos desenvolvedores que pretendem criar aplicativos ou jogos
utilizando HTML5 para a rede social. \cite{website:facebookhtml5}.
Outras grandes empresas publicam materiais ou estão por trás do
desenvolvimento do HTML5, como é o cado da Google e da Apple. A Google
possui vários meios para divulgar informações sobre o HTML5, o mais
famoso deles é provavelmente o \citeonline{website:html5rocks} que
sempre divulga novidades sobre o que pode ser feito com as novas
tecnologias da especificação. Além dos meios de comunicação de
conteúdo, tanto a Google como a Apple contribuem com o desenvolvimento
da especificação do HTML5, como é possível ver em
\citeonline{website:w3cgoogle} e \citeonline{website:w3capple} na
seção de editores.
\subsection{Jogos criados}
O Adobe Flash possui a maior quantidade de jogos desenvolvidos para a
internet, sendo que os jogos mais conhecidos pelos usuários da
internet são feitos com o Adobe Flash. Um exemplo de jogo feito com
essa tecnologia é o Farmville. \cite{website:farmville}. Ele é um jogo
feito para a rede social Facebook, sendo ele um dos jogos mais
conhecidos da rede social e possui uma grande quantidade de
jogadores espalhados pelo mundo.
Os applets Java foram bastante utilizados no início do desenvolvimento
de jogos para a internet, mas perderam
bastante espaço depois do surgimento do Adobe Flash e atualmente
são bem pouco utilizados para o desenvolvimento de
jogos, sendo mais utilizado para trabalhos acadêmicos.
Como os applets Java tiveram maior sucesso antes da época das redes
sociais, a maioria dos seus jogos são simples e apenas para um
jogador. Um exemplo desse tipo de jogo é o 3D-BOX,
que é um jogo simples de ação e lógica. \cite{website:3dbox}.
Outros jogos desenvolvidos com applets Java e que seguem o mesmo estilo do 3D-BOX
podem ser encontrados no site Freeware Java. \cite{website:freewarejava}.
O Unity é uma tecnologia nova mas está ficando cada vez mais popular e alguns de seus jogos
possuem versão para a web, como é o caso do jogo Battlestar Galactica
Online. \cite{website:unitybattlestargalactica}. Esse jogo reflete a
história da série Battlestar Galactica e possui uma grande quantidade
de jogadores que podem utilizar a rede social Facebook para desafiar
os amigos, o que ajuda a trazer cada vez mais jogadores.
Uma lista de jogos desenvolvidos para a web com Unity pode ser visto
no site oficial da \textit{engine}. \cite{website:unity3dwebgames}.
O HTML5 está a pouco tempo na área de desenvolvimento de jogos, mas já
possui alguns jogos interessantes, um exemplo é o jogo
WarAnimals. \cite{website:waranimals}. Esse jogo foi criado para a rede social
Facebook e já possui uma boa quantidade de jogadores. Alguns outros
jogos simples que já foram mencionados anteriormente estão ganhando versões em HTML5
como é o caso do \citeonline{website:angrybirds} e do
\citeonline{website:emberwind}.
\subsection{Vantagens e desvantagens do HTML5}
Uma das vantagens claras do HTML5 que em outras tecnologias atrapalha muito os desenvolvedores de
jogos atualmente é a portabilidade, pois os desenvolvedores muitas
vezes precisam traduzir seu código para uma grande quantidade de
plataformas para poder atingir uma quantidade maior de jogadores. O
problema com esse modelo é a fragmentação que isso gera, pois o mesmo
código estará dividido entre várias plataformas, com várias linguagens
de programação e provavelmente várias equipes de trabalho para manter
o jogo funcionando e corrigir cada problema que apareça. Quando um
problema é detectado na parte padrão do jogo todas as equipes devem
ser informadas e todos devem fazer determinada alteração e publicar o
jogo novamente para a plataforma em que o jogo está executando.
Utilizando HTML5 esse problema é resolvido com facilidade, pois caso
um problema seja encontrado na parte padrão do jogo, ele vai ser
corrigido no jogo principal e enviado para o ambiente de produção, com
isso todos os jogadores terão o jogo atualizado assim que acessarem o
jogo em um navegador com conexão com a internet. Isso facilita muito a
distribuição dos jogos, apenas cabendo ao desenvolvedor tratar os
tamanhos de telas e dispositivos de entrada no seu jogo.
A grande maioria dos jogadores possuem acesso a internet e geralmente
estão conectados em suas redes sociais ou fazendo tarefas corriqueiras
tanto em casa como em lugares monótonos como uma fila de banco por
exemplo. Se o jogo foi desenvolvido com HTML5, o jogador muito
provavelmente vai ter esse jogo disponível onde ele estiver, sem
depender de uma determinada plataforma (como um computador de mesa por
exemplo) para que continue seu jogo ou pelo menos o distraia num
momento monótono que precisa ser enfrentado. Com o crescimento do uso
de celulares e tablets o uso de tecnologias que façam o produto final
ficar disponível para essas plataformas também se faz cada vez mais
necessária para conseguir um publico maior.
Uma outra vantagem é dar ao jogador a liberdade de utilizar o
navegador que mais lhe agrada para poder rodar o jogo desenvolvido,
deixando apenas informado para o jogador quais são as funcionalidades
necessárias para que o jogo seja executado, e algunas recomendações
sobre navegadores. Apesar do jogo provavelmente funcionar bem sobre o
navegador padrão do usuário (se ele estiver devidamente atualizado
para a ultima versão disponível), alguns jogadores podem não gostar de
utilizá-lo, nesse caso ele pode simplesmente utilizar
o seu navegador preferido, que se estiver em sua ultima
versão e possuir suporte as funcionalidades mais novas do HTML5 será
capaz de executar o jogo sem maiores problemas. Outra vantagem disso é
dar a oportunidade do jogador testar qual o navegador que possui uma
maior performance na plataforma que ele está utilizando, dando ao
jogador uma grande gama de opções para que ele possa escolher a opção
que mais lhe convém.
A vantagem de se ter apenas um código para todas as plataformas é
considerada desvantagem por alguns desenvolvedores, pois dessa maneira
muitas condições devem ser tratadas para que o jogo funcione bem em
todas as plataformas, e isso torna o código difícil de ser mantido
dependendo de como o desenvolvedor organizá-lo.
Esse mesmo problema acontece com desenvolvedores de aplicações para o
sistema operacional Android, que precisam tratar as diferentes
configurações de \textit{hardware} de cada dispositivo, suas
velocidades de processamento, tamanho de tela e etc. Alguns
desenvolvedores (como é o caso da Rovio, criadora do jogo Angry Birds)
decidiram fazer diversos jogos para diversos aparelhos para evitar
esse tipo de fragmentação.
Por ser uma tecnologia nova ainda não existem muitas ferramentas para
auxiliar o desenvolvedor no desenvolvimento de jogos, exigindo do
mesmo um maior contato com o código e a execução de algumas tarefas
manualmente. Um exemplo disso é a criação de sprites para um jogo 2D,
que precisa ser feita em um editor de imagens padrão e mapeada
manualmente para o código, para que seja possível saber em qual parte
da imagem está cada sprite do jogo.
Atualmente há algumas ferramentas que estão sendo criadas pelos
próprios desenvolvedores para facilitar essa tarefa, assim como as
outras que ainda fazem falta no HTML5, ou seja, é uma questão de tempo
para que essa tecnologia receba cada vez mais boas ferramentas para
facilitar esses trabalhos manuais.
Uma desvantagem que não pode ser controlada pelo desenvolvedor são as
atitudes do usuário com a atualização do navegador, sendo assim, caso
o usuário possua um navegador desatualizado o jogo provavelmente não
funcionará como deveria, e dependendo das funcionalidades que ele
necessita ele não chegará a ser executado. Para reduzir esse problema,
as empresas que desenvolvem os navegadores estão adotando uma forma
transparente de atualizações nos navegadores para que o usuário não
precise se preocupar em manter seu navegador atualizado todo o tempo,
deixando essa preocupação com as empresas que os desenvolvem.
A primeira empresa a utilizar o sistema de atualização automática do
navegador foi a Google, que automaticamente atualiza o Google Chrome
de seus usuários, assim deixando-os sempre com a ultima versão estável
do navegador. Essa configuração pode ser desabilitada para os casos em
que uma determinada versão precisa ser utilizada, mas para o caso
geral dos usuários domésticos essa é uma ótima funcionalidade, pois dá
ao desenvolvedor web uma maior gama de possibilidades para os usuários
desse navegador, podendo assumir que ele está utilizando a ultima
versão estável.
A Mozilla após ver o bom modelo de atualização do Google Chrome
decidiu também utilizá-lo no seu navegador, o Firefox. Os usuários
também começam a receber uma nova versão a cada quatro meses, e sempre
estarão utilizando as novas versões do navegador, além de fazer várias
campanhas para que as pessoas que ainda utilizam as versões antigas do navegador (que ainda
não possuía suporte a atualização automática) atualizem o mesmo para
se beneficiar dessa nova funcionalidade.