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.


Topics - Galavant Garde

Pages: [1]
1
Idle Chatter / One Of Them
« on: December 27, 2016, 02:19:30 PM »


I finally have a name I'm happy with for the zombie game, also Dropbox is about to change Ts & Cs meaning all the pictures from the previous thread will disappear, so time to start a new thread I guess (images won't vanish on this one because I'm using my own website server)

I'll post updates and info here from now!  Currently working on making the zombie look meaner/better - the above artwork is just a quick experiment

2
Scripting / Firing from centre VS firing from bone
« on: March 11, 2016, 04:48:58 AM »
Oh hey guys, I'm having a little issue with enemies firing accurately.

I want my enemy fire to spawn particles while flying through the air so you can effectively see the bullets.  Think like the small rings you see on the Matrix when they're shooting in slow motion.  Anyway, the effect looks pretty cool, but the problem is when you set the enemy to look at the player, and set 'look' to affect weapons, it means the angle the object is facing (which is directly at the player) becomes the same angle the projectile is fired from.  This means if you're firing from the centre, it'll hit the player...whereas if you're firing from the enemy's gun (which in my case is held up to the left shoulder) the bullet always flies over the player's shoulder too.  Basically, the bullet travels parallel to the line of sight hence it never hits.  To mitigate it I added a slop to the projectile, but it hardly ever hits and is still too inaccurate.

Is there any way to set the look origin to a bone?  Or to have a static projectile slop so I can aim slightly inward to intersect the line of sight and hit the player more often?  I'm still trying solutions so if I work one out I'll post it.  Open to any suggestions  8)

3
Idle Chatter / new Zombie game :-)
« on: January 27, 2016, 02:34:18 PM »
Oh hey, I've been doing weekly scripting lessons with a few of my friends teaching them how to make stuff with dim3 so hopefully you'll see some more contributing members joining the forum soon ;-) I was inspired when someone told me "unity is the future" and I'm like "lies!"  My new recruits are keen to get coding/building so we're going to work on a project together.

I'm working on a new enemy AI (much better than anything you saw in my old Ronja game) so that enemies can work together as a team, environmental things have a greater impact (stepping on broken glass makes noise, the speed that you walk makes more/less sound, enemies use node IDs to know how to interact with the environment (ducking/hiding etc)) and I'll be testing it using my old Ronja assets.  When the AI is solid (it's pretty stable already; enemies are able to amicably decide between them who should step out of the way to let the other past when crossing paths) it's map-building time!

The game concept is the opposite of a regular zombie scenario...there's just one zombie, you're it, and all the humans are trying to hunt you down and kill you.  So it's a stealth/evasion game where you're presented with moral choices along the way and there will probably be a human in there to takes pity on you and tries to help you.  Also, enemy and object layouts will be random so no two runs of a level are ever the same, and you'll use things like perfume to hide your stench and makeup/clothes to disguise yourself.  Anyway I can't wait to show you some stuff - I'll keep you posted

Wanted to post this as I'm curious what you guys are working on and I also want to see more things come out of dim3 so best to set an example myself ;-)

4
Scripting / walking VS running
« on: January 09, 2015, 06:37:36 AM »
Oh hai again, you know how you can set an object's walk speed and their run speed separately?  Well, I can't quite work out how to get an object, say an enemy, to switch between walking and running.  There's an obj.motionVector command for walking to nodes, but none for running to nodes.  Also there's an obj.status command that lets you know whether the object is running, but not one to let you know if it's walking.  Is it possible to get an object to switch between walking and running?  Or will I just have to manually set the object script to change obj.forwardSpeed.walk depending on if I want it to walk or run?

5
Engine / Ragdoll?
« on: January 05, 2015, 12:04:01 PM »
I'm sure I can remember rag doll mode being a new Dim3 thing once upon a time but I can't seem to find it in the APIs...is it still a thing?

6
Scripting / Onscreen messages for multiple item pickups
« on: December 15, 2014, 05:13:46 AM »
Hi there, slowly getting back into this and thought I'd start out sharing a little script I came up with this morning to resolve a problem I've had for a long time.  Say you pick up an item in game and a message is displayed on screen saying what it is...great!  But then say you pick up 3 items within a short succession of one another...if the display text changes as soon as you pick the new item up then the display telling you what the old item was will disappear too fast to read.  The solution is using arrays :-)

