Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411430 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 20, 2024, 02:27:53 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsEven the Ocean (Behind the Art series started!) OUT NOW!
Pages: 1 ... 5 6 [7] 8 9 ... 87
Print
Author Topic: Even the Ocean (Behind the Art series started!) OUT NOW!  (Read 318104 times)
aberrantmind
Level 2
**


View Profile
« Reply #120 on: May 19, 2013, 05:41:25 PM »

good track man, I really dig when you post them up.
Logged

Kurt
Level 5
*****



View Profile
« Reply #121 on: May 19, 2013, 05:59:08 PM »

made some fanart for ur game. i hope u lyke.

Logged

melos
Level 10
*****


View Profile
« Reply #122 on: May 19, 2013, 06:26:16 PM »

good track man, I really dig when you post them up.

thanks dude!

made some fanart for ur game. i hope u lyke.

</monalisa>

thx kurt
Logged

play hydlide 2
mushbuh
Level 9
****


Epic Laughs await you, traveler *tips steampunkhat


View Profile WWW
« Reply #123 on: May 20, 2013, 09:07:55 AM »

PREE M C A
ITS FUN TO DEVLOG THE PREE M C A

also why is she named even i thought her name was real
Logged

melos
Level 10
*****


View Profile
« Reply #124 on: May 21, 2013, 12:52:31 PM »

cuz cuz cuz well we'll explain that a bit later. but jon was working on this school project, character's name is even and there are some themes there he wants to work into this game, and I agree that it should work fine!



not that many thrilling updates...just working on some levels
Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #125 on: May 21, 2013, 09:36:45 PM »

Today:

* Addded "presets" for sprites - useful for when an entity has two or more different behaviors (easy example: cannon entity shoots dark bullets or light bullets at different speeds.)
* Finally added parsing for readin in my own data format ("SON"), which is just a stripped down object notation. I noticed I should do this after parsing a bunch of random flat file formats for things - animation data, mappings for tileset data, etc. (Code below)
* Talked to Jon abit on world stuff. should be exciting to start working full time when we're out of school!
* Other little editor thingie s(fast scroll in the editor, condense metadata to be easier to create)



a day or two ago

- copy and pasting of entities
other crap

now time to play a lot of CONTACT for the DS Smiley


for anyone who wants to read in "son" files (there is no writing, the idea is just that you hand-write these data files), these read in nested HaXe dynamic hashes with floats/ints/strings

It uses lines starting with "#". Empty lines might blow up, didn't test

you can easily add any type of data by adding to the switch statement - i'll add arrays as needed, etc - the "extract_quote" function i wrote myself, you add whatever you want

No parsing of tabulated things, might blow up. this was really just done fast for the bare minimum i need.

It reads in a file, and for every object in it, adds it to a hash which is returned. so a file lke this

{ Bulbasaur
{ move1
name s "Razor Leaf"
damage i 100
cooldown f 15.2
}
type s "Grass"
single s "Nope, sorry"
level i 5001231023
}
#blahblahblah more objects

would result in a dynamic hash with one key-value pair, key = Bulbasaur, value another dynamic hash with keys "move1", type, single, level, etc.


Code:
	
public static function parse_SON(raw_SON:String):Hash<Dynamic> {
var lines:Array<String> = raw_SON.split("\n");
var line:String = "";
var tokens:Array<String> = [];
var hash_queue:Array<Hash<Dynamic>> = [];
var cur_hash:Hash<Dynamic> = new Hash<Dynamic>();
for (line in lines) {
if (line.charAt(0) == "#") continue;
tokens = line.split(" ");
tokens[tokens.length - 1] = tokens[tokens.length - 1].split("\r")[0];

if (tokens[0] == "{") {
hash_queue.push(cur_hash);
cur_hash.set(tokens[1], new Hash<Dynamic>());
cur_hash = cur_hash.get(tokens[1]);
} else if (tokens[0] == "}") {
cur_hash = hash_queue.pop();
} else {
var key:String = tokens[0];
var type:String = tokens[1];
switch (type) {
case "i":
cur_hash.set(key, Std.parseInt(tokens[2]));
case "f":
cur_hash.set(key, Std.parseFloat(tokens[2]));
case "s":
cur_hash.set(key, extract_quote(line));
}
}
}
return cur_hash;
}


I'll rpobably write a blog post on this later
Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #126 on: May 23, 2013, 03:10:58 PM »

okay i didn't do much yesterday except make this awful generic npc object which half owrks.

i've been playing through

CONTACT

for the DS and finishing a HW assignment so that took up some time.

