GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Colisões não funcionando
por RastaMaan Hoje à(s) 19:49

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Hoje à(s) 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21


[Ideia] .EXE? Não cara, .GAME!

+4
theguitarmester
Overflow
All-x
luiz_eldorado
8 participantes

Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty [Ideia] .EXE? Não cara, .GAME!

Mensagem por luiz_eldorado Sex 02 Nov 2012, 19:43

Não queria postar isso, mas à pedido do moisesBR, vou postar.

Arquivos .game
O usuário baixaria um programa exe que eu mesmo fiz, que executa arquivos .game (não fiz ainda...). Então ele baixaria arquivos .game (que são zip com extensão mudada) de algum lugar, nesses arquivos teriam jogos criados no Game Maker - não o exe, mas sim os objetos, sprites, room espalhados em arquivos dentro deste zip.

Cada exe que você baixa de jogos tem 2mb à mais do que o próprio jogo. Se você baixar esses 2mb apenas uma vez nesse programa, e depois baixar apenas os jogos mesmo, estará economizando 2mb por cada jogo. Isso é um bom alívio para os que tem internet 3g (que na verdade é 2g, mas isso não vem ao caso).

Porém estou com problemas, estou procurando ajuda mas ninguém me ajuda não tive muitos sucessos. Preciso de ajuda com coisas como: Como será a organização dos arquivos dentro do arquivo? Lembrando que o jogo será carregado dentro do executável, no Creation Code da primeira room sem nome.

Ah, eu já vi o jogo genérico do saim.
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por All-x Sex 02 Nov 2012, 20:16

Cara a ideia é legal, só que não.

Resumindo teriamos que ter um programa para rodar os jogos. Seria como o Game Maker 1. Iria perder a praticidade.

Economizar apenas 2 Mb não é o bastante para a ser atrativo, mesmo que isso seja pra vários jogos. 2G baixa rápido:

2G - EDGE - 256 Kbits /s - 32 Kbytes /s: baixaria em 1 m e 04 segundos;
2G - GPRS - 56 Kbits /s - 7 Kbytes /s: baixaria em 4 m e 45 segundos;

Lógicamente existe o limite de tráfego que limita a velocidade, mas mesmo assim não demora muito não.

É teoricamente fácil fazer isso que você quer (Usando funções binárias). Mas isso implicaria diretamente na velocidade do jogo, pois teriamos que descompactar os arquivos e logo também teriamos que carrega-los.

Edit: Olhe o esquema que fiz para tu entender como é "facil":

[Ideia] .EXE? Não cara, .GAME! Esquema_game_arquivo

FLWS!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por Overflow Ter 06 Nov 2012, 14:47

acho que com um registro no sistema operacional do usuario, daria para executar sem precisar de um programa, ou seja, pelo DOS (cmd) do sistema operacional, assim o computador entenderia a extensão...


Overflow
Overflow

Data de inscrição : 22/03/2012
Reputação : 1
Número de Mensagens : 42
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por theguitarmester Ter 06 Nov 2012, 15:45

Overflow escreveu:acho que com um registro no sistema operacional do usuario, daria para executar sem precisar de um programa, ou seja, pelo DOS (cmd) do sistema operacional, assim o computador entenderia a extensão...


Acho que você não entendeu o que está sendo debatido, ele quer fazer um Arquivo/jogo/projeto que exexuta outros, esse outros que seriam jogos feitos com base no GameMaker, ou algo assim.


Vou Ver se consigo Fazer Algo do Tipo.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2209
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por saim Ter 06 Nov 2012, 16:15

Eu andei pensando, acho que aquilo que falei por mensagem funcionaria.

