Author Topic: Wowsers!  (Read 6767 times)

Online Donnie Ewald

  • Administrator
  • Sr. Member
  • *****
  • Posts: 274
    • Ego's Abode
Wowsers!
« on: July 01, 2009, 09:13:28 PM »
What if I said that I can adjust the game date/time to be whatever I wanted?
What if I said that I could transfer a party to another square without using a single event?
What if I said that it's possible to have nearly unlimited text?

Would you be disappointed if you had to run a program in the background to attain this?

I spent a few hours tonight putting together some ideas and it works quite nicely.  Keep in my mind that this is preliminary; but, all the things mentioned above are possible.  I created a large empty room with a stone wall surrounding the perimeter.  If you approach the walls from any direction you'll be automatically teleported to 1,1 without using a single event.  There is one event on this map and the only thing it states is "Can you imagine?"  But as I approach the wall and am teleported you'll see the text change!  If you watch the time you'll see that I reset it to 13:00 each time we teleport.

I created a video to illustrate these thoughts and as a proof of concept.  It's not the greatest video as I'm a neophyte with Camtasia:

http://www.reonis.com/FRUA/FRUA%20Skip/FRUA%20Skip.html

So, is this something that I should pursue?  Is there any interest in a program that could do these things to FRUA?

Offline manikus

  • Skriptor
  • Administrator
  • Hero Member
  • *****
  • Posts: 9886
Re: Wowsers!
« Reply #1 on: July 01, 2009, 10:29:08 PM »
 :o

Please, tell us more. :) I understand how this could effect events, but what are the other ramifications? Graphics??? Databases???

Offline Rosestar

  • Full Member
  • ***
  • Posts: 192
  • Keeper of the Blue Kitten
Re: Wowsers!
« Reply #2 on: July 01, 2009, 10:37:10 PM »
 |sf>Interesting.  Would this require a self-operating program (i.e. I hope it doesn't require a commercially sold program to use) and can the program run in conjunction with D-Fend?
« Last Edit: July 01, 2009, 10:39:01 PM by Rosestar »
---
Suzanne M. Ferree
  ev322@netzero.net

Online Donnie Ewald

  • Administrator
  • Sr. Member
  • *****
  • Posts: 274
    • Ego's Abode
Re: Wowsers!
« Reply #3 on: July 02, 2009, 05:10:24 AM »
When someone tries to hack FRUA it seems that we always look to edit ckit or one of the other files.  I got to thinking that maybe I could program a small utility to sit in the background and write stuff to the memory of the game.  I decided to start small and adjust the location of the party as it seemed to be an easy thing to tackle.  So, it worked.  It's not flawless as I don't have an easy way to refresh the screen like a legitimate event would.  So, my program Looks after the teleport which refreshes the screen.

Unfortunately, Look adjusts the game time and I thought it would be better if we didn't impact the time in that way.  So, I found the memory location of the game date/time and showed that I can reset that to whatever time I want.

A common complaint of mod authors is that they run out of text space.  Since I could do a few things already, shouldn't I be able to inject different text into an event?  Sure enough.  My knowledge of how FRUA stores all this is very basic right now; but, I can see that it's possible.

Rosestar, there is a stand-alone program that I have compiled to do this.  It will not require anything to be purchased, though if it proves useful to someone, I would never turn down a charitable donation   ;D  I also use D-Fend as a front end for DosBox and it seems to work fine.  The memory address changes if I don't use DosBox and if I run FRUA by itself; but, that would be something that I'd have to either require or program the utility to check for both DosBox or FRUA.

manikus, right now I'm just affecting events or writing directly to the memory locations.  I could see other things possible too.  My struggle at the moment is how to program this in a way that makes it easy for mod authors to use.  Maybe I have a text file or database where information is stored and the compiled program would import that when running.

My concern is that this wouldn't be something useful for folks and that I shouldn't spend the time programming it.  I'd like to think that it is; but I wanted to hear some other thoughts.  I guess I might make mention of it on the mailing list too.

Offline Ben J

  • Keeper of the 44 quest variables
  • Dungeon Craft Tester
  • Hero Member
  • ***
  • Posts: 2723
  • "See how I reward those who fail me!"
Re: Wowsers!
« Reply #4 on: July 02, 2009, 08:01:12 AM »
This could open up nearly endless possibilities for designers.

The only downside would be that it becomes increasingly complicated to run designs. Right now, I need the original FRUA, patch 1.2,  UAShell and DOSBox to play most mods. This would add one more program to the mix.

But apart from that, it sounds like a really great idea.  :)
« Last Edit: July 02, 2009, 08:03:27 AM by Ben J »
Released designs:

The Sect

Offline manikus

  • Skriptor
  • Administrator
  • Hero Member
  • *****
  • Posts: 9886
Re: Wowsers!
« Reply #5 on: July 02, 2009, 10:08:47 AM »
Donnie: I understand a little better what you're doing now, and I would think that some graphics might be changeable, but nothing like my secret wishes I imagine. :D :D :D
I must tell you, I am very interested. :) As a player, I would be willing to use this to play a design that required it. As a designer, I would give it a shot as long as no programming was required on my part. ;) Scripting would be fine. If I can learn scripting for DC and Aurora, why not for FRUA?
Addressing Ben J's valid concern, maybe there is a way so that the player didn't have to do anything? Or maybe she can just use UAshell and it would do everything (though I hear rumors that UAShell development has stopped). It is a bit of a pain to load up a bunch of different things to play a game, but considering how many quality FRUA mods there are, I'd personally be willing to add another step or two to play them. :D

Offline nologgie

  • Non-resident Non-expert
  • Dungeon Craft Tester
  • Hero Member
  • ***
  • Posts: 3465
Re: Wowsers!
« Reply #6 on: July 02, 2009, 04:33:26 PM »
  This sounds really neat, and I'm trying to imagine the possibilities and limitations. Which is to say, I have more questions than answers.

  It looks like you are writing new data to an existing text event. Is this correct? This text expansion alone would please many designers. Do you think the backgound program could handle parsed-text inputs (like Zork or Ultima) to produce an interactive conversation mode?

  I'm not as concerned with time questions as many others, but the motion aspect has my attention. I posted this in another thread:

Read/write Map Co-ordinate - Allows storing and writing coordinates (X, Y, or both) to transfer events. Would enable wrap-around maps via zone events, where leaving the edge of one map would transfer to the edge of the next selected map at a corresponding square. Would also work for "holey floor" zones in ruins for direct drops of 1 or 2 levels.


Could something like this work?

Tom
Some days it just doesn't pay to gnaw through the straps.

Online Donnie Ewald

  • Administrator
  • Sr. Member
  • *****
  • Posts: 274
    • Ego's Abode
Re: Wowsers!
« Reply #7 on: July 02, 2009, 05:08:23 PM »
Greetings!

I'm not quite sure what all of this might entail.  I figure that I've some free time now and again and I like to program as a hobbyist.  Maybe I can take some time and flesh this out a bit more.

manikus, I know so very little about programming graphics that I'm not sure if I would tackle that.  I do think that I could create sound events that could play in the background during certain times.  This might allow the use of higher quality tunes from an MP3 or such.

Tom, what I'm hoping to tackle next might fit your goal nicely.  I can store and retrieve map coordinates already and I suspect that I could simply write that information to a transfer event which would allow what you describe.

I'm making no guarantees outside of giving it a go; but, I'm going to try to document how events are stored in memory and maybe try creating them on the fly instead of editing an existing event.  If I can do that, I could store all the events in a text file and load them as needed and feed them into FRUA.  This would allow a more robust scripting opportunity than what we have available.

Offline nologgie

  • Non-resident Non-expert
  • Dungeon Craft Tester
  • Hero Member
  • ***
  • Posts: 3465
