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 - EnterTheStory (aka tolworthy)

#21
Sorry for posting so many questions lately. I'll go back to hibernation soon, promise :) But just one more:

I have some games that use low resolution coordinates in scripts. I have one object (an overlay) that would really benefit from moving 1 real pixel at a time. Is there any way to do that? I'd rather not convert the entire game to high res, as that would take several days.
#22
I continually find bugs and crashes with AGS that nobody else seems to get, and I put it down to the fact that I seem to use the program in ways that nobody else does. For example, my games all link together so I make heavy use of RunAGSgame and often have multiple copies of the AGS editor open.

I've noticed that others also use AGS in unusual ways (for 3D games, etc.). So is it quite common to be "out on a limb" like this?
#23
I'm getting some really weird behavior when using RunAGSGame. Before a certain point in my game (the one being called, not the parent game), rep_ex_always does not work. When run on its own the game works perfectly. Any ideas what might be happening?

(edit) - as you can see, I've stripped out almost all the code in the previous module, but I can't get rep_ex_always to be recognized any further back. I also tried combining the two modules, but that just stopped rep_ex from being recognized anywhere in the combined one. You can put a rep_ex_always function in any module after the line and it will work perfectly. And if not using RunAGSGame you can put it anywhere at all.
#24
I recently converted several 2.72 games to 3.12, using 'low resolution co-ordinates in script.' The character startX and startX coordinates were automatically scaled to high resolution.

When I then ran the game, the startX and startY values were automatically doubled, so all the characters disappeared off the screen. So I manually changed all the startX and startY values. But now the behavior has changed, so they all appear in the top left hand corner of each screen.

Has anyone had any success with converting large and complex 2.72 games to 3.12? It's looking like the only option is to go through the code, line by line, and convert everything manually to high res.

EDIT: the problem with coordinates seems to be related to using RunAGSGame. That is, a game will show characters in the right positions when run directly, but run it through RunAGSGame and all startX and startY character coordinates double.
#25
If there are two games in a folder (for runAGSGame purposes) and the first one uses a translation file, then the second game cannot be started on its own (as it will try to use the first game's file).

So I'll use AGS3's wonderful 'change translation' command instead. Is it possible to hide the winsetup translation option?
#26
I'm getting used to 3.x, but I really miss some of the productivity features that seem to have been removed since 2.7x. Is there a master list somewhere of what's gone, along with workarounds? I mean features like:

* importing TGA (all my 16 bit graphics are in TGA format, as Paint Shop Pro 5, which loads much faster than other programs, only allows TGAs to be saved as BMP)  EDIT: if there is no workaround, does anyone know of a program which can convert images in multiple folders without removing them from those folders? I have literally hundreds of folders with TGAs.

* being able to import multiple sprites over existing sprites with the same number. (I have a number of animations and rely on editing sprites in groups then importing in bulk - importing one at a time really slows things down, especially as 3.x loads individual sprites more slowly than before)

* etc.
#27
I'm on day 2 of converting my games from 2.72 to 3.12, and the editor tends to crash when trying to access some sprites. Maybe 1 out of every 500 sprites is affected. The sprites work fine in 2.72, and I can't change or remove them in 3.1.2 because whenever I open the sprite manager to see them the whole thing falls over. Any suggestions?
Code: ags
---------------------------
Application Error
---------------------------
An unexpected error occurred. See below for details.

System.ComponentModel.Win32Exception: Error creating window handle.

   at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)

   at System.Windows.Forms.Control.CreateHandle()

   at System.Windows.Forms.ToolStripDropDown.CreateHandle()

   at System.Windows.Forms.Control.get_Handle()

   at System.Windows.Forms.ToolStripManager.ModalMenuFilter.PreFilterMessage(Message& m)

   at System.Windows.Forms.Application.ThreadContext.ProcessFilters(MSG& msg, Boolean& modified)

   at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)

   at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FPreTranslateMessage(MSG& msg)

   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)

   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)

   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

   at System.Windows.Forms.Application.Run(Form mainForm)

   at AGS.Editor.Program.RunApplication(String[] args)
---------------------------
OK   
---------------------------
#28
I've finally been dragged kicking and screaming into the modern world of 3.x, and speech view behaves oddly:

A certain character only has one speech loop. In 2.72 this would be used every time. But in 3.1.2, extra blank loops are created and these are used, causing the character to turn into a tiny coffee cup when he speaks. I've tried deleting the new loops and saving the game (Ctrl+S), but when I compile and run the game (F7) the unwanted empty loops are created again. What am I doing wrong?
#29
This morning I got an email from someone, saying my game wouldn't play. The first frame of the game would show, but not change. Music would play fine throughout, but the mouse (in the game) would freeze after about a second. She was using a Dell Inspiron laptop with Vista. My game is 640 x 480, 16 bit, 2.72, graphics on default settings (no DirectX).

It sounds like straightforward case of a driver problem. But she tried changing color depth and running in a window but still no joy. Every time I've seen a driver problem before, windowing or changing color depth fixed it. But not this time.

I realize that driver problems are inevitable sometimes - I've read about a few cases in the forum -  but I'm wondering how often this happens? One time out of a hundred? More? And if there's anything I can do about it?
#30
I just got this email:
QuoteI was successful in playing Les Miserables on my droid by linking to my home comp. It was really cool and made for awesome sauce while waiting in the docs office
I asked him for more details of how he did it - has anyone else succeeded in playing AGS games on the droid? Any tips?
#31
I think my game is ready to sell (it's been through seven beta test versions), but both of my regular testers have suddenly got other commitments (school!). Is anyone willing to give it a run through from start to finish? In the next few days if possible? I'd be very grateful!

PM me for a link.

About the game: http://enterthestory.com/




The stories are point and click adventures closely based on the classics:
Les Miserables
Dante's Divine Comedy (including Dante's Inferno)
Genesis of the Gods (based on Hesiod's Theogony)

About the download:
This includes all three stories - they form a trilogy that introduces Peri, a character who appears in all future games. The third story (Genesis of..) still needs final testing. The first two have been tested and sold in the past, but I've added more interaction between the stories so if anyone is willing to go finish all three games that would be fantastic.

How long will it take?
It shouldn't take too long - there is an extensive help system, so if you keep hitting F1 you get easier and easier clues, and if you're really in a hurry there's an 'emergency help' system (press Ctrl+H then Ctrl+P) that will tell you exactly what to click on.

About previous threads:
A few month ago in response to another thread I started implementing antialiased fonts and more left clicking, but I've gone back to the previous method for various reasons that would take too long to explain but are explored in the blog. But I do listen to all suggestions and implement the vast majority of them.

Thanks in advance!

Image based on 'old bookcase' by 'mararie', Flickr, CC 2.0

Edit: I just read the rules more carefully and apparently I have to give an outline of the story. This might take a while, because the three stories in the game (so far) all connect to form one big story. And it's a little bit complex, as it forms the basis for all the future stories that will also connect together. This particular thread is mostly about Genesis of the Gods, but anyone who buys one gets all three, as they need to be seen in context.

I'll outline the first two stories in more detail, as they're more relevant to the project as a whole: the first one is typical of the kind of story you should expect after the initial trilogy, and the second illustrates my unusual approach (treating the stories as if they're real.)

OK, here goes. The game (so far) is a trilogy of stories, linked by a character called Peri. Peri plays one of the children for whom Jean Valjean stole a loaf of bread, then later she plays the role of Beatrice, and finally she's an angel sent to defend mankind against Ouranos. More detail:

Victor Hugo's Les Misérables is one of the world's great classics, a story of love and death and passion and sacrifice. It stars Jean Valjean, a man imprisoned for stealing a loaf of bread to feed his sister's starving children. In this game one of those children was Peri.

The story summary here is adapted from Wikipedia:
Les Misérables (translated variously from French as The Miserable Ones, The Wretched, The Poor Ones, The Wretched Poor, The Victims) is a novel by French author Victor Hugo and is widely considered one of the greatest novels of the 19th century. It follows the lives and interactions of several French characters over a twenty-year period in the early 19th century, starting in 1815, the year of Napoleon's final defeat at Waterloo.

The novel focuses on the struggles of ex-convict Jean Valjean and his experience of redemption. It examines the nature of law and grace, and expounds upon the history of France, architecture of Paris, politics, moral philosophy, antimonarchism, justice, religion, and the types and nature of romantic and familial love. The story is historical fiction because it contains factual, historic events, including the Paris Uprising of 1832 (often mistaken for the much earlier French Revolution).

Les Misérables contains many plots, but the main thread is the story of ex-convict, Jean Valjean (known by his prison number, 24601), who becomes a force for good in the world, but cannot escape his dark past. Hugo fills many pages with his thoughts on religion, politics, and society.

Major characters:

   * Jean Valjean (a.k.a. Monsieur Madeleine, a.k.a. Ultimus Fauchelevent, a.k.a. Monsieur Leblanc, a.k.a. Urbain Fabre, a.k.a. 24601 a.k.a. 9430) â€" Convicted for stealing a loaf of bread, he is paroled from prison nineteen years later. Rejected by society for being a former convict, Bishop Myriel turns his life around. He assumes a new identity to pursue an honest life, becoming a factory owner and a mayor. He adopts and raises Fantine's daughter Cosette, saves Marius from the barricade, and more.
   * Javert â€" An obsessive police inspector who continuously hunts, tracks down, and loses Valjean. He goes undercover behind the barricade, but is discovered and unmasked. Valjean has the chance to kill Javert, but lets him go. Later Javert allows Valjean to escape. For the first time, Javert is in a situation in which he knows that the lawful course is immoral.
   * Bishop Myriel, the bishop of Digne â€" A kindly old priest who is promoted to bishop by a chance encounter with Napoleon. He convinces Valjean to change his ways after Valjean steals some silver from him and saves Valjean from being arrested.
   * Fantine â€" A Parisian girl abandoned with a small child by her lover Félix Tholomyès. Fantine leaves her daughter Cosette in the care of the Thénardiers, innkeepers in a village called Montfermeil. Unfortunately, Mme. Thénardier spoils her own daughters and abuses Cosette. Fantine finds work at Monsieur Madeleine's factory, but is fired by a female supervisor who discovers that she is an unwed mother. The Thénardiers constantly demand money, and Fantine sells everything she has to save her child, eventually including her own body.
   * Cosette (a.k.a. Euphrasie, a.k.a. The Lark, a.k.a Ursule) - after Fantine dies, Valjean ransoms her from the Thénardiers and she becomes his adopted daughter. She later grows up to become very beautiful. She falls in love with Marius Pontmercy.
   * Marius Pontmercy â€" A second-generation aristocrat (not recognized as such because it was Napoleon who made Marius' father a noble) who fell out with his royalist grandfather after discovering the truth about his father.
   * Enjolras â€" A charming and intimidating man with angelic beauty, he is passionately devoted to democracy, equality and justice. Enjolras is a man of principle that believes in a cause â€" creating a republic, liberating the poor â€" without any doubts.
   * Éponine â€" The Thénardiers' elder daughter. As a child, she is pampered and spoiled by her parents, but ends up a street urchin when she reaches adolescence. She is blindly in love with Marius.
   * Gavroche â€" The unloved eldest son of the Thénardiers, he lives on th street and longs for adventure.
   * Monsieur Gillenormand â€" Marius' grandfather. A Monarchist, he sharply disagrees with his grandson and throws him out - but hates himself for doing it.
   * Mabeuf â€" An elderly churchwarden. He was friends with Colonel Pontmercy, and then befriends Marius after Colonel Pontmercy's death. He helps Marius realize the true identity and intentions of his father.  He feels his life has been a failure.

The story has been adapted into at least fifty movies and six different stage plays, including a successful musical. This is the first time the story has been presented as a game, and the first time that you, the reader, can enter and become part of it.

The Divine Comedy, written by Dante Alighieri between 1308 and his death in 1321, is widely considered the central epic poem of Italian literature, and is seen as one of the greatest works of world literature. The poem's imaginative and allegorical vision of the Christian afterlife is a culmination of the medieval world-view as it had developed in the Western Church. It is divided into three parts, the Inferno, Purgatorio, and Paradiso.

The poem tells of Dante's journey through the three realms of the dead, lasting from the night before Good Friday to the Wednesday after Easter in the spring of 1300. The Roman poet Virgil guides him through Hell and Purgatory; Beatrice, Dante's ideal woman, guides him through Heaven.

In Northern Italy's political struggle between Guelphs and Ghibellines. Florence's Guelphs split into factions around 1300, the White Guelphs, and the Black Guelphs. Dante was among the White Guelphs who were exiled in 1302. This exile, which lasted the rest of Dante's life, shows its influence in many parts of the Comedy, from prophecies of Dante's exile to Dante's views of politics to the eternal damnation of some of his opponents.

The story begins with Dante lost in a dark wood, assailed by beasts (a lion, a leopard, and a she-wolf) and unable to find his way home. Dante is at last rescued by Virgil, and the two of them realize that their only way home is through Hell. The Inferno follows the two through the ten circles of Hell, down to the center of the Earth. The second part, Purgatory, follows them through the seven terraces of that mountain, up to the garden of Eden. The third part, Paradise, follows them through the seven heavens, the stars, and ultimately the throne of God.

Enter The Story always follows the original story, chapter by chapter, but is more concerned with the ideas behind the story. And so, just as Dante reflected the cosmological beliefs that had evolved up to the year 1300, so the game keeps these but also brings them in harmony with a more modern understanding, and speculates even further. And just as Dante included many historical and contemporary figures, the game keeps these characters and also adds a few others from later centuries and our own day.

Enter The Story treats the poem as real history. Which means that some parts need to be reinterpreted in the light of modern understanding. Not changed - every story in Enter The Story is strictly faithful tot he original, event by event - but reinterpreted in the way that a believe in the Bible might interpret the sacred text in the light of modern discoveries. For example, Dante describes Hell in the form of a vast funnel shaped cave, thousands of miles around. Clearly the roof of such a cave would collapse, and besides, no such cavity has been found through sonar readings. No doubt Dante merely vast caves and only speculated on their size. Similarly, Dante travels to the center of the Earth, and later to the surface of the sun, without being consumed by heat. Clearly advanced technology is at work. On a more important note, Dante describes souls being tortured for eternity - a point that other games have accepted at face value - yet this contradicts Dante's belief in a merciful God. Also, Dante states that these beings are spirits - how can spirits feel physical pain? How  can decapitation (for example) be a problem to someone is already dead? How can noble pagans be condemned to purgatory, yet far less deserving popes end up in heaven? Clearly Dante is reporting these events from his Medieval perspective, and others may see them differently.

Genesis of The Gods is a loose translation of the word "theogony:" the game is based on Hesiod's poem. Hesiod's 'theogony' is a large-scale synthesis of a vast variety of local Greek traditions concerning the gods, organized as a narrative that tells how they came to be and how they established permanent control over the cosmos. It begins with the muses singing, then we take part in the creation of the universe, the rise of Ouranos, creation of the Titans, his battles with them, the creation of the gods, how the gods are all related, gods versus Titans, the creation of Mankind, Prometheus stealing fire from heaven, the final battle with Typhon, the end of the world, a lot of philosophy (strictly optional) all built around the structure of a  romance.

Together the three stories form an introduction to Enter The Story, a project to combine at least thirty (more likely eighty or so) classic stories into one huge game world.

Now the forum rules also say I should add "Screenshots, promotional material, designer diaries, demo downloads, music samples" etc. That could make this thread extremely long - it is not a short game! I'd rather take the chance of skipping all that. Please let me know if you think I should add that too.
#32
I have three GUIs on screen (in 2.72). Each GUI has a background image created using DynamicSprite.CreateFromBackground
E.g.
Code: ags

DynamicSprite* selected_sprite;		export selected_sprite;
function changeSelectedLabel(String text, int font, int color)
{ if(text == "")	{ gSelectedperson.BackgroundGraphic = 82;	return; }
	SetBackgroundFrame(0);
	RawSaveScreen();
	RawClearScreen(63519);
	RawPrintOutlined(0,0, font,  text,  color);// just prints text on the blank background
	selected_sprite = DynamicSprite.CreateFromBackground(0, 0, 0, GetTextWidth(text,font)+2, 12);
	gSelectedperson.Width = selected_sprite.Width;
	gSelectedperson.Height = selected_sprite.Height;
	gSelectedperson.BackgroundGraphic = selected_sprite.Graphic;
	gSelectedperson.X = 160 -(width/2);
	RawRestoreScreen();
	SetBackgroundFrame(-1);
}

I get a recurring crash, and I can make it happen when character.say is called. I think it's something to do with creating dynamic overlays and not releasing them. I don't want to call sprite.Delete because I need those sprites. As you can see, pointers are not by strong suit, so I'd be grateful for some guidance!

#33
I've noticed that translation file names can be 185 characters long (189 including ".tra"), but if you try 186 they won't be used. Any idea why this is?
#34
I just visited justAdventure.com and it looks like nothing's been updated in a few months. 'Search' is now just an unlinked word, and four emails I tried all bounced. This used to be a big deal site (1 million hits a month is the boast). Anyone know what happened?
#35
Dante's Divine Comedy is finished and ready for download!

The free demo goes as far as the first two circles of Hell, and the complete game includes all of Hell, plus Purgatory, plus Paradise. Unlike the EA games version that gives up after the first third of the poem. :)



The web site  has a couple of teaser videos plus about a hundred screenshots and more stuff. If you like the demo and buy the full game then you also get Les Miserables free, plus a discount code to get the next game free as well (Genesis of the Gods, based on Hesiod's Theogony). All my games join together to make an ever expanding game world full of classic stories. In a few years it will be the world's largest adventure game - it's already the largest in terms of ambition and geography.

Enjoy!
#36
I tested some 2.72 games on different computers today. One computer did this:

Running full screen: window borders are seen, game music plays, but the screen is black.

Running in a window: game music plays, but the window is transparent. If you drag another window in front then remove it, the window will refresh just once, so you see a snapshot of wherever the game is at that time.

It's not my computer so I don't know what's on it. I do know that it played games perfectly a year ago. Any ideas what's happening and how to fix it?
#37
Does anyone know where I can find an invisible TTF font? I've replaced the default 'say' command with a GUI, but need an invisible font for speechView etc. An invisible bitmap font will crash when it comes to accented characters.  Google is coming up with a lot of dead links.


edit: scratch that. There's a wonderful freeware invisible font here: http://www.angelfire.com/pr/pgpf/if.html
#38
My game is entering its testing stage, so I'd value any feedback! You can find about a hundred screenshots on the main site, plus a teaser video to give you an idea what it's all about. Please PM me if you're willing to test the whole game.

The test version is complete but lacks polish, and that's where I'm hoping you can come in - suggesting easy improvements, spotting bugs, suggesting more dialog, etc.

I'm trying to keep all the discussion in one place for convenience, but if you'd rather post here that's fine. Thanks for reading!
#39
Some people like me are still using 2.72, so I'm posting this here for future reference.

I use Gilbert Cheung's excellent 'OverHot' code. I've adapted it slightly so that after right clicking a person, the following code runs every cycle until the next right click:

Code: ags

if(overhot_text ==""){	overhot_text =rcPersonName;
			if(overhot_text !="")	// showing a person's name?
			{myOverHotColor = speechColor + 29248;	
			if(myOverHotColor > 65503) myOverHotColor =speechColor -590;
			}


This code worked fine for the past year, but of course my other code is always changing. Today I found that right clicking a person then moving the mouse over a few objects always caused this crash:

Code: ags

---------------------------
Illegal exception
---------------------------
An exception 0xC0000005 occured in ACWIN.EXE at EIP = 0x00427F18 ; program pointer is +5, ACI version 2.72.920, gtags (18,26)

AGS cannot continue, this exception was fatal. Please note down the numbers above, remember what you were doing at the time and notify CJ on the Tech forum.



Most versions of Windows allow you to press Ctrl+C now to copy this entire message to the clipboard for easy reporting.
---------------------------
OK   
---------------------------


The numbers are always exactly the same. I found that by removing the addition part of the above code, it no longer crashed. I don't know if this has any relevance to 3.x.
#40
I call character[npc].changeRoom(player.Room,x,y) in the middle of a function. But the character remains in his old room. By inserting Display("text") at key points I can briefly see the character appear, but then he's gone before the function ends. Yet I never told him to go away. So...

1. Is there any other mechanism that can change a character's room?
2. Is it possible that 'changeRoom' could be called, then canceled later in the same function?

I can post the code if you like, but the relevant functions are about ten pages long.
SMF spam blocked by CleanTalk