GitHub – Nueva (NCL – Lua Game Framework)

Acabei de colocar o Nueva  atualizado no GitHub \o/
https://github.com/Espigah/Nueva/tree/Framework/nueva

Olhem a pasta https://github.com/Espigah/Nueva/tree/Framework/nueva/examples

Que é onde tem os exemplos mais importantes das funcionalidades do Nueva.

(NCL – Lua Game Framework)
v0.8
Feature missing :
-State view control
-Audio (only lua or c or java)
-Debug mode
-TextureAtlas (sprite sheet by tool Texture Packer)
Feature:
-Tween
-keyboardSignals control
-xml reader
-Render by group
-Render by buffer list
-Animation by sprite sheet
-Animation states
-Collisions
-AllButtons configured
-MultipleInheritance and BaseClass -> OOP for dumb
-BuildClass for replace ‘require’ and return new Class Object
-(athus)TileMap
-(athus)Text(easy mode)
-(athus)Media (sound) control

https://github.com/Espigah/Nueva/tree/Framework/nueva

Nueva (NCL – Lua Game Framework)

Nueva (v 0.5 )

*Ainda não está disponível para download =/

Programação – Boas_Práticas 二

Fala pessoal \o/
Não existia a intenção de escrever uma “ Programação – Boas_Práticas ” parte2,
porem, vejo que pra quem está começando nesta vida de programador =(
exitem facilidades que não abordei no primeiro ‘post’
O intuito agora e alertar sobre tal comportamento.

idiomas vs languages vs langues
Não e muito dificil, talvez pela preguiça, encontrar uma misturebas de idiomas pelo código.
Então, pra ficar bonito, manter o código em inglês, ok?
No máximo escrever comentário em seu idioma nativo, no máximo!!!

Hyphen, CamelCase, or Underscore ? 
Não importa, mantenha um padrão;
É, de novo aqui, sim, aqui….
Não mistures esses caras, mantenha um padrão;

OOTrue 
#De preferencia a grande quantidade de arquivos do que grande quantidade de linhas;
#Não misture as responsabilidades.
Se um método diz que vai tocar um som,
ele não vai parar outro som,
ele vai tocar um som e só
(simples, não?)
#Transforme problemas maiores
em problemas menores

Ambiente de teste
Você tem que ser capaz de reproduzir um erro
em um ‘Ambiente de teste’, ou seja, isolar o problema da aplicação (Y)
isso ajuda a resolver e a pedir ajuda hehe

Versionamento
#Svn, dropbox… não importa.
#Não confie plenamente;
#Facilite backups, não é porque da pra voltar que devemos contar com esse recurso,
backups periódicos (devidamente documentados) salva vidas
#Em etapa de estudo, gosto de criar pastas a cada marco.

Acho que é isso…
lembrando de coisas novas
eu atualizo aqui (Y)

Programação – Boas_Práticas

Hyphen, CamelCase, or Underscore ? 
Não importa, mantenha um padrão;

Se não existir um padrão, converse com os outros programadores para definirem juntos qual será o padrão;

Se existir um projeto que não tem mais os programadores,

agora o projeto é seu, se tiver paciência, migre para o seu padrão;

De preferencia a grande quantidade de arquivos do que grande quantidade de linhas;

get/ set or public?
“afinal, o que são get e set além de um jeito mais lento de fazer um atributo público?”

Concordo bastante com isso.

get /set por get /set é igual a um public XD

E não ligo para “cada objeto cuida de si próprio “, não quando o assunto e get/set…

Acho mais adequado quando precisamos de algo mais especifico, como: deixar uma variável apenas como “readonly” (‘get’) ou usar o ‘set’ quando precisamos de alguma logica ao atribuir um valor.

OO mal programado pode virar algo muito Procedural .
Enchendo o código com o famoso “Bad Smell”…você pode conseguir isso facilmente; =D

Orientação a objeto, a template, a domínio, a aspecto, a lua, ao sol, whatever…. 
Não ligo, desde que as coisas sejam coerentes.

Mas se a equipe falar o mesmo que o domínio
acho que flui melhor (serve tanto para os códigos quanto para o projeto)

Minhas manias:
variável usando get ou set começãndo com underscore = _variable;

variável que representa um objeto, coloco as duas primeiras letras para identificar este objeto = ComboBox = cbVariable;

constante sempre com letras maiúsculas e com underscore = CONST_VARIABLE;

Métodos privados = primeira letra maiúscula = Function();

Métodos públicos = primeira letra minuscula = function();

Parâmetros de um método, sempre coloco um simbolo
para diferenciar eta variável das demais no meio do escopo, no meu caso uso ‘$’ = function($param1, $param2);

Levo em consideração o nome do pai, tentando exemplificar:
Uma roda que tem como pai um objeto com o nome Carro,
não coloco o nome da roda de roda_carro ou carro_roda,
e apenas de -> roda,
para que no código fique -> Carro.roda
é não Carro. roda_carro ou Carro. carro_roda;

If()
{
}
else
{
}
Acho que facilita a legibilidade desta forma;

Dica rápida 1:
function MeuMetodo($dias:Array, $armas:Array):void
{

trace(“@MinhaClasse:: MeuMetodo {“)

const LENGTH_DIAS:uint = $dias.length

var personagemAtual:Object;

var i:uint;

for (i=0; i< LENGTH_DIAS ; i++)
{

personagemAtual = $armas[i];
trace(“Arma =”, personagemAtual.arma,” Cor =”, personagemAtual.cor);

}

trace(“@MinhaClasse:: MeuMetodo }”);

}

p.: Codigo em pt é as3.

Um exemplo de um ‘for’ que poucas programadores usam:
‘length’ fora do ‘for’,
declaração da variável fora do ‘for’,
uma constante para o que não vai mudar,
um objeto para não ficar indo toda vez dentro de uma matriz para acessar a propriedade de um objeto;
E a mania que ajuda a debugar
é ‘printar’ o nome da classe concatenado com o método no inicio e no final da lógica, mas só quando for necessário;

Dica rápida 2:
Inicializar uma variável no escopo da classe ou dentro do construtor faz alguma diferença para o JIT.

Dica rápida 3:
Use e abuse de ‘interface’;

Liks relacionados:

Boas Práticas de Programação

Unity -> SWF

espigah_unity 3.5

epigah_unity 3.5

@quickly

aeeee unity 3.5
com um builde para .swf \o/
e não é o isso ~^
temos algumas coisas disponíveis no unity 3.5 que conversão com o ‘flash’,
são elas:

com.unity.IUnityContent (é a interface que representa o conteúdo.)
com.unity.IUnityContentHost (permite a você acessar o conteúdo através desta interface)
com.unity.UnityContentLoader (manipula o start e a conclusão da inicialização)
com.unity.UnityContentParams (parâmetros do carregamento)

essas classe permitem fazer algo assim:

import com.unity.UnityContentLoader;
import com.unity.UnityLoaderParams;

import mx.core.UIComponent;
import mx.events.FlexEvent;

public var loader:UnityContentLoader;

protected function init():void
{
var holder:UIComponent=new UIComponent();

var params:UnityLoaderParams=new UnityLoaderParams
(
false,
systemManager.stage.stageWidth,
systemManager.stage.stageHeight,
true,
true,
true
);

loader=new UnityContentLoader(“Main.swf”, this, params);
holder.addChild(loader);
addElement(holder);
}

bacana, não?
por hoje é só….

Tile Hexagon + Searching Around

Tile Hexagon . SWF

Olá olá, esse swf surgiu de um problema bem simples:
Montar um "tile" e saber os objetos em torno do objeto selecionado.
Mas quando tudo passou a ter seis lados...
esse problema simples complicou um bocado.

Primeiro foi o "tile":
Quando tratamos com quadrados,
dois "for", sem pensar muito, resolve tudo;

Com hexagonos não foi muito diferente,
dois "for", agora pensando um pouquinho, resolveu tudo;
Mas o modulo (%) teve que entrar na brincadeira
para dar o formato das linhas&colunas,
umas mais pra frente e outras mais pra tras...

O X e Y ficando assim:

hexgons.x= ((( hexgons.width + SPACING) * i ) + 
((( j % 2 ) * ( hexgons.width / 2 )))) 
hexgons.y= (((( hexgons.height + SPACING) * j ) / 4 ) * 3 ) 

*Evitem deslocar bits quando o assunto for coordenadas.

Segundo foi saber quem está do lado do objeto selecionado:
A primeira tentativa, não muito esperta,
foi criar uma formula para cada lugar
usando como base um matriz bidimensional...
funciona, mas não é bonito =P
Resolvi fazer por seno & cosseno,
o cálculo ainda não esta pronto,
mas o resultado é notável.

O X e Y ficaram assim:

angle = ((360 / AMOUNT_RADIUS) * i) 
targetX = Math.sin ( angle * ( Math.PI / 180) ) * RANGE + $centerX;
targetY = Math.cos ( angle * ( Math.PI / 180) ) * RANGE + $centerY;
objects = getObjectsUnderPoint(new Point(targetX,targetY));

Depois eu coloco o arquivo para download...

Instalando Mongo_DB no windows 7 (noSql)

Instalando Mongo_DB no windows 7

Faça download dos arquivos necessários -> http://www.mongodb.org/downloads

(eu usarei o mongodb-win32-x86_64- 1.9.0)

Antes de começarmos….

Crie uma pasta para ficar a pasta ‘bin‘ que vem no download;
Crie uma pasta ‘data‘ dentro desta pasta;
Crie um arquivo para ficar o “log“;

-Criei a pasta ‘mogodb’ em c: -> c:\mongodb
-Criei a pasta ‘data’ dentro de ‘mogodb’ -> c:\mongodb\data
-Criei uma pasta para log dentro de ‘mogodb’ -> c:\mongodb\log
-Criei dentro de ‘log’ um arquivo com o nome ‘mongo.log’ -> c:\mongodb\log\mongo.log

ficando assim:
|
->mongodb
—|–>bin
—|–>data
—|–>log
——-|–>mongo.log

feito isso, tente abrir no ‘browser’ ;

-> http://localhost:27017/

Deve aparecer assim:


Abra o cmd.exe como administrador, e execute o ‘ mongod ‘ que está dentro da pasta ‘ bin ‘ que vem junto com o download;

o meu ficou assim(passo-a-passo)
->cd\
->cd mongodb
->cd bin
-> mongod -install -lopath ARQUIVO_DE_LOG

Tendo sucesso na criação do ‘serviço’ MongoDB abra ‘ regedit ‘ ;


Abra regedit, e localize ->
HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> services -> Mongo BD -> ImagePath


Altere para ->
“C:\mongodb\bin\mongod” -service -rest -master -logpath C:\mongodb\log\mongo.log -logappend -dbpath C:\mongodb\data -directoryperdb


Agora….
Abra ‘ serviços ‘e localize o MongoDB para Inicializa-lo ;


tchan-tchanraaaaan \o/
” feito isso, tente abrir no ‘browser’

-> http://localhost:27017/

he-he se funcionar
veja também

-> http://localhost:28017/

//===================================
O intuito dos meus estudos era fazer funcionar wamp+mongo…pena que ¬¬
o php nao ajuda muito ¬¬ como sempre XD

“PHP x86 or x64 ? Look at “Architecture” in phpinfo. Official drivers doesn’t work with Apache + PHP x64.”

Bati muito a cabeça antes de encontrar isso
e ainda não sei se tem/ vai ter alguma forma de fazer a dll funcionar.
Talvez, seja preferível usar ruby \(*.*)/

Espero ter ajudado! z/o/

Assim sem RPG (by – GeekaHolic)

Um produção Geek-a-Holic o/
bem criativa ^^ essa galera!

Bygod – Sem RPG (by – GeekaHolic)

Flare3D (Old Version) X Flare3D (Molehill Version)

Obs: Seu ‘navegador’ deve possuir a versão 11 do FlashPlayer ^^ e sim, ainda é para poucos…

Flash Player 11 Incubator – download

Ainda falta bastante coisa nesta versão do Flare3D,
principalmente documentação >.<
Mesmo assim, resolvi fazer uma coisa bem simples(8h só nisso={ ) com as duas versões.

Os dois arquivos possuem, teoricamente, os mesmos códigos:
1-Vector3D, 1-Scene, 2-Sphere, 1-Stat;
*Ainda não sei contabilizar os polígonos na nova versão;

Teste1 -> Flare3D – Old Version
Teste2 -> Flare3D – Molehill Version

Então…o que deu para notar?
Menos com mais, discrepantemente mais… XDD
Tenho um projeto que deve/vai usar bastante recursos
e essa “nova” tecnologia veio a calhar, iiiisso…claro,
se no primeiro teste já não ‘brekar’ no celular =/
como aconteceu/acontece com a versão anterior. (Y)

Ansiando pelo futuro! *.*

Flash Player 11 – Molehill – Step_by_Step

Assim… Perdi o que eu tinha preparado para esta publicação, ou seja…=/

Agora fiz algo bem tosco mesmo XD

lá vai!

Pré-requisitos:

Download 2 – playerglobal.swc, FlashPlayerDebugger.exe, FlashPlayer11.xml, AxShockwaveFlashObjects.dll, ShockwaveFlashObjects.dll;

Download 1 – .NET Framework 4.0.30319.1

O que li para formular o post:

http://www.allforthecode.co.uk/aftc/forum/user/modules/forum/article.php?index=5&subindex=1&aid=263

http://blog.naver.com/PostView.nhn?blogId=q3korea&logNo=120125249427&redirect=Dlog&widgetTypeCall=true

http://forums.adobe.com/message/3507650#3507650

http://forums.adobe.com/message/3499868

http://forums.adobe.com/message/3510256?tstart=0

http://code.google.com/p/ascensionsystems/downloads/detail?name=Setting%20Up%20FP11%20Standalone.wmv&can=2&q=

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.