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

#681
For FaceDirection, I have just what you need.

Code: ags

//Put in Script Header
enum Directions
{
  eUp, 
  eDown, 
  eLeft, 
  eRight
};

//Put in Script
function FaceDirection (this Character*, Directions direction)
{
  if (direction == eUp)
  {
    this.Loop = 3;
  }
  else if (direction == eDown)
  {
    this.Loop = 0;
  }
    else if (direction == eLeft)
  {
    this.Loop = 1;
  }
    else if (direction == eRight)
  {
    this.Loop = 2;
  }
}


If you want them to turn to face that particular direction, there's a slightly different function for that I wrote in my last game, but this version's in my latest build.
#683
Because I'm not using 16bit graphics, I'm using 8bit. I need to have control over the background image and the sprite as it's being blitted so that I can achieve the desired effect.

It's a stylistic thing. 16bit transparency looks completely different.

Edit: I'm also using a plugin because AGS doesn't allow direct memory access to dynamic sprites in script, and Get/PutPixel is really really slow.
#684
I've been trying to work out for ages how to alter sprites just before they're blitted to the screen. This will be incredibly useful for the transparency plugin I'm using for my game - it would mean I can have transparent objects and characters rather than simply using overlays.

Unfortunately, I've been reading the plugin API extremely intently, and I've seen no reference to catching sprites before they're blitted, only when they're loaded. This means that if the plugin tries to implement the transparency, it will only be against the background, and instead mask out the objects behind the translucent character. It's important that the screen is already half drawn before the sprite is changed, as this will give the plugin an accurate description of the screen behind the character.

I reiterate, I don't want the sprites before any of them have been blitted, nor when all of them have, but when some of them (the ones drawn behind the translucent actor) have been blitted.

If anyone has a workaround for this, it would be awesome.  And if not, is there any hope that the hook to catch sprites before they are blitted can be added to the plugin API (similiar to the "Sprite is loaded into the cache", but called at a different time, I guess)? I believe it could be quite useful for those wanting a half-completed screen to mess around with. Apologies if this has already been asked. :)
#685
Just a few ideas I've been kicking around. Might make some into plugins or modules if they're impractical or impossible to implement.

I'd like to see better 8bit palette support with sub-palettes for sprites so that we can change their palette values without changing the sprite itself. It'd be useful for tinting and lighting a sprite without messing around with fiddly palette handling, and an easy method for making random people without importing massive amounts of sprites. SCUMM had it, I believe, and OHRRPGCE has a good implementation. True, they were limited to 16 colours per sprite, but how many do you generally need for 256 colour games?

Alternatively, I'd like to be able to control individual characters' and objects' Light Levels in script, rather than purely on a region basis.

Implementation of a more versatile .mod player would be nice, too. Mikmod's the one I've been looking at - it can change the volume of individual channels, leading to a nice iMuse kind of effect.

On the plugin front, I'd like to see hooks for when sprites are being blitted to the drawing surface. We have sprites that can be changed when they're loaded, but I've noticed that I can't have translucent chararcter or object sprites since the interrupts don't cover when a screen is halfway blitted with characters (meaning that trying to change the sprite will result in them being ). I'm pretty sure that sprites are blitted in from top (back) to bottom (front) so just adding in that hook will give a lot more freedom.

Also:
- Non-blocking Dialog and Display GUIs. I'd love to get my hands on something that automatically renders like they do with the same ease, but at the moment I can't get the dimensions of Display boxes while they're open, thus making translucent backgrounds to them a rough and often inaccurate business.