Cada arquivo .game pode ter um arquivo com nome padronizado, que vou chamar de "principal". O executável procuraria esse arquivo e veria as instruções dentro dele, que seriam transformadas em uma string e executadas. Nessas instruções estariam as localizações dos demais arquivos dentro do .game, que seriam acessados e transformados em strings, na ordem definida pelo arquivo principal.
Aí, essas strings seriam executadas na ordem correta, o que adicionaria objetos, eventos, recursos, tudo de dentro do .game. A restrição que você comentou das aspas acaba não comprometendo muito a programação. Falo por experiência própria - o meu game genérico tem essa restrição e eu me viro numa boa.

Claro que há mais restrições, também.
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por Luiz A. Oliveira Ter 06 Nov 2012, 17:08

Teria um jeito de entender como o GM compila os arquivos .gmk, seria mais fácil fazer isso em Delphi.
Não sei se estou falando besteira, mas seria como um GMK compactado em um arquivo de extensão personalizada (.game no caso) dai você extraía ele para uma pasta temporária e dava um jeito de compilar e executar o .gmk.

Seria isso que seu programa faria?

Você quer ele em GML?

Posso dar uma pesquisada, você sabe como se chama programas que fazem isso?
Luiz A. Oliveira
Luiz A. Oliveira

Games Ranking : Nota C

Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Reputação : 5
Número de Mensagens : 914
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizgm.blogspot.com/

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por luiz_eldorado Ter 06 Nov 2012, 22:00

@Alex FC: Não sei, mas pra mim parece que 2mb é muita coisa. Deve ser porque, quando o download é muito grande, ele dá falhar no meio, tendo que reiniciar. E pra mim, 5 minutos valem outro. Esse esquema que você fez, é meio estranho. Pelo jeito você pensa no arquivo .game como um arquivo com vários arquivos. Isso pode ser mais simples usando .zip. Mesmo assim, o que siginifica um "arquivo objeto"? O que teria dentro dele, exatamente?
PS: "Roons" Razz

@Overflow e @theguitarmester: É o que o theguitarmester disse. Se conseguir fazer, me avisa >)

@saim: Sim, sim, isso mesmo que eu pensei... Mas que restrição que comentei entre aspas?

@luiz_100juizo: É difícil entender como GM faz estes arquivos, e não tem nenhum tipo de informação na internet. Não adianta nada mascarar o .gmk por .game. Assim isso meio que perderia a utilidade. Meu programa vai ter um tipo de arquivo próprio, contendo todas as informações que encontraria num .gmk, porém de forma "diferente". Acho que não vai achar nada na net.

Por enquanto nenhum progresso. Se quiserem ver o GMK do executador do .game...

!siam étA
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por theguitarmester Qua 07 Nov 2012, 00:20

Tentei aprender sobre seu projeto, mas não entendi muito, Resolvi Criar um EXE meu, depois se funcionar algo, postarei aqui, mas ele por enquanto vai ser bem testes mesmo.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2209
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por PedroX Qua 07 Nov 2012, 14:40

Uma ferramenta interessante que poderia ajudá-lo é:

https://gmbr.forumeiros.com/t21709-gmk-splitter

Com ela você extrai o conteúdo do GMK para uma pasta e vice-versa.

Desse modo, você pode ler os arquivos sem estes estarem compilados ou salvos de algum outro modo.

Editado:

Continuando a ideia, você pode fazer assim:

Ao escolher o GMK, o seu programa via linha de comando extrai tudo para uma pasta. Então ele compacta em um arquivo com senha. Ele gera também um código e salva num arquivo de texto. Quando a pessoa distribuir, só o programa poderá decifrar o código e então saberá a senha para descriptografar. Então você precisa agora é ler os arquivos XML, que são de texto, gerando assim os objetos. Essa é a parte mais complicada. Existe uma DLL, a Ether, que lê esses arquivos mais facilmente.

Essa é apenas uma ideia, que pode ou não dar certo.

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por saim Qui 08 Nov 2012, 16:36

