Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Brigand

Pages: 1 [2] 3 4 ... 7
Programming / Re: Writer needs Coder
« on: September 22, 2014, 02:33:58 PM »
Did you read that link? Gamemaker includes all the functions required to manipulate the following:

"stacks, queues, lists, maps, priority queues, and grids."

I never use them, I stick with arrays and use tons of heredity, but they are in there. Not just arrays.

Or are you saying that GM handles them poorly? Is that it? I wouldn't know...I do know other GM users that make use of them extensively. But maybe they are just used to the clunkiness.

There's another program coming along too, I've not used it, but it's a competitor to Gamemaker:

Also, of course, T-Engine.

I did read that link, but I must be explaining it poorly. I'll give you a simple example (that is probably already obvious to you):

Most OOP roguelikes have an 'actor' class, or something similar like that. Lets say you want to add a new monster to the list (or queue, or attack, or whatever) - it can be a new action on the stack, a new monster in the list, whatever, it doesn't matter: = new actor();

That's it. You can add a constructor that will instantiate the actor for you with default behaviors, and you can pass the monster type to direct the constructor at creation time (eg, actor("goblin");) If you want to delete a monster in the middle of the list, its as simple as =;

or if its at the end of the list = null;

and you're done - if the monster you remove no longer has an active reference, the garbage collector frees that memory (some languages make you do it yourself, but you can have a destructor to take care of the clean up - either way its a hell of a lot better way to do it than what follows). You can pass an object reference wherever you want, and each object can have whatever methods you want attached to them: (monster.take_damage(3);) You know all this - this is programming 101 stuff.

Contrast this with GML, and using arrays for everything. A monster then is referred to explicitly by an index into a bunch of arrays....a bunch of arrays that cannot be easily redimensioned, and have memory reserved whether they are used or not.


..... etc....

You now either have to have a capped number of actors, or reserve memory for a lot of creatures you may not be using. You have to iterate through the list to find what you want each time (not a huge big O, but it adds up) God forbid you want to copy a creature...then you have to laboriously copy every single array at a specific index, and unless you keep a position variable, iterate through the array each time to find a free index. If you add a field later, you have to go through all your code and update in every single place. There's no cohesiveness to the code. You have to iterate through an entire array every pass to see if there is an active actor at that index  UNLESS you compact the list of actors down and iterate through a set number each time - which requires copying arrays to remove gaps in the list every time a creature dies/leaves/whatever. And if you do that, it invalidates EVERY data structure you are using that references creatures by indexes unless you go clean them up every time too.

Yes you can do everything with GML's array based data structures that you can with OOP, but it would be a hell of a lot easier if they just allow you to make your own classes/objects, which is the entire point of what I'm saying. Trying to program a balanced binary tree using arrays? Holy crap, you could, but it would not be fun. 'Easily implemented' is the keyword. Even worse, GML also has arrays restricted to 2 indexes (2D)... full stop.  As opposed to a simple list/queue/whatever of objects with pointers to other objects in the structures which you can do in 30 secs with no support coded needed.
At the end of the day, its half a dozen of 1, or six of the other. If you program in a conventional OOP language (Java, C++, etc), you get the massive flexibility of an object oriented language but you have to write or use a potentially hairy 2d library (though there are some good choices out there that make it easy); if you use GML, you get AWESOME 2d graphics capabilities at the cost of being forced to use arrays for everything. There's another thread going now that talks about a system with heavy object interaction that might be worth looking at that you just couldn't do with arrays (you can't attach a behavior to an array index like you can with a class.)

If they have added this to the latest GML, then I stand corrected, and redact all of what I have said, but as of the last version I bought, none of this existed. It is a work in progress, and they have some really new nifty features each time I log in, but I haven't bought all the expensive available modules - I bought the first level package that unlocks all the standard features, but none of the add-ons. And whan I bought it, it wasn't called Gamemaker Studio, it was still Gamemaker 8.

Programming / Re: Writer needs Coder
« on: September 21, 2014, 11:35:00 AM »
Here are all of those data structures Brigand said aren't doable.

Maybe I just misunderstood what he was saying. But all of those things are in there.

sorry, I am pretty unclear in how I wrote that. You can always create these structures using arrays and filling them with indexes to the object; you just aren't  able to create a user defined object with fields and methods (and pointers to other user defined objects) - which is why I put easily implemented in quotes. Only having arrays to work with is wonky.

But, It does appear that they are constantly adding new features to gml, so it may be in the future. Maybe they have recently added this, but the last version I bought did not have oop support.

Programming / Re: Writer needs Coder
« on: September 19, 2014, 11:09:02 PM »
I use Gamemaker. It's totally doable but you DO need to know how to code. Absolutely. It turns a TON of chores into easy mode though. Hell I've been using it so long I barely remember how to begin making a game in C or Pascal.

Gamemaker is really great and does make anything to do with 2d graphics a snap (you can't beat it for rotating sprites, creating easy particle emitters, making media a snap, etc), but it has some strange limitations. Arrays are pretty limited, and are just about the only data structure you have to work with. There are absolutely no advanced data structures of any kind (no objects or even types/structs, which is a major bummer). By extension of no objects, there are no pointers, meaning no (easily implemented) linked lists, queues, trees, etc. I've seen a few extensions people have coded for it, but they are pretty wonky.

That being said, if you ignore the drag and drop interface, GML is at least vaguely similar in structure to C++ and Java, so it's a good starting point if you are wanting to learn.

I've got a hybrid Star Control-roguelike game around 50% done in Gamemaker, and the ease of the things it does well outshines its limitations. If they would just add some better data structures, it would clearly be the way to go for any 2d project, roguelikes included.

Early Dev / Re: The Temple of Torment
« on: September 08, 2014, 02:28:52 PM »
Been playing around with it a bit, and having some fun. I would like to get a little further in before I make any substantial comments, but 1 tiny gripe I have that would make playing the game so much easier - would it be possible to add a consistent cancel or exit button? It seems like to exit a conversation or leave a shop, the key changes each time, always being the last alphabetic character in a list of options. Maybe the escape button or space bar leaves the current dialog screen without confirmation, rather than having a variable command. I know its a minor thing, but it slows things down a bit, and forces me to read through a list of options (at least scan to the end) when all I want to do is get out of that screen. You could add a flag for really important messages to require a keypress, but if I just want to exit a conversation I accidentally or have already read, it would be nice not to have to figure out the key each time. Just a very minor quality-of-life quibble :)
Other than that, it seems pretty cool so far. I especially like the way your light source fades off in strength the further it is from the player. The tiles are quite nice as well - the overworld is particularly nice looking. I will add some more feedback when I have gone a little further. In the meantime, keep hacking at it :)

Thank you so much for taking the time to play and leave feedback :)

FIREPLACES are a huge problem. I cant even finish a single quest in a town. If the elder has a fireplace, he's guaranteed to die. In fact any NPC with a fireplace is guaranteed to die. They WILL walk into it and burn to death. So will your puppydog.

Yeah, I just found this one out last night. Apparently I broke it last release. It was pretty funny to see the villagers running around on fire. I need to add some flavor text where they scream when on fire...   Fixed, and will be in Fridays release.

Food is the other issue I'm seeing. I've found out how to reuse bottles to get water (at the ocean no less haha) to restore a bit of stamina, and getting new rations at the ship works,.. but corpses seem to be unusable. 'U'sing a corpse, unlike 'U'sing a ration, gives no endurance but just renames it to 'corpse' instead of 'goblin corpse' or 'panther corpse'. But the system at least somewhat seems to understand that corpses are food, because when you salvage a corpse, it gives the message 'you have salvaged x organic material from the RATION'

Now, not playing far but knowing there is crafting, I don't know if you have a way to use those 'organic material' to combine into rations if you have the proper skill.. and that would be awesome! But you should be able to consume corpses in a pinch, for less satiation than properly salvaging/butchering and making real rations. And that of course opens the door to special corpse effects if you ever want to go that route.

Just added in the ability to consume corpses, for an increasing chance to get sick the older the corpse is. I think i will add a cooking ability to reduce this chance.

Not sure yet what I want to do in terms of special food effects. Don't want to blatantly copy Nethack with corpse consumption. I am open to any cool ideas you might have :)

In the mean time, workaround for not being able to get food 'on the go' which is REALLY needed for long journeys (quest to go check out this place faaaar faaar away and far from where you can bring the ship.. you need tons of food)... is exploiting the ship.

For now you can get up to 3 free rations by going to the ship. You can then enter the ships hold and store those rations in the chests. Leave the ship. Enter the ship again and you'll be given 3 more rations. Do this a few times to make a food stockpile and you can actually do some traveling without getting stuck unable to move. Once food is more readily accessible (corpses, and probably eventually making real rations?), this exploit could be fixed, perhaps, by making ship rations a special sort of ration (S. Ration?) which could not be put into the chests on the ships hold, preventing the exploitation of it. Especially seeing as you could probably exploit them for gold too. Though I've yet to see a merchant.

Good catch, I hadn't considered making a stockpile, so this will have to be altered a bit. I am going to make crew foraging limited by time (X food per day, etc, depending on how well they forage.)

The idea behind food is less to kill you, than to limit how far inland you can explore until you gain better abilities, or acquire a stockpile of food for exploring. Thats why wells can replenish you infinitely; they provide a radius from which you can explore without expending food, as does the ship.

I had considered going all the way to the optional 'custom' output via some callbacks hooked into a scene (e. g. to a layer). Inside callback you would have a different drawing context where you can do things differently because it does not buffer drawing commands. And from the API perspective it becomes very clear that mechanics are different because mode change is intentional and obvious. However, it has a whole new lot of problems not completely thought out yet so the priority of this is fairly low.

As for UI, wouldn't it be enough to just prepare a few tiles for borders and corners?

Yeah, I could just use tiles to make the border and other effects....especially if I could scale and rotate the tiles  ;)

Quote from: Brigand
Similar to question 2, is there a function to simply copy an area of the screen and paste it somewhere else? (It wouldn't need to retain all the layers; purely just a pixel copy of a designated space, placed into it's own layer in a different spot.)
As I mentioned above, pixel copy is almost impossible and layers do make a problem. However, it indeed may be a useful feature, will think about it. What do you intend to use it for exactly?

I was just thinking in terms of performance, which probably isn't an issue :) If you have 10 enemies and the player, and each is composed of 10 layered tiles (body, armor, boots, cloak, weapon, helmet, effects, etc), along with other layered/composed parts of the scene... If you could save each off beforehand you could just redraw a single tile reducing the number of tile look-ups/copies by a factor of 10.

Again, this was just me thinking through a future problem - the reality is I probably would get to the point I described above and find the performance almost completely identical in both cases.

Either way, still very well done - whatever the ultimate answer is, it won't deter me from checking this out and seeing what I can do with it.

Thank you again for your hard work, and please keep at it - even if people don't seem to respond or give much feedback, there are some of us who still are very grateful for your efforts.

Wow, played around with this over the weekend, and it seems to be almost exactly what I am looking for - very nicely done! Makes me want to abandon my current project and start a new one using this. I like libtcod, but I only want that display functions and not all the other stuff it brings along (along with a bit of a learning curve.)

3 quick questions:

1) Do you plan on including any basic drawing functionality? We're just talking simple colored lines, or maybe an ellipse function. (For drawing UI borders and such.)

2) When using composition to stack tiles on the same location on the same layer, is there any way to make a copy of the composed tile and save it off as a temporary (or even permanent) tile that can be reused, or would I always need to rebuild (recompose) the tile each move?

3) Similar to question 2, is there a function to simply copy an area of the screen and paste it somewhere else? (It wouldn't need to retain all the layers; purely just a pixel copy of a designated space, placed into it's own layer in a different spot.)

Sorry if these question are already answered - I have been reading the API reference on your webpage, and I have a feeling they are already answered and I am just not searching for my answers with the right phrase.

Again, very nice library - please continue to develop it :)

Traditional Roguelikes (Turn Based) / Re: LambdaHack/Allure of the Stars
« on: August 12, 2014, 02:05:21 PM »
Any chance for a Win binary? Would love to try it out.


I'm not sure. I had visited him previously and sold him about four or five items, but nothing that should have cost him thousands of gold (unless something was secretly worth more than it seemed), plus I had bought some things in exchange which should have at least partially balanced it out.

I'll watch out for this happening again, maybe I can spot a pattern.

Hmm, after a little digging, I am gonna guess you had visited this vendor in the past, and were returning to him at a later date. I have some code that has the vendor buy and sell while you are away, and it wasnt subject to buying when it didnt have enough gold - hence a massive debt. However, if you were actually playing the Infinite Dungeon, I'll have to look closer.

I like the new changes (regional races, targetable abilities, etc). Good stuff.

I just came across an oddity.

I might be misunderstanding it but I think what's happening here is that somehow the shopkeeper had -2002 gold when I arrived, and I can't make any transactions at all when he has negative money, even to buy from him. I just want to buy that potion! :P

Oooh, good catch, thanks! I have corrected my code to allow transactions that make money even if the vendor is in the negative. The real question for me is how did he get to -2002 in the first place? I don't see where youre trying to sell 2000 gp of equipment, and he cant spawn with negative gold.

Thank you Samildanach

Another thing you could try is submitting a false positive report to Sophos.  Apparently this can actually work.
Sure enough, it did indeed work! Sophos no longer has a problem with Solstice.  8)

Cool, thanks for doing that for me. I appreciate it a lot. Did the font inclusion work by any chance, or still the old characters?

Traditional Roguelikes (Turn Based) / Re: Sunless Sea (Now at Emerald) $
« on: August 01, 2014, 06:03:09 PM »
Has anyone had a chance to play this yet, and has an opinion? It looks pretty fun, but I would like to hear from someone who's played it before spending the $$.

I added some code and included the font file with a custom name to the data folder (it should add the resource automatically (its only there at run time)). Would one of you be willing to see if v0.0.37d actually looks like the picture I posted above with the correct symbols for towns/caves/submap objects/etc?

I think it should work - my screen is displaying everything correctly and there are no errors - a poll of local resources shows the correct custom font name. I'm just not convinced it's not still using the terminal font in the C:\Windows\Fonts folder.

If it does actually display correctly for you, then it will probably also fix the weird spacing on the condensed display as well.

Thank you

Early Dev / Re: Witch Blast (roguelite dungeon crawl shooter)
« on: July 31, 2014, 07:49:18 PM »
This is pretty fun - did you develop it in GameMaker Studio?

EDIT: Nevermind, I saw that you had the source and just downloaded and took a look myself.


Here's the picture of the exact moment it happens. It seems that it happens the moment '@' comes out of the 'V' or I enter the yellow tile where the '@' is standing.

AH! I think I found it! (Maybe) Thank you so much! I would never have found that just looking at the code, and the nature of the bug made it un-reproducible the way I was testing (it was definitely some malformed code - I just don't know why it didn't throw an error for me - maybe Win 8 enforces the type checking more strictly - I believe VB6 will enforce type variant on expressions of mixed type.)

On a side note - the town and caves aren't supposed to look like that. I'm using the Windows terminal font that came with the system - apparently I was wrong in assuming it was available on all systems. I will investigate and see if I can figure out whats going on.  What version of Windows are you on, by the way?

Thank you again!

Pages: 1 [2] 3 4 ... 7