- Option to not have an outline in a dialogue parser (the door dialog in DWEF shows this, I didn't really want the outline to happen.)

- Changing of the game palette when changing the background frame, if they have different palettes happens before or after the image has changed, not at the same time, leading to some distracting flashes. Is there any way to fix this in the engine?
#686
That's a good start, but the animation in The Dig is punctuated by those blue vapor trails, which are pretty fun to do, really. Put the white outline layer above a transparent layer and paint away.



This is what I came up with. Very messy, since I don't have a wireframe pyramid, but I think this is what they did - they had the outline animated, and then drew some smoke effects around the wireframe in blue. To get that fading blue effect, I'd feather the smoke so the edges aren't too abrupt. I'd also do it sparingly, as it looks quite work intensive.

As an aside, the video from The Dig actually betrays what they did there - it's a prerendered movie, since the action occurs solely on the background layer. This way they didn't have to worry about in-game transparency. I believe it would be done by merging a background frame and an animation frame in Deluxe Paint. That would do it quite well.)
#687
Adventure Related Talk & Chat / Re: Rune Quest
Sun 26/07/2009 16:31:15
Quote from: AtelierGames on Sun 26/07/2009 16:01:33
If you wanted to create a new RPG (which I guess that's what you're after from the title (you might have some issues with Jagex and their product Runescape)), then I'd steer away from the MMORPGs.

I think someone else might take more pressing issues to it.

It's what I first thought when I saw this thread, anyway. I like that system.
#688
Adventure Related Talk & Chat / Re: Rune Quest
Sun 26/07/2009 15:33:40
It needs to have a percentile based task resolution system, point based magic, and instead of armor adding to your AC, it needs to reduce damage recieved. Of course, we could go the whole hog and have a resistance table too, and then there's the matter of Attack test followed by Parry by the target. All in all, I think you should use the BRP system as a base and work from there.

But to be honest, I have no idea what this game is about. We're not psychic, you know.
#689
Okay, so I'm working on the second part of my game, and there are a few stumbling blocks I'm finding difficult to overcome:

Regarding tracker music: Is there any way to control the volume of the individual tracks on IT files while you're playing them in AGS, or is the MOD-etc playing library a black box (i.e, I'll have to write a plugin for it and handle music playing myself)? I think this would be incredibly useful in implementing dynamic soundtracks - for example, if you have a more furtive melody that follows the same bassline, you could reduce the volume on the calm melody's track and increase the volume on the furtive melody to create a simple iMuse style thing with tracker music. If it were, theoretically, implemented into AGS's new sound system or as a plugin, I'm guessing the format could be something like:
aMusicTrack.trackvolume[0] = 100;

I'm curious, is this possible at all in the tracker library that AGS uses? It would be very useful for me.

Regarding 8-bit graphics: Exporting a background in 8-bit mode seems to export a 24bit bitmap rather than an 8bit one, which struck me as kind of counter-intuitive when I tried exporting a background to change its palette.

Also, I used to be able to export a complete palette file by opening a room and changing the room-specific palette slots to gamewide, thus giving me a full 256 colour palette to work with in case I needed to add objects to the room that weren't interactable. Unfortunately, the new versions of AGS seem to keep the palette slots black.  And I don't know a proper workaround for this - is there any way to merge the game palette with the room palette? Exporting backgrounds doesn't work, and the colours panel has lost this functionality?