luiz_eldorado escreveu:Mas que restrição que comentei entre aspas?
Não, você não comentou entre aspas... você comentou A RESPEITO das aspas!
É que ao acrescentar eventos usando object_event_add a gente entra com o evento na forma de uma string. Essa string, claro usa aspas (' ou ") pra ser considerada string. Como nós queremos incluir strings muitos eventos (como, digamos, o draw_event), precisamos colocar aspas dentro dessa string, o que o game maker consideraria como o fechamento da string anteriormente aberta.
Um exemplo, pra não enlouquecermos:
Código:
object_event_add(objeto, ev_draw, 0, 'draw_text(x, y, 'olá mundo');');
A saída, como você sabe, é usar aspas diferentes. No exemplo, a string a ser desenhada seria "olá mundo", com aspas duplas. E com essa saída dá pra contornar a maioria dos problemas.

Claro que sempre tem a string dentro da string dentro da string, até a loucura. Pra isso, eu costumo armazenar as strings em variáveis e usá-las. Dá um trabalho maior, não dá pra generalizar a solução, mas resolve.
Código:
globalvar texto; texto = 'olá mundo';
object_event_add(objeto, ev_draw, 0, 'draw_text(x, y, texto);');
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por theguitarmester Qui 08 Nov 2012, 16:48

Saim, essa é uma Questão Muito chata Mesmo, estava um dia a Fazer um Projeto que soltava arquivos, daí testei fazer com uma Foto, mas daí no Texto da foto Contem aspas dos 2 tipos, e então dava erro.

Será que não existe nem um Modo dele entender algo como só STRING, ou senão um modo em que para fechar o ASPAS aberto, teria de ter o Mesmo numero de Aspas?
Por exemplo:
varivaveltexto = """"""""""asdbjhzbdfkjad fasdhfo\s 2' 'bhlbl2 e32h1o '''i l'glui' ' uyg'' ' 'lui'gi'lg "IL"UG """""gui xxx x 200
3872912b 1 12ib3 //continua texto da variavel y y 22 iç2 2hb222 i
1 1 *.*+* * // edoqw qb23 432 2 1
1li GH""""kjç GHGH'" kjsdblkjsa """"""""""
//texto já fechado
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2209
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por luiz_eldorado Qui 08 Nov 2012, 18:48

@PedroX: Hmmm, interessante esse GMK Spliter. Sim, seu edit é uma boa idéia, mas ler todos esses arquivos em xml... dá trabalho, vou tentar um pouco aqui, gostei dessa Ether, talvez dê pra criar um navegador com ela!

@saim:
saim escreveu:
luiz_eldorado escreveu:Mas que restrição que comentei entre aspas?
Não, você não comentou entre aspas... você comentou A RESPEITO das aspas!
Ri nessa parte! XD Esse code que deu de exemplo é loucura. O jeito é ler todos os eventos de arquivos mesmo. Algo assim:
Código:
object_event_add(objeto,ev_draw,0,execute_file("lerarquivo.gml","objeto_draw.objev"));

@theguitarmester: Acho que não há comos sobre isso.

Bem, não estou nada animado com o projeto, está aí:
Código:

/*** Simples sistema de carregamento de arquivos ".game" ***/

//Tela de "Loading"
draw_set_color(c_white); draw_set_halign(1); draw_set_valign(1);

screen_redraw(); draw_text(room_width/2,room_height/2,'Waiting user...'); screen_refresh();
//Executar arquivo se for aberto com o programa ("Abrir com...", etc).
//Caso aberto diretamente, perguntar pelo arquivo.
var fname;
fname=parameter_string(1);
if fname="" {
fname=get_open_filename("Game file (*.game)|*.game","");
if fname="" {game_end(); exit;}
}

//Para evitar problemas
if !file_exists(fname) {show_message("The file not exists."); game_end(); exit;}

//Recriar pasta
if !directory_exists(working_directory+"\temp")
{directory_create(working_directory+"\temp");}

screen_redraw(); draw_text(room_width/2,room_height/2,'Unziping...'); screen_refresh();

//Necessário para o VBSZIP (o arquivo tem que ser ".zip")
file_copy(fname,working_directory+'\temp.zip');

//Começo do "VBSZIP" (por Ninja8086)
//Foi modificado um pouco por razões de espaço, e etc.
//E não está em scripts, pois não se pode para este programa.

var Script, ZipFile, ZipDir, VBScript, TempFile;
ZipFile  = working_directory+'\temp.zip';
ZipDir  = working_directory+"\temp";

Script  = file_text_open_write(environment_get_variable('TEMP')+'\gmzip.vbs');
VBScript = '
    Set GMZIP = CreateObject("Shell.Application")
    GMZIP.NameSpace("' + ZipDir + '").CopyHere GMZIP.NameSpace("' + ZipFile + '").Items
';
file_text_write_string(Script, VBScript);
file_text_close(Script);

TempFile = environment_get_variable('TEMP')+'\gmzip.vbs';
execute_program('wscript', TempFile, true);
file_delete(TempFile);

//Fim do "VBSZIP"

//Não preciso mais disto
file_delete(working_directory+'\temp.zip');

//Configurações globais do jogo
screen_redraw(); draw_text(room_width/2,room_height/2,'Loading Global Game Settings');
screen_refresh();

var a;
a=file_text_open_read(working_directory+'\temp\global_game_settings');

var fullscreen,scale,color,sizeable,stayontop,showborder,showicons,cursor,colordepth,w,h,
    frequency,syn,priority;

                    fullscreen=real(string_digits(file_text_read_string(a)));
file_text_readln(a); scale=real(string_digits(file_text_read_string(a)));
file_text_readln(a); color=real(string_digits(file_text_read_string(a)));
file_text_readln(a); sizeable=real(string_digits(file_text_read_string(a)));
file_text_readln(a); stayontop=real(string_digits(file_text_read_string(a)));
file_text_readln(a); showborder=not real(string_digits(file_text_read_string(a)));
file_text_readln(a); showicons=not real(string_digits(file_text_read_string(a)));
file_text_readln(a); cursor=real(string_digits(file_text_read_string(a)))+1;
file_text_readln(a); colordepth=real(string_digits(file_text_read_string(a)));
file_text_readln(a); w=real(string_digits(file_text_read_string(a)));
file_text_readln(a); h=real(string_digits(file_text_read_string(a)));
file_text_readln(a); frequency=real(string_digits(file_text_read_string(a)));
file_text_readln(a); syn=real(string_digits(file_text_read_string(a)));
file_text_readln(a); priority=real(string_digits(file_text_read_string(a)));

file_text_close(a);

window_set_fullscreen(fullscreen); window_set_region_scale(scale,0); window_set_color(color);
window_set_sizeable(sizeable); window_set_stayontop(stayontop);
window_set_showborder(showborder); window_set_showicons(showicons); window_set_cursor(cursor);
display_set_all(w,h,frequency,colordepth); set_synchronization(syn);
set_program_priority(priority);

//Objetos
screen_redraw(); draw_text(room_width/2,room_height/2,'Loading Objects'); screen_refresh();

//begin; Créditos ao Jiraya, modificado por mim para fazer o que eu realmente queria
var i,f,pastas,dir,arquivos;
pastas=ds_list_create();
arquivos=ds_list_create();
dir=working_directory+"\Objects";
for(i=file_find_first(dir+"\*",fa_directory);i!="";i=file_find_next();)
{
if(i=="."||i=="..")continue;
if(directory_exists(dir+"\"+i)) {
ds_list_add(pastas,dir+"\"+i);

execute_string('globalvar '+i+';');
res=object_add();
variable_global_set(i,res);
a=file_text_open_read(dir+"\"+i+'\settings');
object_set_sprite(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_visible(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_solid(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_depth(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_persistent(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_parent(res,real(file_text_read_string(a))); file_text_readln(a);
object_set_mask(res,real(file_text_read_string(a))); file_text_close(a);

}
}
file_find_close();

while(ds_list_size(pastas))
{
dir=ds_list_find_value(pastas,0);
ds_list_delete(pastas,0);
for(i=file_find_first(dir+"\*.*",fa_directory);i!="";i=file_find_next();)
{
if(i=="."||i=="..")continue;
if(directory_exists(dir+"\"+i))ds_list_add(pastas,dir+"\"+i);
if(file_exists(dir+"\"+i)) {
ds_list_add(arquivos,dir+"\"+i);

s='';
a=file_text_open_read(dir+"\"+i);
while !file_text_eof(a) {
s+=file_text_read_string(a)+chr(13)+chr(10);
file_text_readln(a);
}
file_text_close(a);
object_event_add(res,string_copy(i,1,string_pos(' ',i)),
string_copy(i,string_pos(' ',i)+1,string_length(i)-string_pos(' ',i)+1),s);

}
}
file_find_close();
}
ds_list_destroy(arquivos);
ds_list_destroy(pastas);

//Rooms
screen_redraw(); draw_text(room_width/2,room_height/2,'Loading Rooms'); screen_refresh();

var i,f,pastas,dir,arquivos;
pastas=ds_list_create();
arquivos=ds_list_create();
dir=working_directory+"\Rooms";
for(i=file_find_first(dir+"\*.*",fa_directory);i!="";i=file_find_next();)
{
if(i=="."||i=="..")continue;
if(directory_exists(dir+"\"+i)) {
ds_list_add(pastas,dir+"\"+i);

execute_string('globalvar '+i+';');
res=room_add();
variable_global_set(i,res);
a=file_text_open_read(dir+"\"+i+'\settings');
room_set_caption(res,file_text_read_string(a)); file_text_readln(a);
room_set_width(res,real(file_text_read_string(a))); file_text_readln(a);
room_set_height(res,real(file_text_read_string(a))); file_text_readln(a);
room_set_code(res,"room_speed="+file_text_read_string(a)+";"); file_text_readln(a);
room_set_persistent(res,real(file_text_read_string(a)));
file_text_close(a);

a=file_text_open_read(dir+"\"+i+'\background');
var col, show;
show=real(file_text_read_string(a)); file_text_readln(a);
col=real(file_text_read_string(a)); file_text_readln(a);
room_set_background_color(res,col,show); file_text_close(a);

var xx,yy,oo;
a=file_text_open_read(dir+"\"+i+'\instances');
while !file_text_eof(a) {
s=file_text_read_string(a)+' '; file_text_readln(a);
xx=real(string_copy(s,1,string_pos(' ',s))); s=string_delete(s,1,string_pos(' ',s)+1);
yy=real(string_copy(s,1,string_pos(' ',s))); s=string_delete(s,1,string_pos(' ',s)+1);
oo=real(string_copy(s,1,string_pos(' ',s)));
room_instance_add(res,xx,yy,oo);
}

//Futuramente terá tiles e backgrounds! Ou não! XD

}
}
file_find_close();

ds_list_destroy(arquivos);
ds_list_destroy(pastas);
//end;

if directory_exists(working_directory+"\temp") {
screen_redraw();
draw_text(room_width/2,room_height/2,'Deleting folders...'); screen_refresh();

//Começo do "BatchScript" (por Ninja8086)
//Usado para deletar pastas silenciosamente... mwhuahuahuahua! ¬_¬
//Foi modificado um pouco por razões de espaço, e etc.
var runcmd, runvbs, script, tempdr;
tempdr = environment_get_variable('TEMP');
runcmd = tempdr + '\run.cmd';
runvbs = tempdr + '\run.vbs';

script = file_text_open_write(runcmd);
file_text_write_string(script,'rd /s /q "'+working_directory+'\temp"');
file_text_close(script);

script = file_text_open_write(runvbs);

file_text_write_string(script,'
set cmdprompt = createobject("wscript.shell")
cmdprompt.run "' + runcmd + '"'
);

file_text_write_string(script, ',0');
file_text_write_string(script, ', true');
file_text_close(script);

if file_exists(runcmd) and file_exists(runvbs) {
    execute_program('wscript', '"' + runvbs + '"', true);
    file_delete(runcmd);
    file_delete(runvbs);
}
//Fim do "BatchScript"
}

//Valores resetados, para não mudar o jogo
draw_set_color(0); draw_set_halign(0); draw_set_valign(0);

//"Go Go Go Pb"!
room_goto_next();
ATENÇÃO! Não sei o que eu pus aí dentro e nem se funciona direito. Coloque no Creation Code da room.

Aleatorizador.game:
Código:
data:application;base64,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
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://luizpontes.tk/

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por PedroX Qui 08 Nov 2012, 19:15

Finalmente, acho que achei uma solução. Sobre ela:

Não é a única.
Não é complicada demais.
Gera um jogo mais rápido que o normal.
Gera um jogo mais pesado que o normal, mas a pessoa baixa só o GMK.
É demorada.

O que você poderia fazer é compilar o GMK com o EnigmaDEV, que é uma IDE alternativa ao GM. Ela vem junto com o LGM, mas você não precisará dele pra isso. O que você vai fazer é compilar via Prompt de Comando.

Resumindo:

Baixar o Enigma e instalá-lo. Site: enigma-dev.org
Criar um programa que faz o Enigma compilar o GMK via linha de comando.
Opcionalmente, você pode usar o GMK Splitter.

Até!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por saim Sex 09 Nov 2012, 09:47

Eu não ia responder, porque o PedroX encontrou uma solução totalmente diferente e que parece definitiva. Mas teve um comentário que ficou rodando na minha cabeça:

luiz_eldorado escreveu:O jeito é ler todos os eventos de arquivos mesmo. Algo assim:
Código:
object_event_add(objeto,ev_draw,0,execute_file("lerarquivo.gml","objeto_draw.objev"));
No caso do meu jogo genérico, acho trabalhoso demais, porque já organizei minha cabeça pra trabalhar de outra forma. Mas é interessante, a idéia. Vamos aos prós e contras.

contras (ou "porque não vou fazer isso"): cada objeto tem vários eventos. Pode haver objetos com poucos (ou até nenhum) eventos, mas em geral, eles têm pelo menos 3 eventos (create - step - draw). Um jogo bom tem algumas dezenas de objetos (também não é regra, mas é comum). Daí, o número de arquivos gerados usando a minha forma de organização é multiplicado pelo número de eventos usando essa nova forma. Organizar-se no meio de tantos arquivos, debugar, achar a linha que causa o erro (principalmente o maldito "unexpected error") seria algo trabalhoso.
Mas estou pré-supondo que você planeje programar diretamente nos arquivos externos. Posso estar muito enganado.

Agora, os prós - ainda supondo que você planeje programar diretamente nos arquivos externos: Isso possibilita, talvez até facilite, a programação modulada!
Programação modulada é um conceito que eu ainda não domino totalmente, mas já postei um tutorial a respeito da máquina de estados finitos, que usa isso. É programar em pedacinhos de código que se conectam, um chamando o outro. A vantagem disso é que você pode pegar um trecho de código e aplicar em situações diferentes, diminuindo o tempo de programação.
Isso está ficando abstrato, deixa eu partir pra um exemplo. Pense nos inimigos do Mario. Sempre que usamos um exemplo em programação de jogos, o Mario aparece... Os goombas (aqueles bichos marrons) se movem de um lado pro outro e, quando batem em algum obstáculo, mudam de direção. Quando acaba o chão, eles caem até encontrar mais chão ou sair da tela. Os Koopas (as tartarugas) fazem a mesma coisa. A diferença está no resultado de pular em cada um deles (e nas sprites, claro).
Ora, poderíamos usar o mesmo step event pros dois objetos, mudando apenas a colisão com o Mario!
Aí vem outro Koopa, um que anda pulando feito uma gazela. Bom, ainda dá pra usar o mesmo step event, se o contato com o chão for um evento à parte. Aí, no create, colocamos uma velocidade vertical no bicho e, ao colidir com o chão, ao invés de aterrissar, ele pula de novo. A colisão com o Mario fica igual à do outro Koopa e temos 3 inimigos diferentes com uns poucos arquivos.
É claro que isso requer uma maturidade muito grande da parte do designer e do programador, mas que fica viável, fica.

Particularmente, eu prefiro gerar templates e modificá-los. Issa gasta alguns bytes (talvez K-bytes) a mais, mas pra mim fica muito mais fácil de administrar.

luiz_eldorado escreveu:@theguitarmester: Acho que não há comos sobre isso.
De fato. Pesquisei e vi que quando queremos uma nova linha, usamos o símbolo "#" e quando queremos o símbolo, usamos "\#". Tentei usar o mesmo raciocínio pras aspas, mas não funcionou. Pra muitas aspas, muitas variáveis ou muito trabalho, não vejo outra solução.
Código:
globalvar texto;
texto[0] = 'olá mundo';
texto[1] = '"' + texto[0] + '"';
texto[2] = '"' + texto[1] + '"';
object_event_add(objeto, ev_draw, 0, 'draw_text(20, 20, texto[2]);');
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por theguitarmester Sex 09 Nov 2012, 11:43

CONSEGUI UM JEITO DE USAR OS DOIS TIPOS DE ASPAS NO TEXTO, eu acho. óia propaganda!

nos testes que fiz aqui funcionou, Basicamente é isto, Você cria seu texto, Substitui uma das aspas(a que você no ecomeço e no fim) por algum outro texto que terá de ser sempre e apenas as aspas.Exemplo:
texto desejado texto="estava querendo fazer um "programa" que é só '1' arquivo, mas nele você pode "Lançar" ele irá extrair outros arquivos como "fotos", "DLLs", "Audio" 'basicamente' qualquer arquivo mas não conseguia devido ao problema das aspas, porque estes arquivos tem os dois tipos de aspas, assim ' e assim " "mas no jogo ficará assim:
Código:
texto="estava querendo fazer um "programa" que é só '1' arquivo, mas nele você pode "Lançar" ele irá extrair outros arquivos como "fotos",  "DLLs", "Audio" 'basicamente' qualquer arquivo mas não conseguia devido ao problema das aspas, porque estes arquivos tem os dois tipos de aspas, assim ' e assim "        "
use o FIND e REPLACE ainda em fase de programação e deixe seu texto assim:
Código:
texto="estava querendo fazer um <<aspas>>programa<<aspas>> que é só '1' arquivo, mas nele você pode <<aspas>>Lançar<<aspas>> ele irá extrair outros arquivos como <<aspas>>fotos<<aspas>>,  <<aspas>>DLLs<<aspas>>, <<aspas>>Audio<<aspas>> 'basicamente' qualquer arquivo mas não conseguia devido ao problema das aspas, porque estes arquivos tem os dois tipos de aspas, assim ' e assim <<aspas>>        "
agora quando executar o jogo faça o processo inverso, use o string_replace_all assim:
texto=string_replace_all(texto,"<>",'"')

Vou fazer uma Engine Assim, que nome eu posso colocar nela?
Usar 2tipos de aspas
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2209
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por Rodrigo Santiago Dom 18 Nov 2012, 16:20

Você entende até que muito bem de scripts, mais lembre-se que exportar um jogo com o código fonte fácil de ser editado é muito arriscado e a maioria das pessoas não deseja que seus jogos sejam hackeados.
É bem mais seguro .exe . Mais sua ideia é compreensível.
Rodrigo Santiago
Rodrigo Santiago

Games Ranking : Nota B

Notas recebidas : C + C + B
Data de inscrição : 28/07/2012
Reputação : 73
Número de Mensagens : 1281
Prêmios : [Ideia] .EXE? Não cara, .GAME! Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 3 Prata x 1 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Ideia] .EXE? Não cara, .GAME! Empty Re: [Ideia] .EXE? Não cara, .GAME!

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos