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 - pslim

#1
Quote from: Valentijn on Sat 28/05/2011 22:55:59
Quotebut it happens quite often that you hardly know anything about the person you're playing for, or what led you to the exact moment when the game begins

I really agree, actually. Maybe it wasn't the amount that was the problem, maybe Jack's wistful angst and mountain talk just didn't connect with me.  :=
#2
Just finished this yesterday, my boyfriend and I played through it together. It was fun, we liked the story, and as someone else already mentioned, it's cool and immersive to get to follow the threads of different characters as we would in a movie.

What we liked:
-really strong sense of storytelling
-well-crafted suspense that feels very much like a horror movie
-interesting, likeable characters who seem three dimensional even though we only get to see them in this one situation -- we particularly liked Sal and the way that he is used to point out that behaving badly while under psychological distress doesn't make someone a worthless or evil person
-for the most part the puzzles were logical and intuitive
-the whole complex with the endings was a great way to end a horror movie/game and make it about something more than just running away from axe murders, kudos
-the general level of the art was good, we thought -- the models were good, and the animations were better than anticipated based on past experience with people using 3D art in a 2D point-and-click game
-the What Puzzle Am I On? button on the GUI was very useful and appreciated  :D
-for the most part, the feedback you get from trying to use items on the world and on other items is informative and gives you a pretty good idea of whether you're on the right track or not

What we thought could be improved next time:
-it's worth noting Jack is a tad Gary Stu-ish -- he kind of functions as the narrator and so has weirdly complete knowledge about caves, for instance, and even though you get to play some of the other characters (which was a lot of fun), Jack is pretty much the only one who is going to get them out of the situation alive. Granted, it's a horror game, and in horror films there is usually only one guy who performs all the feats of heroism that rescue everyone who gets to live to the end, but he just really gave off the sense of being the avatar of the game's creator rather than one of the people trapped in the situation. This is sort of exacerbated by the fact that his skin texture is much higher res than anyone else's.
-the art assets, while good individually, are a bit mismatched -- Jack's face, as mentioned, is a lot more realistic in texture than everyone else's, and Gordy's model is not quite as human as the rest, particularly the face; the photographic backgrounds work fairly well usually but their rendering doesn't match the character model renderings in style and so the characters tend to leap out at you from a dark, pixely world that they don't seem really grounded in. Also, Sal's pants model kind of gives the appearance that he's wearing an adult diaper and when the puts his hands on his hips it appears he's holding up said diaper.  :D
-I thought there was a little too much exposition at the very beginning, before we know Jack or what's going to happen or have really become invested. The magic really begins when Jack starts interacting with the other characters, as their differences of opinion and personality and the stress of the accident cause conflict immediately. I would suggest trimming back to the introductory narration and letting the character interaction fill in the details we need to know before we play.
-the Last Supper painting REALLY seems like it's part of a puzzle; I don't know how many times I went back to that thing trying to figure out what it was for.

Probably the thing that was the most problematic, for me, though, was that in order to have them not walking around like slow-pokes all over the place (and I had to go back and forth between the cave and the house a few times, for instance) I had to turn the speed up, which was an option, but then in the action sequences, before I realized I had a chance to affect the outcome, it was already over. Obviously I could go back through and play it again and switch to low speed when I know an action sequence is about to happen but after trying to get past the wolf several times the legit way, I sort of lost interest in arcade aspects -- but then you're sort of locked into only one ending, I think? Just putting it out there.


Anyhow, hopefully this is useful to you in some way, and hopefully you continue making games, woo.  :)
#3
Critics' Lounge / sprite shading, advice
Thu 26/05/2011 11:35:25
Hey all.  

I've been struggling with establishing a sprite style for my game for a while and was hoping somebody might have some tips or insights.



I used to do some pixel art, but I'm really rusty and having trouble figuring out where to shade the pants and jacket. The jacket is supposed to be kind of a windbreaker, but it's also a sci-fi prison uniform, sort of. The idea is that all of the prisoner characters are issued a set of standard garments, which they then modify and adorn as they choose, but the player character is new and relatively unadorned in that way. The pants are supposed to be straight-legged, not denim, and not probably as tight as they look right now.  :-\

Ultimately I want to be able to match the pants and jacket to the rendering style of the face, although right now I'm just trying to work out the basic planes. I'm also not married to the colors, but because the background palette is probably going to have a lot of dark browns and dark metals, I'm reluctant to use traditional pants colors like black or brown, and any darker blue just seems too much like blue jeans, I think.