((Finally, as an aside, does anyone have a weather plugin/module that can render to a screen sized dynamic sprite instead of the framebuffer? It's the only way I'd be able to get it to render translucent instead of solid in 8bit colour mode and I'm not skilled enough to write a rain routine myself.))

Thankyou, everyone :)
#690
Okay, those bugs have been fixed, and I also tied up some loose ends in the parser. v1.1.0 has been uploaded.
#691
Thanks everyone who played the game! :3

Leon: The Eyepatch lady and receptionist bugs have been finished in v1.0.1, though if any more bugs appear I'll fix them in another release. As for the soundtrack, it might be available depending on Sebastian's choice. After all, it's his music, not mine. I'd wait until all parts are available, though.

JJ: I did plan to have voice acting at some point, but it seems prudent to wait until I've made all the parts before getting VAs to do their stuff. I don't actually have any VAs to hand apart from myself, and I'm not versatile. :P.

But if the game is well-liked enough, voice acting is a certainty - though it has to be good voice acting. I'm not subjecting everyone to bad VA. x3
#693



The year is 2053. A world, stagnant and full of money-grubbing, heartless corporations gripping onto their intellectual property with iron fists. Nothing can grow, nothing can progress while they squeeze every last penny from their stale ideas. Black Sun, the crypto-anarchist hacker organisation, is the one thing that stands between them and utter oblivion. By stealing back their creations and giving them away for free, Black Sun ensures that ideas can once again circulate in a world where everything comes at a price.

Hackers in the Black Sun movement are the Robin Hoods of the digital age, stealing from the rich, bloated corporations and letting even the smallest user experience the best in ractive entertainment.

Ideas Must Be Free.
The Sun Will Set On Big Business.
A New Dawn Will Rise.
- Black Sun Newsletter #20, "On Ideology"


Jakob is a hacker for Sector H, a new branch of Black Sun, a crypto-anarchistic organisation that looks after its own. Funded by mysterious benefactors, Jakob and the rest of Sector H break open ractives to ensure that everyone can play them. It's a dog-eat-dog political minefield that Jakob wants no part of.

All Jakob wants to do is play ractives, watch the new Ripsaw Bloodgore concert, and have fun. He has no place in this war - but fate conspires against him, dragging him into the very core of this matter. He will never forget the day...


Death Wore Endless Feathers.

Disk 1 of this four Disk tale establishes the setting, as Jakob, taken from his usual routine of grinding for Silver Bracelets and Gemstudded Hides, is forced to get food for Sector H. With no money, and none of his comrades willing to help him, what will he do?

Oh, the humanity!


This Exciting Ractive Features:
- Fully Animated, 256 Colour Graphics!
- A full soundtrack by Sebastian Pfaller!
- Real Time Translucency (Courtesy of Nickspoon)
- Characters You Won't Forget! (most of the time)
- Passable Humor!

Author's Note: This is my absolute first game that I have finished, ever. This took me 6 months of almost solid work, and I really do hope you enjoy playing it as much as I enjoyed making it. Or more, in fact! It was a real rollercoaster ride. If people like it enough, I will definitely get to work on the rest of the series!

MAKE SURE YOU UPDATE .NET to 3.5 and run this game on DirectDraw mode. The plugin will not work otherwise! Updating is a good idea :)


UPDATE: There were a couple of cosmetic bugs in certain parts. Nothing game breaking, to say the least, but they were pretty jarring. v1.0.1 has been put up.

Download Link:
DOWNLOAD

Mirror: (Just in case my bandwidth runs out)
MIRROR (Courtesy of Peder Johnsen!)

#694
Time for an update!

A new screen, of a lighter and more colourful nature:


and so far, the game is undergoing some major and thorough beta testing, hence the big delay. There's lots of complex conditional scripting, so it needs it (as well as parts with AI).

Update for the music, as well - the game might recieve the music of kaputtnik in the soundtrack! I really, really like what I've heard from him so far, and I hope he stays on :3

I'm pretty excited about this project.
#695
Quote from: Cyrus on Tue 23/06/2009 06:07:42
About that start screen... Is it a reference to Discworld?

Yes. x3 I've always imagined Death to be the Death from Discworld, but it's also an attempt to make some ridiculous and nonsequitir art for the intro. And an excuse to make a big

Quote from: SnakeI've got to say though, I know this 'aint the critics lounge, but I find the notes and flyers in the first screenie to be a bit distracting. At first I thought they were all part of a big wonky GUI

Then it's fulfilled its intention! They're physical manifestations of distracting popups. It's not as distracting in-game, though. :)
#696
DEATH WORE ENDLESS FEATHERS






It was about eleven o'clock in the evening, mid October, with the sun not showing its face and the threat of rain looming hard on the distance. Tired, hounded, sleep still stinging my eyes and wearing the same clothes I had woken up the previous morning with, I set out into the dark, derelict streets in search of a cheap takeout, the sodium glare of innumerable street lamps masquerading as stars lighting my way. I was nothing a cool, collected hacker ought to be. Before I knew it, I was calling on four hundred thousand bytes.

The virus called destiny copied itself to my master boot record. There was no going back.

I wanted to go home.

It's tough being a hacker in the mean cities of Albion. Between the megacorps trying to destroy your rig and the Flock demonising you at every turn, you would think you would have had enough on your plate. You just want to kick back, pirate a few good passives and curl up for the night. But it's not that easy. It's never that easy.

Seven years ago, the cracking group Black Sun fought the megacorp software giant Kankakusakujo in a battle of skill and programming might, a swashbuckling tale of copy protection and cracks, of keygens and counterattacks. But when an early alpha build of Kagi To Mon, a top secret game, was released early, one with protection that surpassed even the rig-destroying DRM that had come before it, the whole of Albion was consumed in the fallout. It did things no computer program could do - it reached inside the minds of the pirates who dared crack its secrets, and it destroyed their sanity. It showed them images of things beyond human comprehension. Acting quickly, the CEO of Kankakusakujo, the mysterious and enigmatic Ms. Eigermann, blamed the pirates for releasing a terrible virus, and gained control of the entire island in one fell swoop. People feared technology. They feared the hackers, and drove them underground, Black Sun being all but wiped out.

So now, on the outskirts of society, living in derelict apartments and run down hovels, the hackers fight back against the megacorps. Their futile efforts to release every bit of software, freed of the shackles that are placed upon them by the megacorps, still run on, long after the battle was won by Kankakusakujo. Until today.

When Kagi To Mon is to be released officially, and the original members of the Black Sun reappear. It is up to the hackers to learn the secret behind this game and stop its release, before it's too late.

Featuring:
- 8-bit graphics with hand drawn backgrounds!
- Several playable characters, each with their own unique way of interacting with the game world!
- Fully animated cutscenes!
- Heapings of Retrofuture and technology from the past, present and future!
- A diverse and intricate game world!


PROGRESS
Story 100%
Graphics 20%
Scripting 50%
Sound Effects ??%
Voice Acting 0%
#697
AGI Emulation Plugin (last I saw of it): http://www.adventuregamestudio.co.uk/yabb/index.php?topic=19601.0

I would like to use this in my game (for a special area of the game) but unfortunately, my game runs in 320x240. The author posted the source but the host went down - does anyone have the source to this plugin or if they have, managed to change it to support other resolutions?

I did several searches, and not turned up anything useful on the subject, so either I'm blind or there is nothing. The plugin looks awesome and would be a great asset to my game, which is unfortunately under a prohibitively tight schedule.

Edited by mod: Moved to appropriate place.

Apologies if this has been answered elsewhere or this is in the wrong forum. :)
#698
Quote from: KhrisMUC on Mon 11/05/2009 22:40:18
With your code, as soon as the cursor changed to the icon (and the mode to eModeUseinv), the cursor mode was immediately reset to eModeInteract. That's why it looked as if nothing had happend.

The change makes the mouse mode change get called only once, right before the inventory is displayed.

Ah, so that's where it was going wrong. It works perfectly now, thanks :D
#699
So I'm making a somewhat BASS/Broken Sword like interface for my game, and I've come across a problem I can't solve, but know the answer lies SOMEWHERE I have probably stared at for ages.  I've made everything else work, from interaction, right click, context sensitive mouse graphics, and popup inventories, but I just can't get the cursor to set itself to Use Inventory Item, turning the cursor into that inventory item and having it be the mode you're using. player.Activeinventory never actually becomes anything but null, and I can't see where I'm going wrong. I've tried workarounds, toggling Handle Inventory Clicks in Script, and everything, I just can't see it.

Here's where I changed the code that affects the mouse cursor:

Code: ags
function repeatedly_execute() {


  // put anything you want to happen every game cycle, even when
  // the game is paused, here

  if (IsGamePaused() == 1) return;

if (player.ActiveInventory == null) {
if (GetLocationType (mouse.x, mouse.y) == eLocationHotspot) {
  vhThingover = Hotspot.GetAtScreenXY (mouse.x, mouse.y);
  mouse.UseModeGraphic (hotspot[vhThingover.ID].GetProperty ("mousetype"));
}
else if (GetLocationType (mouse.x, mouse.y) == eLocationCharacter) {
  vcThingover = Character.GetAtScreenXY (mouse.x, mouse.y);
  mouse.UseModeGraphic (character[vcThingover.ID].GetProperty ("mousetype"));
}
else if (GetLocationType (mouse.x, mouse.y) == eLocationObject) {
  voThingover = Object.GetAtScreenXY (mouse.x, mouse.y);
  mouse.UseModeGraphic (object[voThingover.ID].GetProperty ("mousetype"));
}
else mouse.UseModeGraphic (0);}
else mouse.Mode = eModeUseinv;

if (mouse.y > 219)
{
  if (player.ActiveInventory != null) mouse.Mode = eModeInteract;
  gInventory.Visible = true;
  gOverhotspot.SetPosition (gOverhotspot.X, 210);
}
else if (gInventory.Visible == true)
{
  gInventory.Visible = false;
  gOverhotspot.SetPosition (gOverhotspot.X, 230);
}
}


Code: ags

  // 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)
  }
       else if (button == eMouseLeft && player.ActiveInventory == null) 
    {
      //Left Mouse Button triggers an interaction with the subject.
      if (IsInteractionAvailable (mouse.x, mouse.y, eModeInteract)) ProcessClick(mouse.x, mouse.y, eModeInteract);
      else ProcessClick (mouse.x, mouse.y, eModeWalkto);
    }
    else if (button == eMouseLeft && player.ActiveInventory != null)
    {
      //Use an Inventory Item (If active)
      ProcessClick (mouse.x, mouse.y, eModeUseinv);
    }
  else if (button == eMouseRight && player.ActiveInventory == null)
  {
    // right-click triggers an examination.
    ProcessClick(mouse.x, mouse.y, eModeLookat);
  }
  else if (button == eMouseRight && player.ActiveInventory != null)
  {
    // right-click with an active inventory sends it back to the inventory window.
    player.ActiveInventory = null;
  }
  else if (button == eMouseMiddle) { 
    // Middle-button-click, default make character walk to clicked area (a little shortcut)
    // Could have been just "player.Walk(mouse.x,mouse.y)", but it's best to
    // leave our options open - what if you have a special script triggered
    // on "walking" mode?
    ProcessClick(mouse.x, mouse.y, eModeWalkto); 
  }


Using 3.1.2 SP1. I'm sure I'm just doing something really stupid and not seeing it.


All my game files are in here, it's just a shell at the moment, nothing but programmer graphics and bare-bones testing stuff.
http://www.2dadventure.com/upload/Cyberpunk.zip

Please can someone say where I'm going wrong? :3
#700
Quote from: monkey_05_06 on Mon 27/04/2009 17:06:07
So if I understand what you're wanting to do, you're basically wanting to modify the palette associated with the cropped screenshot without effecting the palette of everything else...right?

Kind of. I want to modify the image inside the dynamic sprite so that the indexes inside that sprite point to a different part of the main palette. I'm not touching the palette itself, but what part of the palette is used for the image in the dynamic sprite. By changing the values inside the memory directly, it avoids the problem of using the slower pixel-only commands. (What it's doing, effectively, is changing the value of each variable in an array from 0-249 to values 250-255 without any other calculation. I just need to know whether Dynamic Sprites can be accessed like normal arrays.)
SMF spam blocked by CleanTalk