going to finish CONTACT today and maybe write about it.

Logged

play hydlide 2
dukope
Level 3
***


View Profile WWW
« Reply #127 on: May 23, 2013, 09:16:43 PM »

It reads in a file, and for every object in it, adds it to a hash which is returned. so a file lke this

{ Bulbasaur
{ move1
name s "Razor Leaf"
damage i 100
...

FWIW, this looks a lot like JSON, which Haxe parses natively. haxe.Json.parse() gives you a dynamic object instead of a hash, but that can be reflected into a nice typed object easily. The only downside I can think of is that your string key names might need to be quoted as well:

{ "Bulbasaur": { "move1": { "name": "Razor Leave", "damage": 100 }}}

Personally I'd say that's worth it. You won't have to maintain a custom format and you'll get more flexibility and better error handling out of the deal.
Logged

melos
Level 10
*****


View Profile
« Reply #128 on: May 23, 2013, 10:21:29 PM »

It reads in a file, and for every object in it, adds it to a hash which is returned. so a file lke this

{ Bulbasaur
{ move1
name s "Razor Leaf"
damage i 100
...

FWIW, this looks a lot like JSON, which Haxe parses natively. haxe.Json.parse() gives you a dynamic object instead of a hash, but that can be reflected into a nice typed object easily. The only downside I can think of is that your string key names might need to be quoted as well:

{ "Bulbasaur": { "move1": { "name": "Razor Leave", "damage": 100 }}}

Personally I'd say that's worth it. You won't have to maintain a custom format and you'll get more flexibility and better error handling out of the deal.

Yeah, I had noticed things had been fairly similar. My thinking was I wouldn't be using the whole feature set ... or something ... I think my thinking might be naive, but it is working fine at the moment. If things get too hairy with my reinvented-broken-wheel then I'll probably look into using JSON. 

Lucas, do you know anything about getting all of the blend modes to work with a cpp target? Or how rendering works off the top of your head and if it's impossible, etc, should I do it myself in software
Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #129 on: May 23, 2013, 10:36:44 PM »

actually...i really should do this for the entity data...hm
Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #130 on: May 24, 2013, 12:27:23 PM »

well, i will move over if i need to. the cruddy writing/reading for that is already done though (as for most other things - animations, dialogue, map data, song triggers/scripts) , so this might be something I just end up doing in the next project.

well I also figured out encryption, at least for the entity data. it's just a substitution cipher, but over numbers and letters and capitalized versions, so it's a pain in the ass to reverse, I'd assume. but i guess if someone wants to reverse it that badly, go ahead..I assume you could just look through the game binary for the key anyways. the point was just to prevent easy tampering/ruining the game for someone

nn;CKAS"Adciti%qGGi]C7>y:Co:C7:uLxCqXqBGiB(XO@[0Ck6=vBqO =[LC=k##=X#[>0Ck6=vt(G[:CBWiOBqt([ur>Ctq=B@k([7CBWv6]B[0ru>CBWvq#([7r>C=k#]q=([f>0dciti%qGGi]C7xx0C7uLC>uxuuxCqXqBGiB(XO@[0Ck6=vBqO =[LC=k##=X#[>0Ck6=vt(G[:CBWiOBqt([ur>Ctq=B@k([7CBWv6]B[0ru>CBWvq#([7r>C=k#]q=([f>0dciti%qGGi]C7ys:CL0C>0yoouCqXqBGiB(XO@[0Ck6=vBqO =[LC=k##=X#[>0Ck6=vt(G[:CBWiOBqt([ur>Ctq=B@k([7CBWv6]B[0ru>CBWvq#([7r>C=k#]q=([f>0d%E#C7>LxC7ouC7y70:sC#iWi<([70Ctq=B@k([7d%E#C7:L0C7uLCL00y0oC#iWi<([70Ctq=B@k([7d%E#C7:00Cux0CyL:y:oC#iWi<([70Ctq=B@k([7dJX(]<@$]+C7:00CxLCux:Lo>C#W<B@k([0Ctq=B@k([0dn;uCKAS"AdKit(%EqXBC7uLCu>:CL7:77udKit(%EqXBC7xuxCyy:C>>L>xod%E#C7y7uCusuCx7yyxC#iWi<([70Ctq=B@k([7d%E#C7uo:Cyy:C7xLu:oC#iWi<([70Ctq=B@k([0d%E#C7>y:Cy:LC77>usoC#iWi<([70Ctq=B@k([0d%E#C7>:LCy:LC7oxLy>C#iWi<([70Ctq=B@k([0d%E#C7>>uCy>uCoL07>uC#iWi<([70Ctq=B@k([7d%E#C7>LxCy>uCys:>s0C#iWi<([70Ctq=B@k([0d%E#C7>LxCy:LCxo:7y0C#iWi<([70Ctq=B@k([7d_iW(]iA]q<<(]C77u0Cx7:C7L::7xC(XB(][97xy:N>x0N7>yLN>xx9CX](XB(][uCtq=B@k([7CX](IqB[7C(IqB[97xLsN>009d"iq=(MiGGC7:o:Cy>uCx7700yCOvqG#](X[99Ctq=B@k([0CX((#(#1(X[:xC(X(]<@[0d"iq=(MiGGC7suLCy>uCxyx>s7COvqG#](X[99Ctq=B@k([0CX((#(#1(X[:xC(X(]<@[0d_iW(]iA]q<<(]C70uxC7s:Csy>LxLC(XB(][970s:Nus0N7yo0Ny>u9CX](XB(][uCtq=B@k([7CX](IqB[uC(IqB[970uoNus7N7x>sNy>u9dJX(]<@$]+C7u>uCxxuCu>oysuC#W<B@k([0Ctq=B@k([0d$]+KGEBC7y:0CxxLCs>7LoxCtq=[7COvqG#](X[9x7700y9dciti%qGGi]C7uo:C>uLC>u0x>xCqXqBGiB(XO@[0Ck6=vBqO =[LC=k##=X#[>0Ck6=vt(G[:CBWiOBqt([ur>Ctq=B@k([0CBWv6]B[0ru>CBWvq#([7r>C=k#]q=([f>0dciti%qGGi]C7L>:C>7uCosy>osCqXqBGiB(XO@[7Ck6=vBqO =[LC=k##=X#[>0Ck6=vt(G[xCBWiOBqt([ur>Ctq=B@k([0CBWv6]B[0ru>CBWvq#([7r>C=k#]q=([f>0dciti%qGGi]C7L0LC>uLC:osL:0CqXqBGiB(XO@[0r>Ck6=vBqO =[LC=k##=X#[>0Ck6=vt(G[:CBWiOBqt([ur>Ctq=B@k([0CBWv6]B[0ru>CBWvq#([7r>C=k#]q=([f>0dciti%qGGi]C7s:0C>uLCLsyL0LCqXqBGiB(XO@[0Ck6=vBqO =[LC=k##=X#[>0Ck6=vt(G[:CBWiOBqt([ur>Ctq=B@k([0CBWv6]B[0ru>CBWvq#([7r>C=k#]q=([f>0dJX(]<@$]+C7yxxCo:C7x>u0:C#W<B@k([0Ctq=B@k([7d$]+KGEBC7::>Cu>LCx0uyu7Ctq=[0COvqG#](X[9xyx>s79d"iq=(MiGGC7youCxxLCsLyosyCOvqG#](X[99Ctq=B@k([0CX((#(#1(X[:xC(X(]<@[0d$]+KGEBC7LLLC>xxCsu7sy>Ctq=[7COvqG#](X[9sLyosy9dJX(]<@$]+C7>>uCxxLCL0s07sCtq=B@k([0dJX(]<@$]+C7:0yC>7:Cuso7ouCtq=B@k([7dzEE]C7LLLCy>uC>o>L0:C+(vitqE][0C#(=B1I[uoC#(=B1Wik[9K)$"J%cS_JS9CB@k([0C#(=B1@[yyxdzEE]C7:Cux0CLL7yxoC+(vitqE][0C#(=B1I[0C#(=B1Wik[9AJKA9CB@k([0C#(=B1@[0d%(gCL7C7oxC>:u>s7C#q][uC+=k#[x0C.kiBB(]X[0Ctq=B@k([0CW+[xC.qXB[0rsdj;uCKAS"Ad
Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #131 on: May 26, 2013, 10:27:16 PM »

i got to work a bit on this other little project of mine this weekend. did some family stuff. got to work on music a tiny bit the other day. mostly distracted by school, but i managed do some FUUUUUUUN stuff with saving entity data to disk and stuff...kind of..

like, fun stuff like this

changing maps, I need to update the structure that stores the entity data for that map. but only in memory, because when you die you need to reset to whatever the entity state was at the time of death (which is stored to disk). Save points also need to update the in-memory structure. Saving at a savepoint writes to disk. As does saving in the editor...

blah, weird edge cases like that.

tomorrow i'll do one of the last boring things i've been putting off, handling patching of level data with bugfix updates - so if i move something aruond in my level data, an existing save file will pick it up and change as needed. should be straightforward.


also got to work a little on a level today.
i don't really know what i'm doing.
Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #132 on: May 27, 2013, 01:38:35 PM »

Managing entity dat awith an editor and people playing the game is more of a hassle than I originally had thought.

But it's done now!

So some properties of objects will differ from the "shipped" copy of the game. Like - a door being permanently open. Etc. That is basically af lag in a property of the object that gets saved.


Now when you die you need to reset the entity data / global state back to the last time you saved..which isn't that hard, when you do save in-game you just write this all out to disk. Then when you die, you reload from there. Reloading involves patching the shipped entity data, so we need to look for changes in properties...so that happens whenever you die and respawn, or load the game from the menu. But you can cache a copy of the most recent patched thing to not have to repatch stuff everytime you die and reload (For faster death reloads).

...okay so this isn't that exciting, it's really just boring infrastructure. but it needs to be done when you have a lot of different maps and lots of little objects that can have some arbitrary little state variable that needs to be saved into a save file..




Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #133 on: May 27, 2013, 01:39:53 PM »

Anyways, the last "mega irritating" thing to do is make sure modding loads and saves correctly, and add a mode for locking editing of regular level data. blah. i'll do that later, want to work on the actual game a bit.

I'm also marking the devlog as 10% done since the infrastructure is finally finished for the main game. for the most part.
Logged

play hydlide 2
mushbuh
Level 9
****


Epic Laughs await you, traveler *tips steampunkhat


View Profile WWW
« Reply #134 on: May 27, 2013, 02:53:51 PM »

Anyways, the last "mega irritating" thing to do is make sure modding loads and saves correctly, and add a mode for locking editing of regular level data. blah. i'll do that later, want to work on the actual game a bit.

I'm also marking the devlog as 10% done since the infrastructure is finally finished for the main game. for the most part.

that is like the best feeling

ever
Logged

melos
Level 10
*****


View Profile
« Reply #135 on: May 27, 2013, 07:23:58 PM »

i lied about infrastructure. well not really.

lol npc scripting

uh, but, life is good. why? because now adding a new npc with no scripting (one animation, one set of dialogue) is just adding a few lines to a file and adding a generic object in game and changing one property.


this was a pain in the ass with anodyne.


the shadow of mod support looms overhead.
Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #136 on: June 01, 2013, 11:27:06 PM »

i didnt work on this much this week because I was busy fixing ui/ux stuff in the iOS and android ports of Anodyne. In theory I can finish up that port stuff tomorrow, but we'll see
Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #137 on: June 03, 2013, 02:42:10 PM »

Jon drew a mockup player sprite.

YES

hmm...

in my head,

this is feeling exploratory in an ocarina of time sense, but with slightly more nonlinearity. the dungeons that exist/planned feel sort of like those dungeons. at least in my case - Jon's levels will likely have a different feel to them than mine, just from personality and the like. but we still want to keep a focus on having to balance energy as a main focus for making it through these dungeons.

I've been thinking about my game design style - it is a little early to say I even have a style, maybe it's just a comfort zone. I'm not sure. I think I naturally gravitate towards larger adventures with separate modules of areas, that are interesting on their own, and also have something more interesting as a whole. But for puzzle design, maybe I'm lazy - and it's an excuse, me saying that I don't really have an interest in doing these great, well-thought-out puzzles, but ratherj ust kind of naturally designing a dungeon as whatever. I guess there's a lot of ways to do games.
« Last Edit: June 03, 2013, 02:52:12 PM by seagaia » Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #138 on: June 07, 2013, 06:35:51 AM »

UPDATES well I had to fix some iOS things but it's been in approval for a bit (apple)...going on 3 days.

i also have finals to deal with so I've been out of it. But after 3 hours from now back to work. Jon has started working on the player sprite. Oh wiat, I did some music work yesterday.It feels like it might not fit, be too...cinematic? I don't know.
Logged

play hydlide 2
melos
Level 10
*****


View Profile
« Reply #139 on: June 07, 2013, 11:23:12 AM »

what i was working on for the curious -

http://tindeck.com/listen/gdzq

I like the melody/harmony, but I think as is it's arranged too regal-y, too "cutscene"-like. I'll probably re-do it, but keep this sitting around in case it's needed elsewhere
Logged

play hydlide 2
Pages: 1 ... 5 6 [7] 8 9 ... 87
Print
Jump to:  

Theme orange-lt created by panic