The pose could be more natural, too, but I'm not sure how to make it that way. I don't really want him to be in a hugely expressive or action-ready pose, though, just relaxed.

Any paint overs or advice would be very much appreciated, thanks.


edit:



I've been working on it some more. I decided against the rolled-up sleeves since I wanted the jacket to be a little thicker than made sense with that. I'm happier with most things, but I still don't really feel comfortable with the torso shading at all. I would like to make him less boxy and avoid having him look too athletic but I'm still kind of struggling with the overall shape of the torso. Also, the arms hang weird, in a different way from the weird way they hang in the first one, but I'm not sure what's wrong with them.
#4
The code was more intended to help me figure out how to organize (and also communicate) what I was trying to do than to actually DO anything, and I'm certainly not attached to that particular method over something more useful.

Also to clarify, yes, the player is intended to choose the verb first, then the object. The problem was, I didn't know how to go about adding attributes and properties to existing objects. Your example is very helpful, thanks a lot. I tried something similar early on but it didn't occur to me to use the character ID numbers and I wrote myself into a corner without really knowing what was unworkable with what I was doing.

The reason I didn't initially try to handle the interactions individually for each object in the mouse click functions for the object was that I wasn't sure how to do that without just pasting essentially the same code in each object, largely because I wasn't sure if you could put functions in a struct or how to accomplish it if you couldn't.

If I understand you, you're saying I can make a struct array for characters, storing their attributes and flags, and put the verb functions in there, then call them from the character interactions? Would that be a good way of handling it?
#5
My partner and I have been trying to design an engine for our game. It is somewhat inspired by Chris Crawford and his "verb thinking" and storyworlds, but takes the form of a point and click adventure.

I've been modeling the data organization in c++ with a fair amount of success, at least according to what I set out to do -- we're just learning c++ so there are probably much better ways of doing what we're trying to do, of course. At this point, though, I'm uncertain about how AGS structs work and how to use pointers in AGS, so I need some help figuring out how to translate the logic into AGS.

The system is based on verbs (not unlike the MI interface in some ways). I'm going to post the code I've written up modeling the behavior of one of the verbs, pilfer, although the flow should be pretty much the same with all the verbs.

What it's supposed to do:
1. register which verb has been chosen (in AGS it will be set with mouse clicks, obviously, which isn't a problem for me)
2. register the target of the verb (which character, object, etc)
3. do the chosen verb's function to the target
4. register the target's response (I haven't put that in yet, still working on 2 and 3)

I've posted my c++ model at the very bottom since it's kind of long.

Because of the high number of characters, objects, etc which verbs can potentially act on, I want to set it up so that there is only one function per verb. In my plan (although I'm open to better ones), the function should act on a target pointer, and the thing that's being pointed to should be able to be supplied by an argument to the function at the time that the player clicks on the target character, object, etc.

My questions/uncertainties:
1. I'm not really clear on what can be done with a struct and what can't, in AGS. Apparently you can put functions in them, but can you nest them?
2. If you can't have a struct inside a struct, how could I potentially translate the model below that uses structs in classes to work with AGS?
3. How would I deal with the arguments of the verb functions so when I call the verb function it will be able to operate on the instance supplied in the function call? So that in anyclick on a character or object I can write talk(diane) or talk (table) and then have something like

Code: ags
function talk(target)
{
   if (target.type == object)
   {
      display("It says nothing.");
   } 

   if (target.type == character)
   {
      runDialogScreen(target);
   }

}



Any help in organization or answering the above 3 questions would be deeply appreciated. We're open to suggestions of other ways of approaching it if this way doesn't suit AGS or isn't as efficient as something else, etc.

C++ model follows [yes, I realize I mixed stdio and iostream, I tried stdio first but scanf gave me problems so I switched, but I haven't cleaned it up yet, it's not meant to be a real application].  Note that the verb I was working with here was mainly pilfer and the target was assumed to be the guard (this process should take place after the player selects the guard).
Code: ags


#define MAX_INV 10
#define TOTAL_CHARS 2


#define TALK 1
#define PILFER 2
#define INVENTORY 3

#define TESTNUM1 2


class Items
{
public:
	std::string name[MAX_INV];
	
	Items()
	{		
		name[TESTNUM1] = "frog";

	}

};
//                                                                                       class for Character attributes
//-------------------------------------------------------------------------------------------------
class Characters
{
public:
	bool pilferable;  // can you steal from them?
	bool hasInv[MAX_INV]; // what inventory items do they have?
	std::string name;

	Characters()
	{
		pilferable = false;
		
		for (int i = 0; i < MAX_INV; i++)
		{
			hasInv[i] = false;
		}
	}


};


class Game
{
public:
	Items inv;
	Characters PC;
	Characters guard1;
	bool isRunning;
	int input;
	int interactMode;

	Game()
	{
		isRunning = true;
		interactMode = 0;
		input = 0;
	}

	void showInv()
	{
		bool hasSomething = false;

		for (int i = 0; i < MAX_INV; i++)
		{
			if (PC.hasInv[i] == true)
			{
				std::cout << "You have the " << this->inv.name[i] << ".\n";
				hasSomething = true;
			}
		}

		if (hasSomething == false)
		{
			std::cout << "You have nothing in your inventory.\n";
		}
	}

	void Talk()
	{
		printf("You chat with the guard.\n");
	}
//                                                                                        ZOMG Pilfer function
//-------------------------------------------------------------------------------------------------
	void Pilfer(Characters target)
	{
		if (target.pilferable == true)
		{
			for (int i = 0; i < MAX_INV; i++)
			{
				if (target.hasInv[i] == true)
				{
					PC.hasInv[i] = true;
					std::cout << "You steal the " << inv.name[i] << " from " << target.name << std::endl;
				}
			}
		}

		else
		{
			std::cout << "Target is not pilferable.\n";
		}
		
	}

	void Setup()
	{
		guard1.name = "the guard";
		guard1.pilferable = true;
		guard1.hasInv[TESTNUM1] = true;
	}

	void Menu()
	{
		std::cout << "-------------------------------------------------\n";
	    std::cout << "A guard is here.\n\n";
		printf("1. Talk\n");
		printf("2. Pilfer\n");
		printf("3. Show Inventory\n");
		
		std::cin >> this->interactMode;

		if (this->interactMode == TALK)
		{
			Talk();
		}
//                                                                                        Pilfer is called here
//-------------------------------------------------------------------------------------------------

		if (this->interactMode == PILFER) //what verb has been chosen?
		{
			Pilfer(this->guard1); //argument of guard1
		}

		if (this->interactMode == INVENTORY)
		{
			showInv();
		}
	}
};



int main ()
{
	Game game;
	game.Setup();


	while (game.isRunning)
	{
		game.Menu();


	}


	return 0;
}


#6
<facepalm>

Thanks so much for that.


That error is gone, but I got another one which I thought might have to do with assigning values to variables outside a function, so I moved those arbitrary values into the game_start(). Now I'm getting a third error related to the declaration of the instance of Maude maude.

so I have this
Code: ags

Maude maude;


export maude;


It tells me "Already referenced name as import; you must define it before using it" and points to the "Maude maude;" line. I'm wondering if I've imported/exported incorrectly or if it's something else entirely that I've done wrong?  :-[


Edit: NM, I found some posts relating to it. I tried moving the declaration up to the top of the global script, not totally sure why it worked (it needed to be before the data was assigned to the various variables in the struct maybe?) but it did.

Thanks again Iceboty.
#7
Hey.

I've been struggling with figuring out how to organize my data and make it available to the various rooms that need it. I've searched the forums but can't seem to find a solution to the problem I'm having most currently.

There are several factions in my game (each represented by a particular leader), and for each leader there is a series of "info topics" available for the player to learn of. There is also an interface screen where I will need list boxes to be able to be populated by the strings that contain the various info topics (known ones only), where the player can click on individual topics (then other things happen that I haven't gotten to trying to code yet).

Right now I'm just trying to build the basic functionality of a faction and keep track of its information. Since I get the impression that you can't nest structs in other structs or use classes, I'm right now working with the idea of a separate struct for each faction, containing arrays for both the info strings themselves, but also bool arrays to keep track of whether the player has learned the corresponding info topic. I modeled this in c++ and got it to work okay (I'm just learning c++ so it's probably far from the best way of doing what I'm trying to do, but the limit of my ability at the moment to plan out), but I'm having trouble translating it to AGS.

Anyway, here is what I have atm:

In the header:

Code: ags
//Maude faction struct
struct Maude{

bool infoKnown[10]; //does the player know the info piece?
bool desireKnown[10];

string info[maxFacts]; //Maude Info statements
string desire[maxFacts]; 


};

import Maude maude;


and in the global script:
Code: ags

Maude maude;

//Arbitrary values for testing
maude.infoKnown[1] = true;
maude.infoKnown[4] = true;

maude.desireKnown[2] = true;
maude.desireKnown[6] = true;



maude.info[1] = "Maude hates walruses.";
maude.info[4] = "Maude wears a tupee.";

maude.desire[2] = "Maude wants a toaster.";
maude.desire[6] = "Maude wants world peace.";

export maude;



The error message I'm getting currently is, as the topic says, "'string' is not allowed inside a struct." Is this true, or is there something else wrong perhaps? If it is true, does anyone have any ideas about how I could handle what I'm trying to do without putting strings in my structs?

Any help would be appreciated, and I would also welcome better ideas on how to accomplish what I'm after if anyone happens to have any. Thanks!


Edit: Sorry, forgot to mention that I need the to be able to retrieve and also modify the bools from any room, although the strings will all be set from the start and not changed after that, if it makes a difference.
#8
Quote from: Stupot on Mon 29/12/2008 20:50:38
I did it in this little known paint package called 'Google Images'.   ;D


All great images end up there, why not cut out the middleman?  :=
#9
That's scary awesome Stu.  :o
#10
My first idea for a BA was a minotaur, which Ghost was kind enough to steal on Day 1. Then I was going to make him a bling golem---thanks Prog!  :=


Back to the drawing board.  ;)
#12
God, fantastic entries everybody. Now I have to choose. I hate this part.  :=

The best thing to do is just rip off the bandaid all at once!


3rd Place goes to Hofmeier! I loved the adaptation because she isn't just a big-boobed amazon in Trilby's clothes, she actually look like she might have his personality too.


2nd Place goes to space boy! Awesome entry just under the wire, and I have a feeling Duke would be very conflicted if he ran into her in a dark alley.  ;D Love the aggressive yet feminine stance.


1st Place goes to Misj'! Larry is the last person you'd expect to get a little fancy and yet it totally works because a horndog is a horndog. The sprite is also lovely and clean and true to the reference style.


It was a really tough choice, I enjoyed all the entries. Thanks to everyone for participating.
#13
Now I totally have to post one of the old files I have, an NPC talk animation I made for my first AGS game (never finished  :=) so you can know that you're really just seeing into the future.


#14
I gotcha, I just think that shading him in general would be much less of a headache if he were lit more tranditionally. If your intention is to challenge yourself at shading something out of the ordinary, though, it seems like a good selection.


I took a ss of the page because I couldn't help myself and had too much fun doing a paintover. I hope you find it in some way useful.  :=





x2



-- The first thing I did was block each element in in one color and alter the shapes a little bit until they looked more like the photograph to me.
-- I did some straightforward top shading in some places, like the face, but still tried to follow the photograph.
-- I fiddled with the different hues of the shirt, skin and hair somewhat; made the darker tones more saturated and redder and the lighter tones less saturated and a little more yellowy
-- I tried to make his hair sort of dome-shaped like in the picture, and gave him some sideburns.
-- I gave his shirt lapels like in the photo.
-- I gave the poor guy some ears.
-- I shaded the protruding and receding areas of the face in light tones and dark tones respectively.
#15
I think perhaps this picture is not ideal for making a sprite from. The light is coming from behind him and to one side, whereas most sprites are made with top-down lighting simply because it's easier to work out and it's less likely to clash awfully with the lighting schemes of the various backgrounds he's going to be superimposed over.


If I weren't having stupid problems with stupid Vista that prevent me from downloading files from the internet I would do a paintover. :/
#16
The First Battalion Transvestite Brigade!
#17
December 16 it is then.

Heh heh Zoot and Hofmeier made me snerk.  :=
#18
I really like it, too. The legs seem to be way too short in comparison to the head and body, though. Based on where you have drawn the groin of the pants, his entire leg is the length his thigh should be?  :=
#19
Great entries so far everybody!  8)


Is anybody working on another entry? This one filled in quicker than I expected when I was allotting the time, so we can go ahead and wrap it up for the next person unless someone is working on an entry they still want to submit?  :=
#20
I really like the colors. The darks on the sprite generally approach black, which is also true of the backgrounds, so they do blend a bit, but I guess ideally the highlights on the sprite should approach the brightness of the brightest background areas.

It's sort of hard to make out what's going on with the legs of the sprite even at the larger size, although the way the light seems to fall on the torso and head works fairly well I think.
SMF spam blocked by CleanTalk