So I have one script that controls all of my onscreen messages that looks like this:

Code: [Select]
// DISPLAY MESSAGES CONTROLLER
// By Cayelan Mendoza

script.attachEvent(DIM3_EVENT_SPAWN,'startup');

var displayingMessage=false;
var msgArray=new Array(0);

function startup(obj)
{
    iface.text.show('Alert');
}

// Receive call

function displayMessage(obj,id)
{   
    playSound(obj,id);
    disposableVariable=msgArray.push(id);

    if (!displayingMessage) show(obj);
    else obj.event.chain(10,'show');
}

function show(obj)
{
    displayingMessage=true;
    newVar=msgArray.shift();
    iface.text.setText('Alert',decipherID(obj,newVar));

    if (msgArray.valueOf()==0) obj.event.chain(30,'end');
    else obj.event.chain(20,'show');
}

function end(obj)
{
    displayingMessage=false;
    iface.text.setText('Alert','');
}

// Message sounds

function playSound(obj,idy)
{
    switch (idy) {
   
    case 1:
    case 2:
    case 3:
    case 4:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    sound.playGlobalPlayer('Weapon Pickup',1);
    return;
   
    case 5:
    case 6:
    sound.playGlobalPlayer('Laser Charge',1);
    return;
   
    case 19:
    case 22:
    sound.playGlobalPlayer('Select',1);
    return;
   
    case 26:
    sound.playGlobalPlayer('Armor',1);
    return;
    }
}

// Message IDs

function decipherID(obj,idx)
{
    switch (idx) {
   
    case 1:
    return("Picked up some ammo");
   
    case 2:
    return("Picked up some rifle ammo");
   
    case 3:
    return("picked up some grenades");
   
    case 4:
    return("Picked up some rockets");
   
    case 5:
    return("Picked up some laser charge cells");
   
    case 6:
    return("Picked up an LP4 laser pistol");
   
    case 7:
    return("Picked up an UZI 9mm");
   
    case 8:
    return("Picked up an Assault Rifle");
   
    case 9:
    return("Picked up an automatic Sniper Rifle");
   
    case 10:
    return("Picked up an F2000S");
   
    case 11:
    return("Picked up an M1 Bazooka");
   
    case 12:
    sound.playGlobalPlayer('KeyPress',1);
    return("OBJECTIVE 1 COMPLETE");
   
    case 13:
    sound.playGlobalPlayer('KeyPress',1);
    return("OBJECTIVE 1 FAILED");
   
    case 14:
    sound.playGlobalPlayer('KeyPress',1);
    return("OBJECTIVE 2 COMPLETE");
   
    case 15:
    sound.playGlobalPlayer('KeyPress',1);
    return("OBJECTIVE 2 FAILED");
   
    case 16:
    sound.playGlobalPlayer('Select',1);
    return("Rendezvous point located");
   
    case 17:
    return("Dimitri has been killed");
   
    case 18:
    return("Door is locked - keycard required");
   
    case 19:
    return("Picked up a door keycard");
   
    case 20:
    return("ACCESS DENIED");
   
    case 21:
    sound.playGlobalPlayer('Adrenaline',1);
    return("Picked up an adrenaline capsule");
   
    case 22:
    return("Osiris package located");
   
    case 23:
    return("Warning - motorbike severely damaged");
   
    case 24:
    return("Security Centre unlocked");
   
    case 25:
    return("Security Centre locked");
   
    case 26:
    return("Picked up some body armor");
   
    case 27:
    return("Door is locked");
    }
}

So all I do is call the displayMessage function from any other script with the an item ID (see the cases under the decipherID function) and it will add that ID to an array of IDs which will all be displayed in succession using a chained delay so you'll be able to read all of them.

I've also added the playSound function so that some items will make a sound as soon as you pick them up and some will play them only when the relevant onscreen message is displayed.  This is so picking up ammo makes an ammo sound immediately and the message follows on whenever, whereas something like OBJECTIVE 1 COMPLETE will only make a sound when the message displays to make sure it's clear

Anyway, the hardest bit was getting the array to work properly so I hope this is helpful to someone  ;D

Pages: [1]