A distribuição LineAgeOS (não oficial) na sua versão 18.1 corresponde à versão 11 do Android. Atenção para a imagem ser compilada para uso em arquitetura ARM ou Raspberry Pi. O LineAgeOS possui poucos apps instalados e não possui o app do Google Play, necessário para baixar os apps da loja oficial da Google. Por este motivo, é necessário baixar o GApps compatível com a versão do Android adotada.
Passo 2: Download de GApps compatível
BitGapps
BiTGApps para Android R (Android 11) A versão R16 é compatível
NikGapps
pacote NikGapps vem com um módulo Assistente de Setup. Enquanto a distribuição Gapps pode ter alguns bugs, você pode pular este módulo, usando nikgapps.config ou gravar uma variante sem o Assistente de Setup, que pode funcionar.
Instalador do Google (APK)
Instala o Google Apps em dispositivos Android, como o Play Services e a Play Store. Você pode baixar manualmente os aplicativos da Google restantes da Play Store (loja do sistema operacional Android).
OpenGapps
Não possui, até o momento do post deste artigo, versão compatível com ARM e Android 11.
Quando liberar, recomenda-se o download da arquitetura ARM, Android 11 e versão “pico”.
Passo 3: Gravar a imagem no microSD
Utilizei um PC com Windows 10 para gravar, usando o Balena Etcher:
Passo 4: Gravar o GApps no pen drive
Para escrever este artigo, foi baixado o BitGApps. Após baixar, copiar o arquivo ZIP para o pen drive.
Passo 5: Reiniciar em modo Recovery
No primeiro boot do microSD no Raspberry Pi, são configuradas a data/hora, fuso horário e idioma. Em seguida, deve-se configurar em: app de Configuration > System > Gestures > Power menu > habilitar Advanced restart. Com isso, será possível reiniciar em modo Recovery.
Pressionar e manter pressionado a tecla F5 (botão de liga/desliga ou power button) até aparecer a tela abaixo:
Clicar em Recovery.
Passo 6: Instalar o GApps escolhido no passo 2
Após a leitura da mensagem inicial, “deslizar a barra para a direita para permitir modificações”:
Escolher “Mount” para disponibilizar as pastas de sistemas para o modo Recovery usar nos itens seguintes:
Selecionar todas as pastas e clicar em “Select Storage”:
Depois clicar em Install, inserir o Pen drive e escolhê-lo em “Select Storage”:
Selecionar o arquivo baixado no passo 2 e deslizar a barra novamente, para instalar:
Aguarde a instalação para poder reiniciar o seu Raspberry Pi com Android.
Passo 7: Google Play pronto para uso – Fim!
Você verá que o Google Play foi adicionado entre os aplicativos. Agora é proceder normalmente como em um celular com Android, para instalar todos os aplicativos compatíveis com Android disponíveis no Google Play Store. Basta baixar os apps gratuitos e instalar para usufruir de um Android que roda leve no Raspberry Pi 4. Se houver dúvidas, poste nos comentários!
Pode-se implementar a conexão criptografada em desenvolvimento por meio de Apache e Nginx, porém aqui vou usar o Stunnel – stunnel-5.48-5.el8.0.1.x86_64
HTTP over SSL
Criar uma chave privada e o certificado
A chave privada e o certificado serão autoassinados e gerados por meio do comando openssl.
A porta 8001 deve estar ativa e é usada pelo stunnel para obter resposta para a porta 8443
Resultado
Há implicações de segurança que impedem que as configurações acima sejam implementadas em produção, sendo as principais:
certificado autoassinado – não provê a segurança quanto ao servidor que está respondendo à conexão HTTPS ser realmente o servidor que se acredita estar conectando
TLS v 1 – existem versões TLS mais seguras
Não limitar ao uso de cifras seguras, somente
Após implementar o HTTPS ao site, o navegador Google Chrome acusa como site inseguro por, principalmente, estar usando certificado autoassinado.
Nginx, Apache, Stunnel, Django, Python, Google e Chrome – são marcas/ferramentas registradas
Após o tutorial de instalação do Django, vamos criar um “app” dentro do projeto “MeuProjeto” que servirá inicialmente páginas criadas a partir do template baseado em tema do Bootstrap 4 dentro do Django.
A ideia de usar um “app” é a reutilização de código em outros projetos. Ex. app de autenticação, usando Google OAuth 2.0.
O motivo de usar um “app” apenas para servir páginas é adquirir experiência com templates para, depois, usar em aplicações com finalidades.
O que é Bootstrap?
Bootstrap é um framework popular CSS (folha de estilos em cascata) para desenvolvimento de websites responsivos e para celular.
Consideração a respeito da arquitetura “MeuProjeto”
Os templates podem ser implementados tanto no (1) “MeuProjeto”, quanto no (2) “app”, quanto em (3) ambos. Modelos 1, 2 e 3, respectivamente.
No meu caso, vou implementar os templates apenas em “MeuProjeto” (modelo 1), deixando que o “app” se preocupe apenas com o seu processamento (entradas e saídas), como forma de permitir que a interface seja única em todo o projeto.
Caso eu entenda que o “app” deva ter seus templates, no decorrer da arquitetura, a migração será natural para o modelo 3, ou seja, não acarretará atrasos de projeto.
Alterações em settings.py
Este arquivo trata de definições gerais do projeto “MeuProjeto”.
Alterar a variável ALLOWED_HOSTS para contemplar os possíveis endereços da aplicação (desenvolvimento e produção).
Importante lembrar de remover os parâmetros “localhost” e “endereço_IP” em produção, para evitar falhas de segurança, limitando a configuração para o essencialmente necessário (domínio de hospedagem do site).
Trata-se de um template (modelo) gratuito disponível aqui.
Página baseada no template “SB Admin 2” implementada em http://192.168.0.1:8000/app/
Vamos copiar os arquivos necessários para o artigo!
No diretório /root/PycharmProjects/MeuProjeto criar os diretórios static (para conteúdos estáticos como CSS e JS) e templates (para os modelos de páginas).
No static, copiar os diretórios css, img, js e vendor. No templates, copiar o arquivo index.html, renomeando para base.html.
Alterações em urls.py
Este arquivo diz qual é o tratamento para cada URL do MeuProjeto.
Ao editar urls.py, será possível direcionar para as páginas administrativa (admin) e da aplicação (app).
A aplicação admin não é o escopo deste artigo, mas é suportada por django.contrib.
Editar o arquivo urls.py da pasta MeuProjeto, conforme abaixo:
from django.urls import include, path
from django.contrib import admin
from app import urls as app_urls
urlpatterns = [
path('admin/', admin.site.urls),
path('app/', include(app_urls)),
]
Como descrito acima na linha “app/“, foi incluído o arquivo app/urls.py designado pelo alias “app_urls” (definido na terceira linha).
Alteração de urls.py do “app”
Este arquivo vai direcionar o caminho (path) vazio, neste caso, que, pelo item anterior, refere-se a /app/, para a função “index” a ser definida em views.py (designado pelo parâmetro views.index).
from django.urls import include, path
from app import views
urlpatterns = [
path('', views.index, name='index'),
]
Alteração de views.py do “app”
Este arquivo designa o tratamento requisitado por app/urls.py (item anterior).
Assim sendo, será necessário editar o arquivo views.py do diretório /root/PycharmProjects/MeuProjeto/app/ :
from django.shortcuts import render
def index(request):
return render(request, 'app.html')
O tratamento básico acima refere-se a responder à requisição com o conteúdo do template app.html devidamente interpretado pelo Django.
Daqui até o final do artigo, vamos apenas cuidar do front-end (saída do app).
Alterar o arquivo base.html
Este arquivo servirá de “base”, como o próprio nome diz, para templates secundários, ou herdeiros. Ver Herança no Wikipedia.
Este arquivo base.html tem um código relativamente extenso que não precisa ser alterado em sua totalidade para cada nova aplicação de MeuProjeto, por exemplo, “app de cadastro de usuários”, “app de autenticação via Google OAuth 2.0”, “app de folha de pagamento”, etc.
Uma vez que os apps foram criados e houver a decisão de mudança de template “base”, essa mudança pode ser propagada para cada app, na medida em que o template “base” foi bem configurado para ser aproveitado/estendido (extend) pelos “apps herdeiros”.
Entretanto, para que o arquivo index.html do template Bootstrap “SB Admin 2” (agora base.html) seja adaptado para ser usado como template do Django, deve-se proceder às alterações seguintes.
1) Acrescentar a linha abaixo, no topo do código html:
{% load static %}
Esse código permite que o template busque recursos estáticos da página gerada no caminho /root/PycharmProjects/MeuProjeto/static.
2) Em cada conteúdo estático, acrescentar o código {% static ‘…’ %}
Cada block definido no item 4 está preenchido com valores pelo herdeiro app.html. É possível editar esses valores via programação, mas não é o escopo deste artigo.
Resultado
Resultado das alterações de index.html do template inicial de “SB Admin 2” para o template app.html herdado do template base.html
Ao criar páginas web dinâmicas com Django 3.0.5 e Python 3.6, optei por hospedar no pythonanywhere.
Como ambiente de desenvolvimento, estou usando o PyCharm Community 2020.1 como editor no CentOS 8 dentro de uma máquina virtual emulada em Oracle VirtualBox 6.0.14, usando um HD virtual de 50 GB, 2GB de RAM e 2 CPUs, ou seja, esta é a “guest machine”.
A configuração do PC, que hospeda a máquina de desenvolvimento, “host machine” é: 480 GB SSD, 1 TB HD, 16 GB de RAM e Intel Core i5 (5ª Geração).
Segue abaixo o passo a passo.
Alguns macetes para configuração do CentOS 8
Após criar a máquina virtual, crie as interfaces de rede:
NAT
Host-Only
Após o primeiro boot do CentOS já instalado na “guest machine”, habilite as interfaces de rede e faça os testes de acesso à Internet (por meio da placa NAT) e de ping para a “host machine” (por meio da Host-Only).
Se sua “host” for Windows, o ping pode ser bloqueado pelo Firewall do Windows, sendo necessário ativar o IP do “guest” ou range de IPs da rede Host-Only do VirtualBox para o protocolo ICMP.
Digite os passos abaixo para instalação dos pacotes necessários ao Virtualbox Guest Additions (similar ao VMWare Tools):
O pacote elfutils-libelf-devel foi sugerido pela instalação do Virtualbox Guest Additions, após uma tentativa com erro. Verifiquei a log em /var/log/vboxadd-setup.log
Após o boot, acessar o menu do VirtualBox, menu “Dispositivos” > “Inserir imagem de CD dos Adicionais para o convidado”.
Após isso, não ocorrendo erros, a integração do ponteiro do Mouse deve funcionar. Aproveite para configurar “Dispositivos” > “Área de Transferência Compartilhada…” > “Bi-direcional”, para que o que é copiado dentro da “guest” seja possível de ser colado na “host” e vice-versa.
Instalando o pyCharm Community Edition
Baixe diretamente na “guest” a partir da URL do pyCharm Community 2020.1 (obs. pode haver versões posteriores):
# cd /root
# wget https://download.jetbrains.com/python/pycharm-community-2020.1.tar.gz
# cd /usr/bin
# tar -xvf /root/pycharm-community-2020.1.tar.gz
# ln -s /usr/bin/pycharm-community-2020.1/bin/pycharm.sh /usr/bin/pycharm
Para executar o pyCharm, basta abrir um terminal e digitar pycharm.
Instalando o Django
O django deve ser instalado após o Python 3.x, que deve ter sido instalado na etapa “Alguns macetes para configuração do CentOS 8” no comando “yum update”.
Para checar se o Python 3.x está instalado, verificar pelo comando:
# yum install python3
Instalar o Django 3.0.5 por meio do comando pip3 (obs. pode haver versão posterior):
# pip3 install django==3.0.5
Criando o primeiro projeto Django
O pyCharm costuma criar seus projetos na home do usuário ativo, neste caso, /root, mais especificamente no diretório PycharmProjects.
Sendo assim, o diretório do projeto é: /root/PycharmProjects/MeuProjeto
Após criar um projeto novo no pyCharm, optei por criar o projeto Django dentro do diretório acima, mas esse tipo de decisão é livre do desenvolvedor:
Para esta modelagem, vou usar o editor 3D Blender(R) versão 2.82a para criar um mapa em duas dimensões que simule um mapa de três dimensões, no estilo de jogo Microsoft Age of Empires(R) ou similares.
Um pouco sobre projeção isométrica
Um objeto em 3D (ex. cubo) ao ser projetado num espaço 2D (ex. tela do celular ou tela do computador), sofrerá com distorção de ângulos entre as arestas da projeção, enquanto os três eixos (X, Y e Z) se mantêm com o tamanho igual ao objeto 3D original, como exemplificado abaixo na projeção isométrica:
Cubo em Projeção Isométrica (Créditos da imagem: Christophe Dang Ngoc Chan, Mike Horvath)
No mundo 3D, os eixos X, Y e Z possuem 90 graus de ângulo entre si. Na projeção, o custo de se manter os lados do cubo iguais é pago com a diferença nos ângulos. Os eixos X e Y (mesmo plano – face superior), possuem 120 graus de ângulo entre si. Da mesma forma, os eixos X e Z ou Y e Z possuem 120 graus também.
No Blender, usa-se o nome de Ortográfica (Ortographic), o que não altera o resultado, pois a projeção isométrica é um subtipo da ortográfica.
Os eixos X, Y, Z lembram o ângulo de 120 graus do logo da empresa Mercedes-Benz (R), no qual, cada raia da estrela possui o mesmo comprimento.
Criando os tiles em projeção isométrica no Blender 2.82a
1) Preparar o ambiente do Blender para projeção isométrica
Ao criar um novo arquivo no Blender, clicar sobre a luz (light) da cena (scene) e alterar para a luz do Sol (Sun), bem como alterar a força (Strength) para 1.
Luz para Sol e Força 1
Alterar a câmera para ortográfica (ortographic):
Alterar o tipo para ortográfica (Ortographic)
Depois, alterar os parâmetros de rotação da câmera:
Parâmetros de rotação nos eixos X, Y e Z da câmera
Alterar o tamanho das dimensões da imagem final renderizada (resoluções X e Y em pixels):
Alterar o parâmetro de Resolution X e Y, conforme for conveniente
Alterar o fundo do render para Transparente (transparent):
Na seção Film, ticar a opção Transparent
2) Mão na massa: desenhando o cubo-base
No cubo inicial, apliquei o fator de escala (atalho tecla S) para 0.2.
Depois, fiz algumas alterações de escala (S) deixando fixo por eixo (S+X, S+Y, S+Z), movimentando (atalho G) adequadamente para caber num render de tamanho 64 x 64 px (pixels).
Resultado fora de escala na perspectiva da câmera
Realizando o render para verificar como estamos saindo, fica assim:
Imagem renderizada de 64 x 64 pixels
3) Alterando a altura do cubo no Editor de imagens
Recomendo o uso do GIMP para movimentar o objeto alguns pixels no eixo Z (acima) a cada exportação para arquivo PNG.
No meu caso, a imagem renderizada pelo Blender foi Cube.png, seguido por Cube2.png e Cube3.png:
Arquivos que serão base para o mapa no editor Tiled
4) Criando o mapa no Editor Tiled
Ao criar o novo mapa (CubeMap.tmx), informar os parâmetros abaixo:
Orientação Isométrica e largura do Tile = 64 px e Altura = 32 px (metade)
Criar um novo tileset como uma coleção de imagens:
Novo tileset Cubes
Incluir as imagens geradas no passo 3) no Tileset – Cubes.tsx gerado acima.
Caso seja necessário repetir o passo 3) novamente, gerando novos arquivos CubeX.png, onde X = 1, 2, … N, é possível atualizar as imagens do mapa (CubeMap.tmx) e do tileset (Cubes.tsx), ao teclar CTRL+T no mapa.
5) Resultado
Segue abaixo o mapa que fiz a partir dos passos acima:
Mapa com degraus correspondentes aos deslocamentos efetuados na imagem original
Observações importantes!
Para que as peças (tiles) do mapa se encaixem corretamente, é importante não deixar espaços vazios na horizontal e prover o encaixe das peças na mesma altura.
O efeito de alturas diferentes, proporcionou a escada no mapa, conforme é possível verificar no item 4) Resultado.
Outro ponto importante é manter o eixo Z e o vértice oposto ao eixo na mesma linha, conforme assinalado abaixo:
Preenchimento horizontal e alinhamento vertical são necessários para obter o encaixe das peças do mapa
Como ficaria no Cocos2d?
O código no Cocos2d não possui alteração, porque o mapa editado pelo Tiled é lido dos arquivos envolvidos (TMX, TSX e PNG) como se fosse um mapa 2D feito em outro artigo.
Portanto, convenientemente o Cocos2d projeta conforme foi gravado no Mapa.TMX no jogo.
Problemas de compatibilidade entre o Tiled Editor e o Cocos2d
Tive problemas ao mostrar o mapa gerado no Tiled Editor versão 1.1.6 e Cocos2d-x 4.0.
Passo 1) Juntar as imagens horizontalmente
Ocorre que o mapa estava com as imagens separadas em Cube.png, Cube2.png e Cube3.png. Apenas o Cube3.png aparecia preenchido nos espaços que já havia posicionado.
Para solucionar, tive que juntá-las horizontalmente, resultando em uma imagem com 64 x 192 pixels.
OBS.: pintei de cores diferentes antes para detectar as partes da imagem
Imagem Cubes.png – 64 x 192 px (192 = 64 x 3)
Passo 2) Gerar um Tileset a partir dessa única imagem
No menu Tiled, clicar em “Novo” > “Tileset…”, selecionando as seguintes opções:
Selecionar a opção “Baseado numa Imagem Tileset”
Resultado no Cocos2d
As marcas Tiled, Blender, Mercedes-Benz, Microsoft e Age of Empires são registradas.
Criar um mapa no jogo em Cocos2D é fácil através do Tiled Map Editor.
A versão utilizada do Cocos2d-x é a 4.0.
Com ele é possível fazer mapas através da colocação de tiles (do inglês, azulejos) um ao lado do outro (horizontal) e em camadas (vertical, ou seja, com sobreposição).
Criando o seu mapa
Após baixar e instalar o Tiled versão 0.18.2 ou anterior no link do SourceForge, crie o seu primeiro mapa com as seguintes configurações:
Em pesquisa em fóruns da Internet, o formato da camada do tile – “Base64 (comprimido com zlib)” – permite armazenar as figuras usadas no mapa, sem a necessidade de copiar os arquivos de origem delas.
Após a criação do mapa, na seção “Camadas”, ajuste o nome da camada para, conforme segue:
Se for escrever outro nome aqui, altere depois no código
Na seção “Terrenos”, insira o seu primeiro tile, clicando em “Novo Tileset”:
Depois de escolher uma imagem, clicar nela e, após, clicar nos quadriculados do mapa pra preenchê-lo:
Salvar como MeuJogo.tmx
Copiar o arquivo MeuJogo.tmx para o diretório DIRETÓRIO_DO_PROJETO\Resources
Na solução MeuJogo.sln do artigo anterior, alterar o código, conforme segue:
Arquivo HelloWorld.h
#include "cocos2d.h"
#include "2d/CCTMXTiledMap.h"
#include "2d/CCTMXLayer.h"
using namespace cocos2d;
class HelloWorld : public Scene
{
private:
TMXTiledMap *_tileMap;
TMXLayer *_background;
...
Arquivo HelloWorld.cpp
bool HelloWorld::init()
{
_tileMap = new TMXTiledMap();
_tileMap->initWithTMXFile("MeuJogo.tmx");
_background = _tileMap->getLayer("Background"); // mesmo nome que colocou em "Camadas" no editor "Tiled"
this->addChild(_tileMap, 0);
return true;
}
O próximo artigo será sobre criar um mapa em duas dimensões Isométrico no estilo do jogo Age of Empires(R) ou jogos do gênero.
As marcas Tiled Editor, Microsoft, Age of Empires e Cocos2D são registradas
Como configurar o SonicWall TZ 205 Wireless N, utilizando o reset de fábrica e desabilitando HTTPS da interface web, através da linha de comando.
Primeira ressalva: não é necessário usar a interface “Console”
A interface de rede “Console” raramente será usada nos dias de hoje. Isso porque deve ser conectada a uma interface DB9 no PC/laptop numa ponta do cabo de rede e, na interface “Console” do tipo RJ-45.
Disposição das ligações do cabo de rede nas pontas RJ-45 e DB9.
Usando a interface X0
Ao usar a interface X0, configurar a placa de rede no PC/laptop como “Obter IP automaticamente da rede” (Microsoft Windows 7+).
Após conectar o cabo de rede, verificar o endereço de rede que subir na interface da placa, por meio do comando ipconfig ou similar (ifconfig). Ex. 10.1.130.23.
Saída do comando ipconfig (Windows).
Executando o SonicWall TZ 205 em Modo de Segurança (Safe Mode)
Reset de Fábrica
Existe um pino redondo ao lado da entrada de energia que pode ser ativado por meio de um clipe de papel para efetuar o reset das configurações de fábrica do SonicWall.
O pino redondo está dentro da abertura sinalizada acima com uma seta.
Após pressionar o botão por 5 a 10 segundos, o LED frontal sobre o ícone de chave de rosca ficará piscando na cor laranja.
Dessa forma, proceder à configuração da placa de rede do PC/laptop para IP fixo manualmente 192.168.168.1 e máscara de rede 255.255.255.0.
Acessar no navegador de Internet o endereço http://192.168.168.168/
Modo de Segurança do TZ 205.
Em Firmware Management, clicar no ícone da coluna “Boot“:
Reset (Boot) para as Configurações de Fábrica.
Após o reset acima, o LED laranja se apaga e acende o LED azul sobre o ícone de energia (power on). Isto sinaliza que a configuração foi realizada com sucesso.
LED azul sobre o ícone de energia (power on), ao lado do ícone de chave de rosca, bem como a interface X0 acesa (LED ligado).
No PC/laptop, ativar a detecção automática do endereço IP nas configurações de placa de rede.
Problemas ao acessar a configuração web do SonicWall TZ 205 (versão SSL ou cifra fraca)
Se ocorrer um dos erros abaixo referente à segurança do acesso HTTPS à interface web do SonicWall:
Erro de versão SSL.Erro de cifra fraca.
É possível desabilitar o acesso via HTTPS. Este work-around não é recomendado se o acesso for feito em rede corporativa ou em rede pública.
É possível fazer isso pela interface CLI do SonicWall.
Para realizar o acesso à CLI (Command Line Interface) Interface de Linha de Comando, basta conectar-se via SSH, utilizando usuário e senha definidos previamente ou usuário “admin” e senha “password” no caso de obter as configurações padrão de fábrica.
Digitar “configure” <enter>, depois digitar “show administration” <enter> para verificar as configurações ativas e digitar “administration” <enter> para entrar no modo de configuração administrativa:
admin@C0XXXXXXXXXX> configure config(C0XXXXXXXXXX)# show administration administration firewall-name C0XXXXXXXXXX no auto-append-suffix admin-name admin no password aging no password uniqueness no password enforce-4-character-difference password minimum-length 1 no password complexity password constraints-apply-to builtin-admin password constraints-apply-to full-admins password constraints-apply-to limited-admins password constraints-apply-to local-users idle-logout-time 5 no user-lockout admin-preempt-action goto-non-config admin-preempt-inactivity-timeout 10 no inter-admin-messaging no web-management allow-http web-management https-port 443 web-management certificate use-self-signed no web-management client-certificate-check web-management cert-common-name 192.168.168.168 web-management default-table-size 50 web-management refresh-interval 10 no dashboard-as-starting-page web-management tooltip form-delay 2000 button-delay 3000 text-delay 500 no override-sonicpointn-download no override-sonicpointnv-download no override-sonicpointndr-download language-override english no gms-management ssh port 22 exit config(C0XXXXXXXXXX)# administration
Permitir que a configuração da interface web seja feita ao digitar “web-management allow-http” <enter>. Depois, digitar “commit” <enter> para gravar as configurações.
Opcional: verificar a alteração realizada, por meio do comando “show administration”:
(config-administration)# web-management allow-http (config-administration)# commit % Applying changes… % Changes made. (config-administration)# exit config(C0XXXXXXXXXXX)# show administration administration firewall-name C0XXXXXXXXXX no auto-append-suffix admin-name admin no password aging no password uniqueness no password enforce-4-character-difference password minimum-length 1 no password complexity password constraints-apply-to builtin-admin password constraints-apply-to full-admins password constraints-apply-to limited-admins password constraints-apply-to local-users idle-logout-time 5 no user-lockout admin-preempt-action goto-non-config admin-preempt-inactivity-timeout 10 no inter-admin-messaging web-management allow-http web-management http-port 80 web-management certificate use-self-signed no web-management client-certificate-check web-management cert-common-name 192.168.168.168 web-management default-table-size 50 web-management refresh-interval 10 no dashboard-as-starting-page web-management tooltip form-delay 2000 button-delay 3000 text-delay 500 no override-sonicpointn-download no override-sonicpointnv-download no override-sonicpointndr-download language-override english no gms-management web-management https-port 443 ssh port 22 exit
Por fim, permitir o acesso HTTP e sem redirecionamento HTTPS na interface X0 por meio dos comandos abaixo:
Cocos é um framework de desenvolvimento de jogos, apps e outros programas interativos baseados em GUI (linguagem visual) multiplataforma de jogos para celulares com iOS e Android, podendo ser instalado em conjunto com diversas IDEs.
As linguagens de programação usadas no Cocos, dependendo do tipo de framework usado são: C++, C#, Obj-C, Python, Lua, JS e Swift. Neste caso, vamos empregar o Cocos2d-x, escolher a IDE Microsoft Visual Studio 2019 e a linguagem C++, Lua, JavaScript.
O Cocos2d-x pode escrever programas para as plataformas iOS, Android, Tizen, Windows 8, Windows Phone 8, Linux e Mac OS X.
Ferramentas a serem instaladas
Para cumprir o escopo Visual Studio + Cocos2d, devemos:
Baixar e instalar o Visual Studio Community, o mais recente até a edição deste post é o 2019;
Baixar e instalar o Python 2.7.x (apesar de mais antiga, a versão 2.7.x é compatível com o script cocos2d, como veremos a seguir);
Baixar e descompactar o cocos2d-x (versão 4.0, ou mais recente);
Baixar e descompactar o Android NDK;
Baixar e descompactar o ADT (Android Developer Tools);
Baixar e instalar o CMake (versão 3.17.0, ou mais recente), marcando a opção de configurar para incluir o cmake na variável PATH, para todos os usuários.
Executar os passos 1 a 6.
Abrindo o Prompt de Comando (ou Command Prompt, em inglês) do Windows 10, entrar no diretório no qual o Cocos2d-x foi descompactado (ex. F:\Mobile\cocos2d-x-4.0) e executar o comando:
python setup.py
Estrutura inicial dos arquivos Cocos
Com este comando, você configurará as variáveis ambiente do Cocos – NDK_ROOT e ANDROID_SDK_ROOT:
Após fechar e abrir o Command Prompt do Windows, é chegada a hora de criar a estrutura inicial dos arquivos em Cocos:
cocos new MeuJogo -p com.jogos.MeuJogo -l cpp -d F:\Mobile\MeuJogo
A estrutura final dos arquivos e diretórios criados, exceto pelo diretório proj.visualstudio, segue abaixo:
Adaptando o projeto para ser editado e compilado em Visual Studio
Para configurar uma solução Visual Studio (arquivo. SLN), é necessário configurar os arquivos da solução. Vamos criar o diretório proj.visualstudio e executar o CMake:
mkdir proj.visualstudio && cd proj.visualstudio
cmake .. -G"Visual Studio 16 2019"
O arquivo MeuJogo.sln deve constar do diretório: F:\Mobile\MeuJogo\MeuJogo\proj.visualstudio
Após abrir a solução MeuJogo.sln no Visual Studio, deve-se configurar o projeto MeuJogo como Projeto de Inicialização (ou StartUp Project, em inglês):
Agora é rodar o MeuJogo:
Resultado:
Chegamos ao fim, no próximo post, aprenderemos como fazer um mapa tiled para criar mapas 2d em jogos no estilo arcade/RPG (ex. Zelda).
As marcas Zelda, Cocos2d, Microsoft, CMake, Python e Android são registradas
Coletor de informações sobre licenças do EMC(R) Networker a partir de servidores de backup, trazendo o nome da licença (License Name), Data de expiração (Expiration Date) e o código de ativação (Enabler Code) de cada licença do parque, possibilitando guardar as informações delas para restaurar ambientes futuros.
Escrito em Java, é compatível com MS-Windows e Linux (32 ou 64 bits).
No caso de licença permanente aparece o texto “Authorized – No expiration date”.
Não está disponível para download, mas pode ser vendido no formato compilado ou o código aberto, com o pagamento de uma quantia simbólica.
Havendo interesse, favor entrar em contato por meio dos comentários deste artigo.
EMC, Networker, MS, Windows – são marcas registradas