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

Topics - pslim

#1
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.
#2
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;
}


#3
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.
#4
I want to see your favorite literary, television, film, or comic character getting in touch with their feminine or masculine side. This can involve simply spriting the male version of a female character, or putting a male character in female stance and attire, or anything in between.

Please post a link or pic of the character's original presentation for us to compare with your sprite!

Entries must be no greater than 200x200, can include any number of colors, and should not include a background (although you can mock one up next to your entry just to show us what that would look like if you desire).

Original characters following a gender bending theme are acceptable but existing characters with altered gender characteristics are preferred.

Let's get bendy!


Trophies you'd rather not display, for your enticement:

#5
Advanced Technical Forum / Unhandled Error
Mon 01/12/2008 04:13:36
This happens when I attempt to run any game, whether compiled or uncompiled previously, demo game included, from the editor:

Error: No process is associated with this object.
Version: AGS 3.1.0.60

System.InvalidOperationException: No process is associated with this object.
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.get_HasExited()
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.get_ExitCode()
   at AGS.Editor.Tasks._testGameProcess_Exited(Object sender, EventArgs e)
   at AGS.Editor.Tasks.RunEXEFile(String exeName, String parameter, Boolean raiseEventOnExit)
   at AGS.Editor.Tasks.TestGame(Boolean withDebugger)
   at AGS.Editor.InteractiveTasks.TestGame(Boolean withDebugger)
   at AGS.Editor.Components.BuildCommandsComponent.TestGame(Boolean withDebugger)
   at AGS.Editor.Components.BuildCommandsComponent.CommandClick(String controlID)
   at AGS.Editor.GUIController._mainForm_OnMenuClick(String menuItemID)
   at AGS.Editor.MainMenuManager.MenuEventHandler(Object sender, EventArgs e)
   at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



After that I can't quit the editor because it thinks I'm still in the test game. I'm running Vista, and have installed AGS outside of the program files directory.


#6
I suspect this is not an issue with AGS, but you guys are brilliant and I think it's likely someone here will have some idea of what's gone wrong. I've sought answers on the internet, but everything I found was tied specifically to some program not involved in producing my problem.

I just installed AGS 3.1 and I pulled up the editor and opened the demo game. When I tried to take one of the links on the startup page to look at the manual, I got the following error message:

Cannot find 'mk@MSITStore:C:\PROGRA~1\ADVENT~2.1\ags-help.chm::/ags84.htm#UpgradeTo30'. Make sure the path or Internet address is correct.

That happens any time I try to choose to view any helpfile. The viewer itself says Adventure Game Studio 3.1 at the top, even though the address there seems to be for 2.1? No idea.

Any help would be appreciated.
#7
I should say at the start that I'm not a tech guy.

I've had a lot of problems with Vista since I got this new computer a few months ago, and if I had XP discs I'd have gotten rid of it a long time ago.

Anyway, I was trying to play the new BJ game, which is one of those setup for 320x200. I searched the forums and found out you have to set these to 640x400 to run in Vista.

But I can't get winsetup to open on any of the AGS games on my hard drive. Attempts to open them prompt an error message saying it can't access the game exe, and to make certain it's in the same directory. Of course they are, since that's how compiled games come. I tried XP compatibility mode with both files with no luck.

I'm stumped and irritated and gloomy. Assistance would be much appreciated.


#8
Mostly I need help improving the body shape and stance, and in communicating the clothes better. He's supposed to be wearing Victorian-style flat-front trousers and suspenders, and the sleeves on his shirt are rolled up to the elbow. He's also intended to be fairly thin.


Any comments/suggestions are welcome.







and x3


#9
Sprite Jam Rocks

Since a sprite can be a character or an object, I thought I'd give folks a choice:

a. Draw a musician of some kind--your favorite rock star, Bach and his wig, or Progulz from the planet Cacaphone II.

