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

#1
Thanks for flagging this up. This looks useful!
#2
Go on then; I offer for your consideration Baldy's Adventure.
Released in January 2013 with distinctive hand crafted graphics.
It is the tale of a man and his dog. And some goblins, and a dragon, and a dark god.
Baldy can't find William his dog.                              Baldy runs some errands for his elderly neighbour Jessica.
Baldy approaches Grimes' Mansion.                         Lanky is down on his luck.
In the rubbish heap/larder of a fearsome ogre.        Confronting a ravenous dragon.
The Unsavory Mr. Grimes.                                           Baldy is a keen gardener.


Click on the link below to go to the game page.
#3
This is a smashing game with some well executed puzzles and sly humour.
It is a good length and Slasher's graphics get better with each game.
It was a pleasure to test this one!
#4
Cross Stitch Casper is pretty sad.
#5
Thanks for digging up those lists both. They helped me to ask myself more of the right sort of questions and they come from interesting sites.
#6
Try putting your walk or animation in 'Enters room after fade in' from the Room editing options.
You may need to have it conditional on cEgo.PreviousRoom, depending on how many ways there are into the room.
#7
Thanks both; that sorted it.
#8
The following code produces a short red line when the game is running in Direct Draw 5, but not with Direct 3D.
This is the case on two PCs. I've tried a few things, like using low number colours, drawing a triangle and copying and reloading the background
but without success. The room has two extra backgrounds, but I have specified the right one.
So any ideas?
Code: AGS

    DrawingSurface* redline = Room.GetDrawingSurfaceForBackground(0);
    DrawingSurface* backup = redline.CreateCopy();
    redline.DrawingColor=63488;               
    redline.DrawLine(cCD.x, cCD.y-4, oIceCube.X+3, oIceCube.Y-3, 1); 
    oIceCube.SetView(22);
    oIceCube.Animate(0, 20, eOnce, eBlock, eForwards);
    while (SoundFX.IsPlaying) Wait(1);
    redline.DrawSurface(backup);
    backup.Release();
    redline.Release();
#9
I was thinking of focusing more on Character in my next game; so I was wondering what I should know about them to help give the story a bit of depth.
I came up with fifteen or sixteen things by looking at story writing sites and my son came up with seven more which are mainly from RPGs.

Has anyone got any they would add to this list and have any game story writers got any advice about which ones to focus on?

Cheers in advance.

   
     
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       

          Occupation
       

          Job, or how they make ends meet/prosper.
       

          Age + Sex
       

          At least which of the seven ages of man they fall into. Possibly
          birthdate. Oh, and gender.
       

          Species
       

          Race or Species; Important in a Fantasy story
       

          Abilities
       

          Notable strengths and skills
       

          Weaknesses
       

          Addictions, Aversions, Disabilities; Frailties of Character and Body
       

          Goals
       

          Especially in the story; what they are trying to do.
       

          Clothes
       

          The clothes disclose the person.
       

          Appearance
       

          Maybe have something to aim at in text; but this is basically the
          graphics.
       

          Possessions
       

          On person and at home; Things they can use or have taken from them.
       

          Names
       

          What they are called by different people. 'Real' name and nicknames,
          if any.
       

          Associates
       

          Friends, Family, Pets, Colleagues. The people and animals in their
          life.
       

          Rivals
       

          Opponents, Enemies
       

          History
       

          Childhood. Defining episodes in their life.
       

          Home
       

          Where they live; this says as much about them as their clothes.
          There home may be a room or rooms that are graphics in the game.
       

          Likes
       

          From preferences to obsessions. Things they will gravitate to.
       

          Dislikes
       

          From mild dislikes to full-blown phobias. Anything they are repelled
          by and will seek to avoid.
       

          Beliefs
       

          Religion. Politics. Delusions. Principles.
       

          Coping
       

          How they deal with conflict and change.
       

          Hobbies
       

          Things that do for the love of it; Gardening, jigsaws, collecting
          stamps, whatever.
       

          Quirks
       

          Habits and mannerisms; an annoying laugh, nose picking, playing with
          loose change in pocket etc.
       

          Personality
       

          'Nice','Whiny','Sarcastic' ; that sort of thing.
       

          Role
       

          The functions they have in the game.
       
#10
Here's my stab at it. I was struggling with the formatting which is why I didn't post sooner.
Code: AGS

// Get five buttons in the correct order
int RightButt[5];
int RBInd;
int result;
int GoodButt(int theButt) {
	if(theButt==RightButt[RBInd]) {
		if (RBInd==4) {
                        RBInd=0;
			cEgo.Say("I've done it!");
			return 3; 
		}
		RBInd++;
		cEgo.Say("So far so good!");
		return 2;
	}
	int ButtErr=0;
	while (ButtErr<5) {
		if (theButt==RightButt[ButtErr]) {
			RBInd=0;
			cEgo.Say("Drat! Back to Square One.");
			return 0; //Fail
		}
		ButtErr++;
	}
	cEgo.Say("That one didn't count.");
	return 1; //Neutral choice; still good to go
}

function room_FirstLoad(){
	RightButt[0]=oButt4.ID;
	RightButt[1]=oButt9.ID;
	RightButt[2]=oButt3.ID;
	RightButt[3]=oButt1.ID;
	RightButt[4]=oButt7.ID;
	RBInd=0;
}


function oButt1_Interact(){
	result=GoodButt(oButt1.ID);
}

function oButt2_Interact(){
	result=GoodButt(oButt2.ID);
}

function oButt3_Interact(){
	result=GoodButt(oButt3.ID);
}

function oButt4_Interact(){
	result=GoodButt(oButt4.ID);
}

function oButt5_Interact(){
	result=GoodButt(oButt5.ID);
}

function oButt6_Interact(){
	result=GoodButt(oButt6.ID);
}

function oButt7_Interact(){
	result=GoodButt(oButt7.ID);	
}

function oButt8_Interact(){
	result=GoodButt(oButt8.ID);
}

function oButt9_Interact(){
	result=GoodButt(oButt9.ID);
}
#11
That's one option Khris, what I have done is add the magic number 65536 (from the TruBlu module) to the hotspot ID and it gives the map in shades of blue which I can port back into AGS when I need to, only having to change it to a gif.
The only downside of my method is that I need to call the function from the room in-game.

Here is the completed code:
Code: AGS

DynamicSprite* theroom;
DrawingSurface* themask;
Hotspot* hot;

function noloopcheck DrawHots(int xfrom, int yfrom, int xto, int yto) {
    int xcount;
    int ycount;
   
    xcount = xfrom;
    while (xcount<xto) {
        ycount = yfrom;
        while (ycount<yto) {
            hot = Hotspot.GetAtScreenXY(xcount, ycount);
            if (hot.ID==0) themask.DrawingColor = 0;
            else {
                if (Room.ColorDepth==32) themask.DrawingColor = 65536+hot.ID;
                else {
                    if (hot.ID<32) themask.DrawingColor = 31+hot.ID;
                    else themask.DrawingColor = 224+hot.ID;
                }
            }
            themask.DrawPixel(xcount, ycount);
            ycount++;
        }
        xcount++;
    }
}


function GrabHotspots() {
  bool isenabled[50];
    int    xviewstore = GetViewportX();
    int yviewstore = GetViewportY();
    theroom = DynamicSprite.CreateFromBackground();
    themask = theroom.GetDrawingSurface();
   
    int hcount = 1;
    while (hcount<50) {
        isenabled[hcount]=hotspot[hcount].Enabled;
        hotspot[hcount].Enabled=true;
        hcount++;
    }
   
    SetViewport(0, 0);

    DrawHots(0, 0, theroom.Width, theroom.Height);

    hcount = 1;
    while (hcount<50) {
        hotspot[hcount].Enabled=isenabled[hcount];
        hcount++;
    }
   
    SetViewport(xviewstore, yviewstore);
   
    themask.Release();
    String filename;
    filename = String.Format("Room%dHotspots.bmp",player.Room);
    theroom.SaveToFile(filename);
    theroom.Delete();
}

#12
I'm after exporting the whole room, not just the visible screen after I have updated it in the AGS editor, so that I can convert it to a gif file and then reimport it if anything unfortunate happens to the in-game version.
My next challenge is getting up to forty-nine shades of blue (with no green).
#13
Spot on! Thanks Ryan!
If anyone's interested; here is the simplified code.
Code: AGS

DynamicSprite* theroom;
DrawingSurface* themask;
Hotspot* hot;

function noloopcheck DrawHots(int xfrom, int yfrom, int xto, int yto) {
    int xcount;
    int ycount;
   
    xcount = xfrom;
    while (xcount<xto) {
        ycount = yfrom;
        while (ycount<yto) {
            hot = Hotspot.GetAtScreenXY(xcount, ycount);
// To-do: Fix drawing colours to shades of blue so its easy to convert to gif and re-import.
            themask.DrawingColor = hot.ID;
            themask.DrawPixel(xcount, ycount);
            ycount++;
        }
        xcount++;
    }
}


function GrabHotspots() {

    theroom = DynamicSprite.CreateFromBackground();
    themask = theroom.GetDrawingSurface();
 // To-do: Save hotspots.Enabled values and Viewport coordinates to restore later.  
    int hcount = 1;
    while (hcount<50) {
        hotspot[hcount].Enabled=true;
        hcount++;
    }
   
    SetViewport(0, 0);

    DrawHots(0, 0, theroom.Width, theroom.Height);
       
    themask.Release();
    theroom.SaveToFile("RoomHotspots.bmp");
    theroom.Delete();
}
#14
I am trying to write a function creates a map of the hotspots in a room and sends it to a .bmp file.
The function GrabHotspots(); is placed in the code of room to be mapped to run after the room has become visible.
The trouble is that if the room is much larger than 320*240 pixels the process crashes as the iterations exceed 150,000.
I've tried to fool it by having the code in blocks and breaking out when the room has been scanned - returning instead of using a while loop; but it still doesn't work. Any suggestions?

Code: AGS

DynamicSprite* theroom;
DrawingSurface* themask;

int roomwidth;
int roomheight;

Hotspot* hot;

function DrawBlock(int xfrom, int yfrom, int xto, int yto) {
	int xcount;
	int ycount;
	
	xcount = xfrom;
	while (xcount<xto) {
		ycount = yfrom;
		while (ycount<yto) {
			hot = Hotspot.GetAtScreenXY(xcount, ycount);
			themask.DrawingColor = hot.ID;
			themask.DrawPixel(xcount, ycount);
			ycount++;
		}
		xcount++;
	}
}

function BlocksAcross(int ystart) {
	int thiswidth;
	
	int thisheight=ystart+240;
	if (roomheight<thisheight) thisheight = roomheight;
	
	int xstart = 0;
	thiswidth = 320;
	if (roomwidth<thiswidth)thiswidth = roomwidth;
	DrawBlock(xstart, ystart, thiswidth, thisheight);
	if (thiswidth==roomwidth) return;
	
	xstart+=320;
	thiswidth +=320;
	if (roomwidth<thiswidth)thiswidth = roomwidth;
	DrawBlock(xstart, ystart, thiswidth, thisheight);
	if (thiswidth==roomwidth) return;	
	
	xstart+=320;
	thiswidth +=320;
	if (roomwidth<thiswidth)thiswidth = roomwidth;
	DrawBlock(xstart, ystart, thiswidth, thisheight);
	if (thiswidth==roomwidth) return;	
	
//repeat  this  if the room is any wider
						
}

function GrabHotspots() {

	theroom = DynamicSprite.CreateFromBackground();
	themask = theroom.GetDrawingSurface();
	

	roomwidth=theroom.Width;
	roomheight=theroom.Height;

// The next two operations mess up the game; Fix this later.
	int hcount = 1;
	while (hcount<50) {
		hotspot[hcount].Enabled=true;
		hcount++;
	}
	
	SetViewport(0, 0);

	BlocksAcross(0);
	if (roomheight>=240)BlocksAcross(240);
	if (roomheight>=(240*2)) BlocksAcross(240*2);
// add lines if the room is any deeper	
		
	themask.Release();
	theroom.SaveToFile("RoomHotspots.bmp");
	theroom.Delete();
}
#15
Quote from: Sunny Penguin on Tue 25/06/2013 02:53:12
When you know, you'll know.
Well, yes.
For me that's:
Good music that fits
Good distinctive artwork
Compelling Characters
A well conceived and detailed world with contrasts that rewards exploration
Clever puzzles, well integrated into the world, with GUIs for those special character abilities
Bespoke responses to everything you try to do, even if it's not the right solution

Oh yes; and there has to be a story.


#16
No problem. Carry on. Forget I said anything.
#17
Yes, I don't know what I'm bothered about! Free publicity, I shouldn't knock it!
#18
This has been mentioned before in passing. Softpedia have put my game and about half a dozen other recent AGS games on their site in the last day or so.
I'm fine that it gets to a wider audience with the possibility of more feedback, but I think it's a bit cheeky doing it without asking me first. Their site has adverts so I suppose in some small way they are profiting from my work.
Any other opinions?
#19
In the window that shows the second room on the right hand side about halfway down it says ShowPlayerCharacter True; change that to False.
#20
Hints & Tips / Re: Baldy's Adventure
Fri 08/02/2013 17:04:24
Spoiler
You need to enter the forest.
Spoiler
Something you got from Lanky's room can help you.
Spoiler
Use the saucepan.
Spoiler
On a lily pad.
Spoiler
I will let you figure out which one.
[close]
[close]
[close]
[close]
[close]
That will open up a new area where you can find some useful stuff.
Call back if you need any more hints.
Edit:
Oh yes, I forgot. Before all that:
Spoiler
Have you used the vase on Grimes' study door?
[close]
SMF spam blocked by CleanTalk