|
Post by hugheth on Apr 17, 2012 1:44:34 GMT -8
Helloo! I'm pleased to announce that Dizgruntled is not dead (as some of you may thought ) It's just that with uni it has been hard to find lots of time to work out it! I've had some time to work on it and I'm pleased to announce that I'll be releasing version Alpha 2.5.0 early summer (probably towards the end of June or July) so you can prepare to crack out your summer gaming faces. I'll be posting updates and screenshots of the new release over the next few months! I'm currently massively re-writing the engine to cope with the network gaming and lag problems from previous versions, and it's currently looking very promising Here are some of the exciting features to look forward to: - Network play with Matchmaker (up to 16 players per game!)
- Different colour gruntz
- Fully fledged level editor (using TiLeD Map editor), with tile trait editing for your own tilesets
- Lua scripting support (thanks to GooRoo's suggestion!)
- Improved documentation of the source / development tools
- Full saving and loading of games
- Our old favourite mini-map
I'm also planning on releasing one other (hopefully original) feature for the game, but I need your help. WHAT NEW GAMEPLAY FEATURE DO YOU WANT TO SEE ADDED TO GRUNTZ? REPLY BELOW TO MAKE YOUR DREAM COME TRUE!And of course many more things! We're still holding out to find an easy way to read ANI files or workout the animations from the original frames from the REZ package to give Gruntz tools and toys.
|
|
|
Post by hugheth2 on Oct 2, 2012 3:01:40 GMT -8
Tomalla you can help me through the ANI file format here We can also discuss JSON things
|
|
Zu
Retired Staff
Posts: 752
|
Post by Zu on Oct 2, 2012 4:32:30 GMT -8
I don't exactly remember what features Dizgruntled already has, but nonetheless, here are my suggestions for absolute must-haves: - Ability to create custom help notez. - Magic Wand gruntz have differently colored hatz and wandz depending on what spell they have. - Ability to create new tilesetz. (This would mean that I could FINALLY use my Virtual Reality tileset, which still remains just a set of unused PNG files.) - Ability to create timerz for Silver Pyramidz and stuff that show a numeric value for how long something will last. I'm not sure how they would be made, but I was thinking about them being displayed on the level as a special, impassable tile. - White switch dedicated specifically to things that use SecretMagicTriggers (aka magically changing tilez) but aren't a secret. - Ability to alter the speed of all gruntz on the level. (Sometimes, you just want to make all gruntz move faster because of the level's big size, but can't do it in any way other way than give them the SuperSpeed powerup.) - Removing the limitation that if ANY grunt with the warpstone dies (or even gets converted!), the level ends; instead it should be that it happens if ALL warpstones are lost. Or, if the level is meant to have the player collect all four pieces at once, the level ends if all copies of the same warpstone piece are lost. (This would require to add visible gemz to the warpstones carried by gruntz in order to distinguish them from one another.) - Some additional pyramid colours that work just the same as the green ones. Cyan, pink and brown could suffice. (It gets very confusing sometimes when the only normal on/off pyramidz you have are green; the red onez are complicated to use because red switchez affect ALL red pyramidz on the level.) Alternatively, would could have an option to put numbers and symbols on top of pyramidz and next to corresponding switchez to help people remember which ones do what. - Ability to stack multiple colored brickz, instead of a single one with two normal ones. It would be also very nice to have some additional kindz of brickz, at least for having bigger color variety: * Green: heals everyone in the range * Pink: gives toys to everyone in the range * White: freezes everyone in the range These would be my personal absolute must haves.
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Oct 2, 2012 5:20:10 GMT -8
- Zu, if everything will go just right, you will be able to add custom notes to your levels in ... vanilla Gruntz Along with a custom tile sets. Just give me some time. - Silver Swich timers - any visible timer placed on the map will look oddly. I'd prefer other solution: making a switch depress itself after a timer sequence is done. That way we'll be at least notified when the sequence ends. Also, the less new and ... weird ideas added to the game, the better. Sweet news about the ANI files and PID files Do you have any handy way of extracting the hotspot data from the PID files? This is wonderful! I'd really like to get the data into configuration files in JSON format, if you know how to output that. I guess what I'd need is for each ANI file, an equivalent json file that lists the properties of each frame / sounds in a subsection. And then for each folder of PID files, a json file that lists the offsets of each frame Early days though, I think there's a lot of optimization that can be done i.e. in most cases a single ANI file can be associated with a set of images. Can you tell me: - whether you can work out how export into JSON format, else tell me how you're reading the ANI and PID files - whether you think it would be practical to have a configuration file for each ANI file, associating sound timing with pictures, their offsets and their animation delay, so that I could eventually bake this information into a single config file for each tool / toy? I'm looking at a timeline of weeks / a number of months for getting it all working, so really no pressure About exporting: I don't have to know what JSON format is ( not like if it was a big deal, it's simple enough ). Just write a simple template of how a JSON file should look like, where should I put keys, values etc. As far as I can see: as of now you store all of the frames of one animation as a single PNG file ( in vanilla Gruntz each frame was a single file ). It's a good way to keep every frame synchronized with each other - make every frame the same size and adjust them within a single animation. Doing it manually will be tiresome tough. An automated way of doing this would come in handy. HOWEVER, there's a nasty side effect - each animation will have the frames of a different size. In this case it's impossible for a game to know how exactly should it align sprites of an animation along a tiled map. Alternatively grab the PNG frames as they were just exported from PID files and ... merge them together so that all of the frames form a row. Don't resize any of the frames. That way the size of a single frame in pixels will vary, but we could add this information in our animation file itself along with the hotspot data. It's a win-win. If it doesn't convince you, here's another alternative: use all of the frames as single files ( just like original Gruntz does ). They could be packed with WinZIP for instance - it'll be more efficent then. I remember Java having methods making it fairly easy to get such files from ZIP packages. Or not. Whatever. What keys should we include anyway? Frame ID, timing, sounds, frames' hotspots, any paths maybe ( like where sounds should be stored, frames etc. ) ... anything else? Also, what animations should I include? That way I can just prepare a sheet of JSON data which you could use right off the bat. Cheers
|
|
|
Post by hugheth2 on Oct 3, 2012 5:43:49 GMT -8
---------- shovelz.json --------------
{ "idleNorth": { "frames": 4, // This means there are 4 frames to the animation "durations": [100, 100, 100, 200], // Duration of each frame in milliseconds "offsetX": [0, 0, -1, 4], // The x offset from the 'anchor point', as you called it "offsetY": [0, 4, 2, 1], // The y offset from the 'anchor point' "green": true, // Whether the gruntz are green in the frames "effects": [ { "frame": 3, // Which frame the effect happens "type": "sound", // The type of effect caused by this animation "name": "blahSound" // The name of the sound to play }, { "frame": 5, "type": "damage", // A process will listen for effects at frames and delegate the appropriate action to take } ] }, // Other animations similar to above "idleSouth": { ... }, "hitEast": { ... }, ... }
|
|
|
Post by hugheth2 on Oct 3, 2012 5:45:28 GMT -8
Hi Zu! Thanks for your suggestions, I'll add them to the list Tomalla, I think you're right in thinking keeping the animation frames separate is the best idea, as they are all different sizes. See if you can make sense of the suggested file format above, and whether you think I've missed anything
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Oct 3, 2012 8:04:33 GMT -8
- Right ... I didn't think of the colors of the Gruntz. Will you make separate animation sprites for all of the possibilities? For instance Or maybe a vanilla Gruntz solution: using a different palette for each image ( which "paints" Gruntz in different colors ), however in the case of PNGs it's not possible - they don't work with indexed colors as PIDs or PCXs do ( maybe we could find a workaround, using a similar method? ). The point is: what is exactly "green" parameter for? In this state it's pretty ... useless.
- I like the idea of the events. In ANI files there are only sounds though. Every other event which interacts with the game ( like damaging, spewing a cannon ball ... ) must be added manually.
- How will be the frames stored? You didn't include any parameter telling us what frame IDs the frames will have and in which directory they will be placed in. How will the game know?
- The above, but for the sounds as well.
|
|
GooRoo
Administrator
Owner Administrator
I luv Gruntz!
Posts: 7,425
Display Name: GooRoo
|
Post by GooRoo on Oct 3, 2012 19:14:37 GMT -8
Green is a middle-of-the-road color that mixez easily with Red and Blue to achieve other colorz. I believe all of the Gruntz colorz were chosen because of the ability to add in the RB to the G (default) in order to create Orange, etc.
|
|
|
Post by hugheth2 on Oct 4, 2012 0:25:02 GMT -8
Sorry to confuse you about Gruntz colours and the green parameter. The reason that this is needed is because a few of the animations are drawn with orange gruntz and not green ones. We need to know this manually so that I can pick the right palette to substitute from. Don't worry about including this for now as it can be easily added manually.
Regarding events, that's exactly my thinking. If we could auto-generate the sound events that would be great, and then add other ones manually later on
I've made the assumption that all the animations used FRAME000, FRAME001, FRAME002... but I'm guessing this may not be correct? I suggest two different possibilities, depending on what can be found in the vanilla game: replace "frames" with "startFrame" and "endFrame" parameter, or if animations sometimes skip out in-between frames, replace "frames" with an array i.e. "frames": [1, 2, 5, 7, 10]. I'd appreciate it if you could strip off the "FRAME" and leading 0s as these will just clutter up the config files, but whatever is easy.
Regarding where sounds and graphicz are located, my previous idea was to keep them in a directory structure that didn't require the paths to be stored i.e. tool animation X has folder hitNorth that contains the frames for a grunt hitting north.
However, the more I think about it, the more I'd like to preserve the original REZ structure, at least for the parts of the game that are directly copied from the original. For a start, it means I can stop distributing the REZ file if we ever run into copyright problems and instead automate the rez extractor to do the dirty work if the player already owns a copy of gruntz.
Perhaps each animation should have a "path" field that locates the frame directory to look in. For example, I'd like config files to be in the toolz/ or toyz/ folders while the original rez files to be kept in rez/. So I could imagine that for grunt animations it knows to look in rez/GRUNTZ/ANIS/NORMALGRUNTZ etc. (whatever the directory structure is) and the path can just be "WALKNORTH". I'll have to have a proper look through the directories to work out what would be best..
Sounds are a little easier. I'll likely preload in sounds with a different config file so we can normalize volume etc., and each sound will have a unique name that allows us to reference it in the effect name
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Oct 4, 2012 4:47:05 GMT -8
Can't you make all of the animations uniform? Why to make some of them feature orange Gruntz while the others will be with green ones? And, you still didn't answer my question - how are you going to color your Gruntz ( getting Gruntz' sprites in cyan, pink, red and so on ).
You're thinking right - in a source folder you might have frames ranging from ( for instance ) 100 to 900, and the animation would pick every second one and repeat them three times. There's no rule - it's the animation files which tell the game which frames and in what order should be they played.
Tell me if I'm getting it right: each folder represents one Grunt type, i.e. Shovel Grunt. Inside of it there's an animation file ( shovel.json ) and folders 'idleNorth', 'idleSouth', ... , 'hitNorth' and so on, which contain frames? Where will be the sounds located at then? Remember that it's the best idea to have them shared between animations, as they are in original Gruntz - a swing sounds for example can be used in Shovel Gruntz' animations, Goober Straw Gruntz' animations and many, many others. If so, it's better to have them categorized in separate folders. Then a path should be supplied in animation file along with a sound name.
It's partially covered by my previous point.
When you will figure out what paths will the game files be in, let me know.
|
|
|
Post by hugheth2 on Oct 4, 2012 7:59:24 GMT -8
Sorry to confuse, there are frames in the original game's resourcez that depict gruntz in orange when they are carrying something that is green, so that those objects don't become multicoloured! Gruntz are coloured in-game using an image filter that rotates the hue and lightness of the gruntz to a particular shade. I could try extracting the exact colour values from the palette files, but they look fine to me Okay, so I think having a frames array would be good i.e. "frames": [2, 3, 5, 8] I think we're safe making the assumption that we either want the animation to always loop, or not at all, and usually it is clear from context i.e. walking loops, hitting someone doesn't Regarding the folder structure of graphics and sounds, as I said I think I'll have a folder for the original extracted rez files. I'll get back to you with examples of what the paths should be like. Do you know whether the ANI files output paths as such? If so, what are they relative to?
|
|
Zu
Retired Staff
Posts: 752
|
Post by Zu on Oct 4, 2012 8:03:36 GMT -8
I have seen that in, for example, Might & Magic VI-VIII, character sprites use green for any parts that are supposed to be recolorable. This seem to apply also to Gruntz; so there's probably some sort of mechanism in the game that recognizes this green color as something where specific colors are supposed to be applied by the program, without the need to duplicate animations for each color. No idea how it works though...
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Oct 5, 2012 2:02:09 GMT -8
Sorry to confuse, there are frames in the original game's resourcez that depict gruntz in orange when they are carrying something that is green, so that those objects don't become multicoloured! Gruntz are coloured in-game using an image filter that rotates the hue and lightness of the gruntz to a particular shade. I could try extracting the exact colour values from the palette files, but they look fine to me. I'm sorry to ... disappoint you, but the game uses palettes for changing colors. And I've just double checked that. One thing I'm interested with though - could you please tell me where did you find these "frames in the original game's resources" which have orange Gruntz in them with green parts? Maybe we're talking about two different games ANI files don't have any relevant paths in them ( except of sounds of course ). Only frames IDs like 1, 7, 100 and so on. There is one field though, which presumably has something to do with image sets, sadly it doesn't affect the game mechanics or game sprites whatsoever which only proves that the game chooses the source folder for animations. Cheers
|
|
|
Post by hugheth2 on Oct 5, 2012 2:16:19 GMT -8
Haha I meant that I will use image filters to change the gruntz to a particular shade in the sequel I've seen the palettes in the original game... I seem to remember there were orange gruntz for a particular toy animation where the toy had green bits. When I get my computer back to uni with the rez file on it I'll tell you! Don't worry about paths then, those can be left out of the file and I'll put them in the config files later on. Do you need anything else from me at this point?
|
|
|
Post by Perfect Grunt on Oct 5, 2012 5:46:05 GMT -8
- Network play with Matchmaker (up to 16 players per game!)
Just as an idea (I still hadn't had the time to take a look at the sources): Will it be possible to separate the game core from the graphics -- or, to put it in another way: To run the game server with a CLI only, for example on a rented vserver?
|
|
|
Post by hugheth2 on Oct 5, 2012 9:22:45 GMT -8
Don't see any reason why that wouldn't be possible!
|
|
Tomalla
Designer
General Modder
Posts: 525
|
Post by Tomalla on Oct 6, 2012 3:04:24 GMT -8
Haha I meant that I will use image filters to change the gruntz to a particular shade in the sequel I've seen the palettes in the original game... I seem to remember there were orange gruntz for a particular toy animation where the toy had green bits. When I get my computer back to uni with the rez file on it I'll tell you! Don't worry about paths then, those can be left out of the file and I'll put them in the config files later on. Do you need anything else from me at this point? Oups, sorry then, I completely misunderstood you there. Anyways, the method is resourceful in my opinion. You're not going to develop your own image format, are you? If not, you'll be forced to make two versions of every frame - the first being the actual contents with Gruntz ( I'd prefer the Grunt there to be gray, it's easier to be tinted then ), and the other defining which pixels should be tinted ( a "template" ). The other method of having green parts in an image recognizable by the game is not quite fully understood by me. I mean, how the game is supposed to tell all of the green areas apart - which should get recolored and which shouldn't? Now ... I can browse through all of the ANI files and extract the data there. There's a problem though - the image set paths. In order to separate the animations ( because they are being shared multiple times - I've mentioned it already before ) I'd have to supply them with different image sets containing different frames ... manually. One of the reasons why image sets are important is because they contain proper ... offset values. So practically the only difference between animations idleNorth, idleSouth, idleEast ... would be the offset values. Maybe I should just export the raw animation data and you will do the rest from there? Or maybe you have an idea of how to easily deal with this problem?
|
|
|
Post by kijanek6 on Oct 8, 2012 3:00:10 GMT -8
What's the point of using exported PNG's? It would be much better to load assets directly from original REZ - you don't have to mess with hotspots and other things, and it'd be much more efficient. And also there's no copyright abuse (to be exact, not so "violent" copyright abuse - but that way is completely fine from Monolith viewpoint).
|
|
|
Post by hugheth2 on Oct 8, 2012 3:22:10 GMT -8
Hi Tomalla,
From my experiences with using the PNGs they only ever use green for Gruntz bodies. In the case where there are other greens, the gruntz are coloured in orange. If there are images you know of that aren't like this, I'll extract and use pallettes the in the original game. For now, I just select all colours in the Gruntz images that are contained within a particular hue and cycle these round to another hue. I don't think this is a big issue for now - I'd rather get the animations working in Green and worry about colours later!
I think I'm coming round to understanding the problems you're having with the animations. My understanding is that the sequel needs these bits of information:
* Offsets offsets of each frame (originally stored in the PID) * Ordering of frames and their sound effectz (stored in the ANI files) * How the animations relate to toolz, toyz and the source directory of frames (hard coded in the original game)
If you could deal with the first two bullet points, I can focus on the 3rd. The main need is to get this data in a form that the sequel game can work with, so as you have more understanding of the original game's way of dealing with this then I'm more than happy for you to work out a file hierarchy that exposes this information in JSON format.
My suggestion is that you produce a JSON file for each ANI file that effectively replicates their functionality. Then, for each PID, we need the offsets - perhaps these could be stored in a single file per directory containing frames?
Then I could work out how these animations relate to toolz/toyz, and the particular directory to use depending on directory etc.
Kijanke6,
I would love to extract information directly from the REZ file. However, you were the only person on the forums who knew how to do this at the time, and then you didn't reply to any of my messages for a 18 months! So I'm trying to find a way to get this implemented with more active members of the community who are happy to use their skills to help out. Obviously if you have any pointers as to how to use the rez file directly it would save Tomalla and I a lot of effort and be much cleaner, but that depends on whether you're happy to help out with reading information from PID / ANI files inside the REZ format.
|
|
|
Post by kijanek6 on Oct 8, 2012 3:42:02 GMT -8
Well, I was kinda "out-of-the-business" of hobby projects for that time. Sorry 'bout that. I'm not speaking about pointers - I've knowledge about almost every format and in most cases - I can load and save them. I can help you with that stuff, but with one BUT. You won't release or give my "intel" to 3rd party teams/people. It's exclusively for you. And also formats-specific code cannot be published (open source or any other form of publishing). I'm not interested in Gruntz at all, so I can help you, however I'm very interested in Claw-related terms, so I don't want those formats and documentations got published to persons Claw-related.
|
|