b. Draw a musical instrument that is fantastic in some way--a flaming guitar (made from the same stuff as Le Chuck's beard perhaps?), a drum kit made of bones, or whatever takes your fancy.

Restrictions:
120 x 120
32 colors
#10
I'm experimenting a bit (as you can see from the size of the view window), and I thought that was best done on a static title page, so that's what I've started with. I'm not accustomed to doing landscapes, so I was hoping to get some help with composition at this early stage before I pixel myself into a corner. Any comments or suggestions would be appreciated.




Note: For the most part, the shapes of buildings and things are much boxier than they will end up being. For the moment I'm just trying to put things where things should be.
#11
I've never drawn a cat before, and even with a reference photo it's proving to be really difficult.

I would appreciate any comments or improvements on the following sprite. I've put him next to a human character sprite for purposes of scale.





2x
#12
Coding is really not something I'm good at, and it's been a while since I last tried to code in AGS. I can't seem to make this work properly.

Here's my code:
Code: ags

function on_mouse_click(MouseButton button) {
 // called when a mouse button is clicked. button is either LEFT or RIGHT
  if (IsGamePaused() == 1){
   //if the game is paused do nothing.
 }
 else { //Finally if the game isn't paused, run normal room interation stuff
   if (button == eMouseLeft) {
     ProcessClick(mouse.x, mouse.y, mouse.Mode );
   }
   else if (button == eMouseRight) {   // right-click, so cycle cursor
     mouse.SelectNextMode();
   }  
 }
 
    if ((button == eMouseLeftInv) && (Mouse.Mode == eModeGreetTou)) { 
       player.ActiveInventory=InventoryItem.GetAtScreenXY(mouse.x, mouse.y);
       Mouse.Mode=eModeUseinv;
     }
      else if ((button == eMouseLeftInv) && (Mouse.Mode == eModeExamine)) { 
       inventory[game.inv_activated].RunInteraction(mouse.Mode);
     }
      else if ((button == eMouseLeftInv) && (Mouse.Mode == eModeUseinv)) {
       inventory[game.inv_activated].RunInteraction(mouse.Mode);
 }
    else if (button == eMouseRightInv) {   // right-click, so cycle cursor
     mouse.SelectNextMode();
   }  
}



GreetTou is the equivalent of Interact and Examine is the equivalent of Lookat.

I've put in display messages for the event that I interact with or look at the inventory item I'm using to test this on. The messages never pop up, so it seems that the above code isn't working.

I can't figure out what the problem is, though. Any help would be appreciated.  :=
#13
Critics' Lounge / low-res dialogue portraits
Wed 15/08/2007 14:01:45
I've been working on these for a while and feel I can't improve them further without help. I deliberately chose to make them rather small, as they're intended for small talk only at the moment, with formal dialogue taking place on a separate screen (somewhat like GK1). Working at this size has proved to be a struggle for me, but I'm hoping you guys can help.




2x






2x
#14
Critics' Lounge / Help with side view
Thu 02/08/2007 04:37:50
I've gotten into making the side view of the character I posted earlier, but there's something funny about it that needs fixing. I can't quite work it out, though.




2x


Without the arm it looks all right to me, in terms of the shape of his body, but when I add the arm it makes it look like he's sticking out his chest. That's what particularly concerns me, but any other suggestions are welcome.
#15
Okay, I came up with an idea so I'm going to run this one promptly after all.




RULES:

You may not:
-alter the line represented in black more than ten [10] pixels.
-increase the size of the canvas.

You may:
-use less than the total canvas as long as you use all of the black pixels.
-change the color of any or all of the black pixels.

The shapes represented in white (or the shapes corresponding to your 1-10 pixel edit of the black line) must be clearly recognizable in the final image.


Have fun!

Bonus for creative ideas and for boldest representation of the shape.
#16
Here are three character sprites I've been working on for my current project. There are some things I really like about them, but there are a lot of things I've been struggling with.





2x



I really like the palettes of the two male characters, but I hate the palette of the female character. If anyone has any suggestions in that direction I would love to have them.

How can I make their stances more natural-looking? How can I shade them better?

I would really like to make the two male characters appear less buff, though i can't figure out how to do it at this scale.

I'd also love to hear how I could fix their right arms.

Lastly, I tried to get some contrapposto going with the guy on the left, but it didn't turn out so well. If possible, I'd like to preserve or improve it because it fits his personality.

Any advice is appreciated.


EDIT: Here's an update of my progress so far on the main character sprite.




2x

Original/ProgZ's edit/Revision

I liked ProgZ's boot heel, so I kept that, and generally tried to make the shape freer and more natural like the stance of ProgZ's edit. Once I was feeling really free, I decided to elongate him by a couple of pixels and exaggerate his trimness.

I also experimented some with adding blue to the darker skin tones and yellowing the lighter ones a little bit. Lastly, I added some yellow to the lightest shirt shade.
#17
I'm working on another background, but I'm really unsure about the composition. Right now it's only in the design stage, so nothing has been detailed or shadowed or anything like that. Okay, I might have gone a bit wild on the ivy, but nothing else has been detailed.  :=





x2



It's the main room of a small but smart modern apartment. These guys probably shop at Ikea, if that helps. It will be simple and absent conspicuous displays of wealth, but not shoddy by any means. The window is absolutely necessary, but it doesn't have to be where it is.

I'm primarily concerned with my usage of floor space, and where I've placed everything. Does it make for a reasonable composition? I haven't placed most of the small things that people have lying around their houses yet, because I've been struggling with this aspect of it.

To give you an idea of where it is in relation to the final product, I put together a small comparison of the other room I've done for this game so far.




Any help or comments would be greatly appreciated.
#18
This is a background I'm working on for practice to get the rust out. It may or may not end up being used in a game my partner and I are thinking of making.

It's obviously still in progress, as certain things haven't been detailed yet (the crate against the wall, the door), but I have real trouble shading some things so I thought I would go ahead and ask for help before I muddled the whole thing. I'm also not all that happy with the color scheme.

If you can't tell, my main inspiration is Sierra's high-res period.






x2



Any comments are appreciated.
#19
Hey, there. I'm working on a background for No Traveller Returns, and I've run into another hair-tearing problem.

The background is far from finished, but the issue at hand is that I'm wanting the lights on the ceiling to be domes, swelling downward toward the floor. Nothing I've tried so far seems to give the appearance of contour. Any help would be greatly appreciated.








x2
#20
Hey.

I'm trying to set up my custom inventory the way I want it, but I've run into problems when it comes to trying to allow the player to cycle through cursors while the inventory is up.

It seems that using button == eMouseRightInv only registers a click if the mouse is actually over an inventory item (so nothing happens if the inventory is empty, or if the click takes place in an empty portion). However, I can't seem to get button == eMouseRight to work at all while the inventory is up. Here's the code I'm trying to use:

Code: ags

#sectionstart on_mouse_clickÃ,  // DO NOT EDIT OR REMOVE THIS LINE
function on_mouse_click(MouseButton button) {
Ã,  // called when a mouse button is clicked. button is either LEFT or RIGHT
Ã,  if (IsGamePaused() == 1) {
Ã,  Ã,  // Game is paused, so do nothing (ie. don't allow mouse click)
}

Ã,  Ã, if (button == eMouseLeft) {
Ã,  Ã,  ProcessClick(mouse.x, mouse.y, mouse.Mode );
Ã,  }
Ã,  else if ((button == eMouseRight) && (gInventory.Visible == false)){Ã,  Ã, // right-click, so cycle cursor
Ã,  Ã,  mouse.SelectNextMode();
Ã,  }Ã,  
Ã,  Ã,  else if ((button == eMouseRight) && (gInventory.Visible == true) &&Ã,  (Mouse.Mode == eModeLookat)) {
Ã,  Ã,  mouse.Mode = eModeInteract;
Ã,  Ã,  mouse.UseModeGraphic(eModePointer);
}Ã,  Ã,  
Ã,  else if ((button == eMouseRight) && (gInventory.Visible == true) &&Ã,  (Mouse.Mode == eModeUseinv)) {
Ã,  Ã,  mouse.Mode = eModeLookat;
}
Ã,  else if ((button == eMouseRight) && (gInventory.Visible == true) &&Ã,  (Mouse.Mode == eModeInteract)) {
Ã,  Ã,  mouse.Mode = eModeLookat;
}
 else if ((button == eMouseLeftInv) && (Mouse.Mode == eModeInteract)) { 
Ã,  player.ActiveInventory=InventoryItem.GetAtScreenXY(mouse.x, mouse.y);
Ã,  Mouse.Mode=eModeUseinv;
}
 else if ((button == eMouseLeftInv) && (Mouse.Mode == eModeLookat)) { 
Ã,  inventory[game.inv_activated].RunInteraction(mouse.Mode);
}
 else if ((button == eMouseLeftInv) && (Mouse.Mode == eModeUseinv)) {
Ã,  inventory[game.inv_activated].RunInteraction(mouse.Mode);
Ã,  
}
}


#sectionend on_mouse_clickÃ,  // DO NOT EDIT OR REMOVE THIS LINE


The left inventory code works fine, but nothing happens when I right-click while the inventory window is up. Although button == eMouseRightInv works, I'm not satisfied with only being able to cycle cursors while the mouse is over an inventory item. I want the player to be able to cycle no matter where their cursor is on the screen.

I would appreciate any help.Ã,  :-\
SMF spam blocked by CleanTalk