Re: Wowsers!
« Reply #8 on: July 02, 2009, 05:54:52 PM »
AWESOME BRO!

I know it's just a hobby, and I don't expect miracles from you, but I believe any advances you make in this area will be very well received.
Tom
Some days it just doesn't pay to gnaw through the straps.

Offline ProphetSword

  • Mod Designer
  • Administrator
  • Hero Member
  • *****
  • Posts: 2913
  • FRUA Lives!
    • Lands of Adventure
Re: Wowsers!
« Reply #9 on: July 02, 2009, 06:43:27 PM »
I'm late to the party, but I have to say that this is a pretty cool little thing you've invented.  Way to think outside the box and head in a direction no one has considered.

Is it a Windows or DOS based program?  I'm going to assume Windows based.
LANDS OF ADVENTURE: An Old-School Style CRPG

More Information Here: http://landsadventure.blogspot.com/

Online Donnie Ewald

  • Administrator
  • Sr. Member
  • *****
  • Posts: 274
    • Ego's Abode
Re: Wowsers!
« Reply #10 on: July 02, 2009, 07:04:49 PM »
Greetings!

It's defintely Windows based.  For debugging, I've kept the application in the foreground as you can see in the video.  Once I get to the point that I'd like others to play around with it, I'll remove the topmost property.  I'm not quite sure what the memory addresses will look like on other versions of DosBox or on other people's computers.  Once I have something for others to play with, I'll kick it out.

Online Donnie Ewald

  • Administrator
  • Sr. Member
  • *****
  • Posts: 274
    • Ego's Abode
Re: Wowsers!
« Reply #11 on: July 03, 2009, 11:19:37 AM »
I've spent a bit of time this morning puttering around in the memory of FRUA.  Thankfully much of the memory addresses store the data in nearly the same order that the geo*.dat files do.  Though this is good news as I have a head start on some documentation, I'm a bit overwhelmed when I start to think of the extent of things that must be juggled to inject good, correct events into FRUA's memory.  If an existing event is just being edited, then things are much more simple.  But, what if the event chains to another?  I have to be respectful of that.

It's exciting to think of the possibilites.

Online Donnie Ewald

  • Administrator
  • Sr. Member
  • *****
  • Posts: 274
    • Ego's Abode
Re: Wowsers!
« Reply #12 on: July 04, 2009, 06:45:00 AM »
Something else that I've learned is possible is adjusting the walls during play.  I know that most folks would simply copy one dungeon to another and adjust whatever they wanted there; but, it's possible to dynamically alter the same dungeon.  I've adjusted the walls, floors and backdrops successfully.

With quite a bit of programming, you could allow area view to only show what squares have already been visited.  To do this, you might have the current map be empty of walls except for the immediate area.  If the area is viewed they'll only see lines where the walls that you've injected are. As they move, you could inject more walls into the map which would now allow them to be viewed by area.  Pretty slick.

Offline Darius

  • Jr. Member
  • **
  • Posts: 71
    • Darius' Unlimited Adventures Domain
Re: Wowsers!
« Reply #13 on: July 04, 2009, 08:48:01 AM »

Sweet!  That does sound like a lot of effort, but it would make for a nice effect.  I bet you can also swap backgrounds based on direction or even time of day, right?  So for example, from 6 AM - 9 AM the sun can be seen when facing East, then from 5 PM - 8 PM it can be seen when facing West, and perhaps the same could be done with the moon...

Online Donnie Ewald

  • Administrator
  • Sr. Member
  • *****
  • Posts: 274
    • Ego's Abode
Re: Wowsers!
« Reply #14 on: July 04, 2009, 09:03:47 AM »
Greetings Darius!

You're absoluetly right!  The thing that's holding me back a bit is the user-friendly part of things.  I can see many different uses of injecting things into the memory and I'm capable of doing it myself with my coding; but, I'm playing around with different ways to allow the end user to do it dynamically themself.

I guess there's no hurry.  We've been puttering around with FRUA for so many years, what's a bit more time?

 

anything