We could give an OCD award to players who win without taking any damage On Sun, May 23, 2010 at 6:46 PM, Alan Wolfe <alan.wolfe@xxxxxxxxx> wrote: > buildings are a dime a dozen and losing one isn't so detrimental that you > are going to say "oh shit better reload my save" > > There's 6 per tile and there will be about 60 tiles in this map that you > can build on so thats 360 buildings. > > I dont think anyone will feel motivated to have to take the route that you > are talking about, but someone (such as MONK from tv!) may be ocd enough > that they need a perfect score hehe > > > On Sun, May 23, 2010 at 6:32 PM, Nick Klotz <roracsenshi@xxxxxxxxx> wrote: > >> If we don't keep building damage, who is to say somebody won't go, "oh >> lets repair the buildings real quick", save/quit. BAM! Buildings are okay >> again. >> >> >> On Sat, May 22, 2010 at 4:30 PM, Alan Wolfe <alan.wolfe@xxxxxxxxx> wrote: >> >>> ok cool >>> >>> i bet we can handle keepin some global variables in sync to save that >>> stuff (: >>> >>> >>> On Sat, May 22, 2010 at 1:17 PM, Kent Petersen <kentkmp@xxxxxxxxx>wrote: >>> >>>> That's all we need. I'm cool with that. No need to keep monsters or >>>> building damage. >>>> >>>> >>>> On Sat, May 22, 2010 at 12:33 PM, Alan Wolfe <alan.wolfe@xxxxxxxxx>wrote: >>>> >>>>> Hey Kent (and whoever else is interested) >>>>> >>>>> I'm thinking for saved games maybe that we would only save... >>>>> >>>>> * What houses you had built in your town and where they were >>>>> * Which monster spawners have been destroyed / sealed. >>>>> * Any "state" information about the area, such as if the boulder has >>>>> been destroyed in the 1st map, and whether you have already killed the bat >>>>> boss or not >>>>> >>>>> Everything else would be lost in a save/load. so for instance when you >>>>> went into an area or loaded a saved game, there won't be any monsters >>>>> spawned yet, there wont be scorch marks on the terrain, there wont be >>>>> fires >>>>> burning (if we add stuff like that) etc. >>>>> >>>>> and im thinking too that when you go from one overworld area to >>>>> another, this is all the data that will be preserved too. >>>>> >>>>> does that sound ok to you? Is there any other information that you >>>>> think we should be saving? >>>>> >>>>> >>>>> On Fri, May 21, 2010 at 8:43 PM, Kent Petersen <kentkmp@xxxxxxxxx>wrote: >>>>> >>>>>> Interesting. You are right its not that complicated when you break it >>>>>> down >>>>>> >>>>>> >>>>>> On Fri, May 21, 2010 at 4:59 PM, Alan Wolfe <alan.wolfe@xxxxxxxxx>wrote: >>>>>> >>>>>>> Josh may change things but here's how i envision it (and how i would >>>>>>> do it if i were writing it) >>>>>>> >>>>>>> #1 - the version number >>>>>>> #2 - the hash of all the data stored >>>>>>> #3 - the "encrypted" data >>>>>>> >>>>>>> *The Version Number* >>>>>>> so writing the version number is easy. we'll have an int to store >>>>>>> the version number so the first 4 bytes of a save file will be the >>>>>>> version >>>>>>> number. This makes it so if the game wants to load a file and it knows >>>>>>> it >>>>>>> uses version 5, but the file says it's version 3, it knows it's >>>>>>> incompatible. You'll be setting the current version number in the >>>>>>> Data_Save >>>>>>> and Data_Load script commands. >>>>>>> >>>>>>> *The Hash* >>>>>>> A hash is kind of like a CRC or checksum. Basically imagine that you >>>>>>> looked at every byte in a chunk of data and added it together and that >>>>>>> number it gave you at the end was 42. 42 would be a hash of all that >>>>>>> data. >>>>>>> That is a really simple hash, we can use something more complex if we >>>>>>> want >>>>>>> like MD5 or something else. >>>>>>> >>>>>>> The data saved into the file is just name/value pairs where the value >>>>>>> can be a string or a number. When you set the global variable >>>>>>> "PlayerHealth" to 50, the name value pair is "PlayerHealth",50. So, we >>>>>>> make >>>>>>> a hash out of all of the name value pairs and then write that to the >>>>>>> file >>>>>>> next. What that does, is if someone tries to manually change a value >>>>>>> in the >>>>>>> file (like by using a hex editor), the hash wont match and we'll know >>>>>>> they >>>>>>> tampered with it. >>>>>>> >>>>>>> They could also alter the hash to make it match, but they'd have to >>>>>>> know how the hash was calculated (which they can see by looking at the >>>>>>> machine code in the exe...) but while this isn't perfect security, it >>>>>>> stops >>>>>>> 99.999% of the people out there lol >>>>>>> >>>>>>> *The Data* >>>>>>> Next up we need to write the data. we would just write all the name >>>>>>> value pairs into the file. If people open up the file, they would see >>>>>>> variable names like "PlayerHealth" and it would be really obvious that >>>>>>> it >>>>>>> was interesting data they might want to try to change. >>>>>>> >>>>>>> To further protect our save game files, i would use "xor" (exclusive >>>>>>> or) to xor all the bytes in the data against a constant. if you xor a >>>>>>> number by the same number twice, you get the original number back, so >>>>>>> simple >>>>>>> xor is a good way to do poor mans encryption (: >>>>>>> >>>>>>> So basically, we'd xor all the bytes in the file against 145 let's >>>>>>> say. That will jumble it all so that if people opened the file it would >>>>>>> just look like garbage. When the data is loaded, it'll be xor'd >>>>>>> against 145 >>>>>>> again so that it goes back to normal and we get our nice, readable >>>>>>> variable >>>>>>> names back. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Fri, May 21, 2010 at 4:43 PM, Kent Petersen <kentkmp@xxxxxxxxx>wrote: >>>>>>> >>>>>>>> I am totally interested. What more can you tell me >>>>>>>> >>>>>>>> >>>>>>>> On Fri, May 21, 2010 at 1:28 PM, Alan Wolfe >>>>>>>> <alan.wolfe@xxxxxxxxx>wrote: >>>>>>>> >>>>>>>>> i have some ideas, but im going to wait til the town stuff is more >>>>>>>>> worked out. >>>>>>>>> >>>>>>>>> basically anything that needs to be saved / loaded has to live in a >>>>>>>>> global variable, but its ok if some specific data gets lost, such as >>>>>>>>> scorch >>>>>>>>> marks on the terrain. Those guys don't need to persist across a >>>>>>>>> save/load >>>>>>>>> :P >>>>>>>>> >>>>>>>>> We can worry about that stuff later after we get it working, to >>>>>>>>> make sure things get saved and loaded correctly. >>>>>>>>> >>>>>>>>> josh is going to work on the actual saving and loading of the >>>>>>>>> global vars, and the file is going to be not human readable (ie >>>>>>>>> slightly >>>>>>>>> encrypted) and will be protected from tampering via a stored hash of >>>>>>>>> the >>>>>>>>> data being compared to hashing the data after load (if they dont >>>>>>>>> match you >>>>>>>>> know someone screwed with the file). more details available if you >>>>>>>>> are >>>>>>>>> interested, it's not too complex stuff actually (even if it sounds >>>>>>>>> complicated) >>>>>>>>> >>>>>>>>> >>>>>>>>> On Fri, May 21, 2010 at 12:51 PM, Kent Petersen <kentkmp@xxxxxxxxx >>>>>>>>> > wrote: >>>>>>>>> >>>>>>>>>> could be interesting. Do you have any save load plans? Is that >>>>>>>>>> going to be something we work on soon or not until the end? >>>>>>>>>> >>>>>>>>>> I do all of my saving in a csv format basically. Would you do >>>>>>>>>> something similar or is there more organization that goes into it? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Fri, May 21, 2010 at 10:25 AM, Alan Wolfe < >>>>>>>>>> alan.wolfe@xxxxxxxxx> wrote: >>>>>>>>>> >>>>>>>>>>> cool deal (: >>>>>>>>>>> >>>>>>>>>>> it's going to be interesting making sure our save / load stuff >>>>>>>>>>> works right with all the crazy data like how many enemies are >>>>>>>>>>> alive and >>>>>>>>>>> what their positions are, which buildings are damaged or destroyed >>>>>>>>>>> and all >>>>>>>>>>> the other stuff :P >>>>>>>>>>> >>>>>>>>>>> might be a lil work hehe >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Fri, May 21, 2010 at 10:21 AM, Kent Petersen < >>>>>>>>>>> kentkmp@xxxxxxxxx> wrote: >>>>>>>>>>> >>>>>>>>>>>> Yeah sounds right. >>>>>>>>>>>> >>>>>>>>>>>> On Fri, May 21, 2010 at 10:18 AM, Alan Wolfe < >>>>>>>>>>>> alan.wolfe@xxxxxxxxx> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> i would just include it into the main menu code >>>>>>>>>>>>> >>>>>>>>>>>>> then when they click "main game" (new game) it would call the >>>>>>>>>>>>> gamevars_clear function (that was defined in gamevars.lua). That >>>>>>>>>>>>> function >>>>>>>>>>>>> would do a data_clearvars() to kill all global variables, then it >>>>>>>>>>>>> would have >>>>>>>>>>>>> a data_createvar() for each global variable the game uses. >>>>>>>>>>>>> >>>>>>>>>>>>> since those functions dont exist yet, i think gamevars_clear >>>>>>>>>>>>> for now should just set some starting value to each global >>>>>>>>>>>>> variable used in >>>>>>>>>>>>> the game. Like it would set health to 100 or whatever the >>>>>>>>>>>>> starting health >>>>>>>>>>>>> is. >>>>>>>>>>>>> >>>>>>>>>>>>> sound right to you? >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Fri, May 21, 2010 at 9:59 AM, Kent Petersen < >>>>>>>>>>>>> kentkmp@xxxxxxxxx> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> I think that would cover it. How would you implement >>>>>>>>>>>>>> gamevars.lua. Would you just add an include for it in the config >>>>>>>>>>>>>> lua? >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Fri, May 21, 2010 at 9:08 AM, Alan Wolfe < >>>>>>>>>>>>>> alan.wolfe@xxxxxxxxx> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> cool deal. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I'm also thinking that... >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> #1 - We need a Data_ClearVars() function which will delete >>>>>>>>>>>>>>> all global variables. We would call this before loading a game >>>>>>>>>>>>>>> or creating >>>>>>>>>>>>>>> a new game to make sure no values persisted from one game to >>>>>>>>>>>>>>> another that >>>>>>>>>>>>>>> shouldn't be there. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> #2 - We need a function Data_CreateVar which you have to do >>>>>>>>>>>>>>> before you can read or write to any variable. If you try to >>>>>>>>>>>>>>> use a variable >>>>>>>>>>>>>>> without creating it, it will throw an error. I figure we >>>>>>>>>>>>>>> should make a rule >>>>>>>>>>>>>>> that we are only allowed to use this function inside of >>>>>>>>>>>>>>> gamevars.lua, >>>>>>>>>>>>>>> specifically in the Gamevars_Clear() function. This makes it >>>>>>>>>>>>>>> so all global >>>>>>>>>>>>>>> game variables are declared in one space, and if we mis type a >>>>>>>>>>>>>>> variable name >>>>>>>>>>>>>>> or try to use a variable that doesn't exist, it will throw an >>>>>>>>>>>>>>> error and >>>>>>>>>>>>>>> we'll see it. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> #3 - We'll need a Data_Save and Data_Load function for saving >>>>>>>>>>>>>>> and loading games, but i'm thinking those guys will take a save >>>>>>>>>>>>>>> game name >>>>>>>>>>>>>>> and a version number. This way, if you do something to the >>>>>>>>>>>>>>> scripts like add >>>>>>>>>>>>>>> or remove a global variable, and the save game data is no >>>>>>>>>>>>>>> longer compatible >>>>>>>>>>>>>>> with the script, you can increment the version number so that >>>>>>>>>>>>>>> Data_Load will >>>>>>>>>>>>>>> return failure if you try to load a save game of the wrong >>>>>>>>>>>>>>> version number. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I put these guys on the coding todo list >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Fri, May 21, 2010 at 8:35 AM, Kent Petersen < >>>>>>>>>>>>>>> kentkmp@xxxxxxxxx> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Ok, yeah that makes sense. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Fri, May 21, 2010 at 8:25 AM, Alan Wolfe < >>>>>>>>>>>>>>>> alan.wolfe@xxxxxxxxx> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> hrm how about making a file, something like "gamevars.lua" >>>>>>>>>>>>>>>>> and when they click "main game" on the main menu (which >>>>>>>>>>>>>>>>> should be "new game" >>>>>>>>>>>>>>>>> eventually hehe) it calls some function from that file such as >>>>>>>>>>>>>>>>> GameVars_Clear() which initializes all the game vars to sane >>>>>>>>>>>>>>>>> values? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Fri, May 21, 2010 at 7:54 AM, Kent Petersen < >>>>>>>>>>>>>>>>> kentkmp@xxxxxxxxx> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Think I should put the health variable in the ui.lua or >>>>>>>>>>>>>>>>>> what then? It only made sense to me to put it in the >>>>>>>>>>>>>>>>>> config.lua >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Thu, May 20, 2010 at 9:44 PM, Alan Wolfe < >>>>>>>>>>>>>>>>>> alan.wolfe@xxxxxxxxx> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> oh... config.lua is a special case lua file, it doesnt >>>>>>>>>>>>>>>>>>> have access to all the functions that the other scripts have >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> the reason is, it runs that file before anything about >>>>>>>>>>>>>>>>>>> the engine is set up. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Thu, May 20, 2010 at 9:41 PM, Kent Petersen < >>>>>>>>>>>>>>>>>>> kentkmp@xxxxxxxxx> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Bug? I don't think global variables are working. Check >>>>>>>>>>>>>>>>>>>> the config lua >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Thu, May 20, 2010 at 9:40 PM, Apache User < >>>>>>>>>>>>>>>>>>>> dhapache@xxxxxxxxxxxxxxxxxxx> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> User:korgath >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Message: I thought I checked in these files but it >>>>>>>>>>>>>>>>>>>>> looks like I didn't so I'm checking them in again. Sorry >>>>>>>>>>>>>>>>>>>>> if I did once >>>>>>>>>>>>>>>>>>>>> already >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> --tried creating global variable for life but it doesnt >>>>>>>>>>>>>>>>>>>>> seem to work >>>>>>>>>>>>>>>>>>>>> --added life ui to main map (once again life value >>>>>>>>>>>>>>>>>>>>> doesnt work) >>>>>>>>>>>>>>>>>>>>> --updated bat hold to pop out bats at a different rate >>>>>>>>>>>>>>>>>>>>> --fixed a type on bat >>>>>>>>>>>>>>>>>>>>> --fixed a typo on trollhut >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> <Files Changed> >>>>>>>>>>>>>>>>>>>>> U ActRaiser/Scripts/Enemies/OverWorld/Bat.lua >>>>>>>>>>>>>>>>>>>>> U ActRaiser/Scripts/Enemies/OverWorld/BatHole.lua >>>>>>>>>>>>>>>>>>>>> U ActRaiser/Scripts/Enemies/OverWorld/TrollHut.lua >>>>>>>>>>>>>>>>>>>>> U ActRaiser/Scripts/GameOverworld/UI.lua >>>>>>>>>>>>>>>>>>>>> U ActRaiser/Scripts/config.lua >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ============================== >>>>>>>>>>>>>>>>>>>>> Project 1 Dev mailing list >>>>>>>>>>>>>>>>>>>>> to unsubscribe, please send an email request to >>>>>>>>>>>>>>>>>>>>> demofox@xxxxxxxxxxx >>>>>>>>>>>>>>>>>>>>> Project 1 website: http://project1.demofox.org >>>>>>>>>>>>>>>>>>>>> Project 1 SVN repository: http://pyotek.com/project1 >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >