Menu

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.

Show posts Menu

Messages - Darius Poyer

#21
I made this:


I might try to do something with the background. For now I'm alright with this.

EDIT
new:
#22
voting for Cleanic
#23
It's for a kind of tileset declaration. It's fairly complex and I like having the readability I get now, There are also a lot of unique cases that prevent me from using while loops to automate all of it anyway, so I'm probably going to keep it this way even though ill probably end up with 1000+ lines of code.

I hope your right dkh.
#24
I remember reading somewhere on the AGS wiki about some limit to how many variables could be declared in one function, I think it said 4k? I'm wondering if this is still relevant to the current version of AGS. I'm doing things like this;

Code: ags

    t[7].r1s =s[1].b2; t[7].r1e =s[1].b3;
    t[7].r2s =s[1].b3; t[7].r2e =s[1].e ;
    t[7].r3s =s[1].s ; t[7].r3e =s[1].b1;
    t[7].r4s =s[1].b1; t[7].r4e =s[1].b2;
    t[7].entr1s = 547; t[7].exit1s = 578;
    t[7].entr2s =   0; t[7].exit2s =   0;
    t[7].entr3s =   0; t[7].exit3s =   0;

    t[8].r1s =s[1].b3; t[8].r1e =s[1].e ;
    t[8].r2s =s[1].s ; t[8].r2e =s[1].b1;
    t[8].r3s =s[1].b1; t[8].r3e =s[1].b2;
    t[8].r4s =s[1].b2; t[8].r4e =s[1].b3;
    t[8].entr1s = 547; t[8].exit1s = 578;
    t[8].entr2s =   0; t[8].exit2s =   0;
    t[8].entr3s =   0; t[8].exit3s =   0;

    t[9].r1s =s[2].s ; t[9].r1e =s[2].b1;
    t[9].r2s =s[2].b1; t[9].r2e =s[2].b2;
    t[9].r3s =s[2].b2; t[9].r3e =s[2].b3;
    t[9].r4s =s[2].b3; t[9].r4e =s[2].e ;
    t[9].entr1s = 121; t[9].exit1s = 151;
    t[9].entr2s =   0; t[9].exit2s =   0;
    t[9].entr3s =   0; t[9].exit3s =   0;

    t[10].r1s =s[2].b1; t[10].r1e =s[2].b2;
    t[10].r2s =s[2].b2; t[10].r2e =s[2].b3;
    t[10].r3s =s[2].b3; t[10].r3e =s[2].e ;
    t[10].r4s =s[2].s ; t[10].r4e =s[2].b1;
    t[10].entr1s = 121; t[10].exit1s = 151;
    t[10].entr2s =   0; t[10].exit2s =   0;
    t[10].entr3s =   0; t[10].exit3s =   0;


it works for now, but I will need that multiplied by about 20. I'm just wondering if I am liable to run into issues.
#25
Quote from: Ghost on Thu 02/02/2012 13:13:25
Yuup, create a file and write your data to it. You must make sure the game can find your file: in Vista, for example, you can't acess the game's folder when the user installed it in Program Files. The manual suggests to always write to the Save Game Folder with a special tag:

Code: ags

File *output = File.Open("$SAVEGAMEDIR$/temp.tmp", eFileWrite);
if (output == null)
  Display("Error opening file.");
else {
  output.WriteString("test string");
  output.Close();
}


You can read and write strings and integer values, and in combination with structs it's not too hard to create a custom save/load system. You TOTALLY lose the comfort of AGS's interal save/load stuff, however- like player positions, the value of sound and music sliders, and even if objects have been turned on or off.
Depending on WHAT you want to save, you may need to make sure the game updates its data depending on stuff saved in your file.

If you just want to keep trackof games played and the like, however, it's pretty simple.


Is there anything I should be aware of in terms of file extensions, does it even matter unless I use something already established?
I mean, I suppose that the extensions could be anything at all really. I recall the game vvvvvvv having the extension *.vvvvvv for example.
Or is there something special about the *.tmp format?
#26
I haven't had this issue myself, but I would go over the general settings, look under the "character Movement" section see if messing with some of that improves it.

Could be that you have some empty frames at the beginning? or empty directions, or too many directions, like 8 while only 4 are set.

seems like a basic Occam's razor kind of deal though.
#27
Hello there,

I am working on a game, it will feature permadeath but still some save function so you can leave and continue your game. I would like to somehow store data beyond the actual gamesaves like total time played, deaths and how you died etc.

I suppose I could get a bit clever with autosaves and autoload something on start, but it seems messy. I also thought about saving to a text file and reading the lines back but that to seems like a bad solution. what can I do?
#28
I'll vote for number one.
#30

    ~A ship in space~

I don't have a story to go with this, But I do have a fear. I'm terrified of the ocean, the feeling of not knowing what could be below you in deep water. I am also afraid of space for the same reason, but in space it's worse. So a ship in space.
#31
I'm going to vote for number two, it's got a lot of character.
#32
Say the full scene has a full width of about 1000 pixels. You position everything based on the x position of a target object and subtract it from everything else. I would set it up like this

Code: ags

int wagon = 0;
int mountain = 230;
int cabin = 200;
etc...


Then anywhere
Code: ags

if(mountain>wagon) mountain = mountain - wagon;
else  mountain = wagon -  mountain;

if(cabin>wagon) cabin = cabin - wagon;
else cabin = wagon - cabin;

//to move
wagon++;

//display 
//it's simportant to never set the position of the wagon.
buttonMountain.X = mountain;
buttonCabim.X = cabin;
and so on...


very messy code there, but i think that would basically work.
#33
I was really blown away by the demo. I really like the puzzle style and the art is really well realized, damn good work.

I have a nitpick, it may be interesting.

I don't understand why you have the character say "I think I'm safe", or whatever it was after he exits the wardrobe/dresser once the monster is gone.

If I understands it's intended purpose correctly, it's a part of making the player understand the current situation.

That is obviously very important, but at the same time you have a plethora of ways in witch you communicate this.

You see the monster walk in, you see the monster banging on the metal door. The monster turns around and walks out. The player exits the wardrobe thing and speaks.

The whole segment with the monster banging the door is just such a great piece visual communication with the player. You understand that the monster has some intelligence because you see that he made an assumption. The monster was clearly wrong so you feel like you bested him, when the monster then walks out, you understand why that is and because you feel like you've outsmarted him somewhat the immediate danger dissipates. Having the character speak at this point is entirely redundant and I feel it takes away from a great scene.

On top of this of course you have the crystal to tell the player he is safe, or that there is danger in the current room.

I played a bit of clock tower on a snes emulator, and if I recall correctly, there are bits where you are chased by a monster. At the end of those, if you managed to not get killed, the monster would go back out the room. You would then walk back into the same room the monster walked into. It sends a mixed message and I like how you've addressed that here. It's like the monster drives you forward and into corners.
So when the character tries to walk out the room the way he came in, where the monster is, he tells you it would be dangerous and refuses. That's great, and once again, why does he have to talk after exiting his safe place?

You've got so many good things here, I feel you really need to focus on the subtleties because the game speaks volumes outside of dialogue and in this case that little bit of dialogue screws over a lot of better things that are already there. You have the opportunity to convey a feeling non-verbally but instead I felt beat over the head by it in that moment.

MASSIVE DISCLAIMER: It' could have been for the demo because you need to give new players as good a chance as possible, some didn't even read the how-to-play thing so, there's that.
#34
Critics' Lounge / Re: Is this font alright?
Fri 30/12/2011 14:19:21
Quote from: ProgZmax on Fri 30/12/2011 06:08:34
There's some oddly inconsistent properties to the overall design, like the hard shaped A while the B has soft edges, meanwhile the P and R have all soft edges.
When it comes to low-rez fonts I find that the notion of consistency becomes very abstract, I'll get into that later. But I guess you meant that the B has a hard shape, and the A is soft? I also recently changed the P and R to be harder. This image is the one I mean.

Quote from: ProgZmax on Fri 30/12/2011 06:08:34
The important thing with fonts is that even if you're going with whimsical or pixel fonts you want the letters to look like part of a cohesive unit.  This means establishing some mental ruleset for how you will design them and then sticking to it even for the lowercase letters.  So if the uppercase letters/numbers/characters are all hard-edged you want to translate that to the lowercase, if they are all very soft then you do the same, or if they are some combination of the two (or if they are italicized, etc).

Basically, I'm just advising you to focus on consistency.
I believe that the consistency exists. According to this structure I derived as a result of my design for the 'e' character,


But you can't establish any strict rules when it comes to a font this small. It has to be flexible in favor of readability.

Quote from: ProgZmax on Fri 30/12/2011 06:08:34
Edit:  I went ahead and made two quick variations of your font, one sticking to the high horizontal line cutting the letters and the other using a bent line that allows for more style and fanciness.  The last small font is a miniature version of the uppercase font before it just to give you an idea of what you can do if you want to maintain maximum readability with your font even in lowercase (some people find a's, e's,you's and v's particularly hard to spot with low-res pixel fonts so this is one workaround).



With small pixel art, especially fonts, you need to work with the fact that you are going to have very sharp lines. Black on white hard edges create visual distortion.

A shape like this:

ends up reading like the font is narrowing towards the high point of the circular element. This changes a lot depending on resolution, at a resolution high enough It becomes less of a problem, but I'm working towards a font that very readable in 320 200, where having a small font matters.

You seem to have changed the 'k' as well. The bottom thickness gives the character weight at the bottom, actually helping readability.

Readability is a fascinating idea with fonts. Take the dyslexie font for instance, making a font that's readable to dyslectics is useful for everyone, if you've ever read any large passages in the dyslexie font you would find that its very comfortable.
That font basically tries to make individual letters distinct. I believe this works with the fact that the human brain is really good at detecting patterns (in-fact it loves them too much) so when letters are unique they each become equal distinctions in a word, making it easier to read.

Of course you may not find that the letters are all that important, but you can read this perfectly fine:

"Aoccdrnig to a rscheearch at Cmabrigde Uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoatnt tihng is taht the frist and lsat ltteers be at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit porbelm. Tihs is bcuseae the huamn mnid deos not raed ervey lteter by istlef, but the wrod as a wlohe."

That kind of makes the individual distinction of letters even more relevant.

I'm not sure what you mean by this:
"The last small font is a miniature version of the uppercase font before it just to give you an idea of what you can do if you want to maintain maximum readability with your font even in lowercase (some people find a's, e's,you's and v's particularly hard to spot with low-res pixel fonts so this is one workaround)."

Quote from: Kweepa on Fri 30/12/2011 04:17:13
Lovely font.
I'd change the B and the S so that the middle horizontal lines in all the capital letters are the same elevation.


I guess the misconception here is that the primary element is the medium-line. Again I want the perceived weight of the characters to be low, It generally translates to having big circular elements at the bottom, so they are actually organized by putting an open space of four empty pixels at the bottom-most appropriate point of any given letter.

#35
Not sure what the question is.

Morally, no, make your own.

Legally, it's copyright infringement.

Technically, just download the images, open up AGS. Open the sprites window. Left click the background and select "Import Sprite form file". Select the sprite you downloaded, its in the game.

As far as image editing software. I personally love aseprite
http://www.aseprite.org/
#36
This is great, so many questions answered. I will have to go over my function declarations to make them more specific from now on. I really didn't know about return types, I'm used to Javascript with being able to just catch return values with a variable.

Anyway, thank you both. You have helped me immensely.
#37
man, that^ must be all wrong...

Simpler question. How can I use a variable that's a part of a module struct, declared in the header and set in the main module script, in a room script?

I have this now, basically:

.ash
Code: ags

struct ModuleName{
  String Name;
  import static function setString();
};


.asc
Code: ags

ModuleName moduleName;
static function ModuleName::setString(){
  moduleName.Name = "PlayerName"
}


ROOM
Code: ags

ModuleName moduleName;

function room_Load(){
  ModuleName.setString();
}
function room_AfterFadeIn(){
  lLabel.Text = String.Format("%s",moduleName.Name);
}


But i get a Null reference error on this line:
Code: ags
lLabel.Text = String.Format("%s",moduleName.Name);


whats going on?
#38
Critics' Lounge / Re: Is this font alright?
Thu 29/12/2011 18:25:15
Yeah you are definitely right about that Matti.

I updated it all, images and download links.
#39
Thanks Monkey


So I would have to do this.
Code: ags

//header
struct ModuleName{
  import static function setVar();
  import static function getVar();

  int var;
};
struct Vars{
  int number;
  int number2;
};


//module
ModuleName Module;
Vars variables[2];

static function Module::setVar(){
  var = 5;
  //or
  //variables[1].number = 4;
}
static function Module::getVar(){
  return var;
  //or
  //return variables[1].number;
}


And call the get function in order to use the info? and whatever I set in an earlier function within the module is then sort of global?

could i return a whole struct? I guess I'd have to instantiate a copy somewhere in order to catch that. Is it possible to set a whole struct in one go?

Like:
Code: ags
structName = structname2;
#40
I'm wondering how module variables are stored.

I would like to declare global-esque variables in my module headers, but I am not sure that's really possible.

For instance, I am using a lot of structs for data and my modules basically look like this:

//Module Header
struct Data{
 int data1;
 int data2;
};

Then in the actual module script i begin by instantiating that struct

Data something[4]; or Data something; w/e.

That then becomes a local variable... Could I make it global and persistent somehow? how would I access it from other scripts, do I have to declare it in some other way?

I am a bit confused as to how and what I am asking, but I hope it's not too confusing.
SMF spam blocked by CleanTalk