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

#21
Code: AGS

char getName[1000];
engine->GetPathToFileInCompiledFolder("",getName);//Strangeland.exe
Mix_LoadMUS(getname+"ffv6.mp3");


So, this is throwing a compile error, I'm looking to use a code, that grabs the folder in which the game is being executed from (which can vary of course depending on where the user/player is installing the thing)
And from that directory (let's say it's C:/Strangeland) set a path name for an mp3.

Right now, I've been able to run my code perfectly setting specific paths of course, but I wanna set a relative path!
I have no absolute clue how 'GetPathToFileInCompiledFolder' works and what it returns. Mix_LoadMUS takes a char as an argument.


EDIT:

char* path;
_get_pgmptr(&path);
const char * getv = (const char *)path;
engine->AbortGame(getv);

This will print the absolute path + the exe
#22
So apparently 2/3rds of the Primordia squad, are using WINDOWS 7. I compiled a plugin recently, and I send the files over and they had two errors.
Error 1:
MSCVR100d.dll is missing

and
Error 2: Script link failed: Runtime error: unresolved import 'DrawScreenEffect'

(That is a custom function of the plugin).

Anyhows, so Error 1, has been fixed I recompiled the plugin with Visual Studio 08, but Error 2 remains, I thought maybe I should rebuild all files of the game, and reupload, which is what I'm in the process of doing. I don't mind sharing the plugin, and/or it's full code.

http://primordia-game.com/Files0/agswavev2.rar

In fact here it is.

Code: AGS



#ifdef WIN32
#define WINDOWS_VERSION
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#pragma warning(disable : 4244)
#endif

#if !defined(BUILTIN_PLUGINS)
#define THIS_IS_THE_PLUGIN
#endif

#include <stdlib.h>
#include <stdio.h>
//#include <string.h>
//#include <math.h>
//#include <stdint.h>

#if defined(PSP_VERSION)
#include <pspsdk.h>
#include <pspmath.h>
#include <pspdisplay.h>
#define sin(x) vfpu_sinf(x)
#endif

#include "plugin/agsplugin.h"

#if defined(BUILTIN_PLUGINS)
namespace agswave {
#endif

#if defined(__GNUC__)
inline unsigned long _blender_alpha16_bgr(unsigned long y) __attribute__((always_inline));
inline void calc_x_n(unsigned long bla) __attribute__((always_inline));
#endif

const unsigned int Magic = 0xBABE0000;
const unsigned int Version = 1;
const unsigned int SaveMagic = Magic + Version;
const float PI = 3.14159265f;

int screen_width = 640;
int screen_height = 360;
int screen_color_depth = 32;

IAGSEngine* engine;



// Imported script functions



int dY=0;
int tDy=0;
int direction=0;

void CastWave(int delayMax, int PixelsWide)
{
  tDy++;
  if (tDy >delayMax)
  {
    tDy=0;
    if (direction==0) dY++;
	if (direction==1) dY--;
	if ( (dY>PixelsWide && direction==0) || (dY<-PixelsWide && direction==1) ) 
	{
		if (direction==0){dY=PixelsWide;direction=1;}
		else {dY=-PixelsWide;direction=0;}
	}
  }


}





void DrawEffect(int sprite_a,int sprite_b,int id)
{
  int x, y;
  
  BITMAP* src_a = engine->GetSpriteGraphic(sprite_a);
  BITMAP* src_b = engine->GetSpriteGraphic(sprite_b);

  unsigned int** pixel_a = (unsigned int**)engine->GetRawBitmapSurface(src_a);
  unsigned int** pixel_b = (unsigned int**)engine->GetRawBitmapSurface(src_b);

  for (y = 0; y < screen_height; y++)
  {
    if (id==0) CastWave(2,1);
	if (id==1) CastWave(15,1);
	
    for (x = 0; x < screen_width; x++)
    {
	  unsigned int colorfromB = pixel_b[y][x];
	  int getX=x;
	  int getY=y;

	  if (id==0)
	  {
	  	  getX=x-(rand() % 2)-2;
		  getY=y+dY;
	  }
	  if (id==1)
	  {
	  	  getX=x;
		  getY=y+dY;
	  }
	  if (getX < 0) getX=0;
	  if (getX > screen_width-1) getX = screen_width-1;
	  if (getY > screen_height-1) getY = screen_height-1;
	  if (getY < 0) getY = 0;
	  

	  pixel_a[getY][getX]=colorfromB;	  //
    }
  }
  engine->ReleaseBitmapSurface(src_a);
  engine->ReleaseBitmapSurface(src_b);

}


void RestoreGame(FILE* file)
{
  unsigned int Position = ftell(file);
  unsigned int DataSize;

  unsigned int SaveVersion = 0;
  fread(&SaveVersion, 4, 1, file);

  if (SaveVersion == SaveMagic)
  {
    fread(&DataSize, 4, 1, file);

    // Current version
   

    //fread(&g_DarknessLightLevel, 4, 1, file);
    
        
  }
  else if ((SaveVersion & 0xFFFF0000) == Magic)
  {
    // Unsupported version, skip it
    DataSize = 0;
    fread(&DataSize, 4, 1, file);

    fseek(file, Position + DataSize - 8, SEEK_SET);
  }
  else
  {
    // Unknown data, loading might fail but we cannot help it
    fseek(file, Position, SEEK_SET);
  }
}


void SaveGame(FILE* file)
{
  unsigned int StartPosition = ftell(file);

  fwrite(&SaveMagic, 4, 1, file);
  fwrite(&StartPosition, 4, 1, file); // Update later with the correct size


  //fwrite(&g_DarknessLightLevel, 4, 1, file);
  

  unsigned int EndPosition = ftell(file);
  unsigned int SaveSize = EndPosition - StartPosition;
  fseek(file, StartPosition + 4, SEEK_SET);
  fwrite(&SaveSize, 4, 1, file);

  fseek(file, EndPosition, SEEK_SET);
}


// ********************************************
// ************  AGS Interface  ***************
// ********************************************


void DrawScreenEffect(int sprite,int sprite_prev,int ide)
{	
	DrawEffect(sprite,sprite_prev,ide);
}

void AGS_EngineStartup(IAGSEngine *lpEngine)
{
  engine = lpEngine;
  
  if (engine->version < 13) 
    engine->AbortGame("Engine interface is too old, need newer version of AGS.");

 
  engine->RegisterScriptFunction("DrawScreenEffect", (void*)&DrawScreenEffect);

 
  
  engine->RequestEventHook(AGSE_PREGUIDRAW);
  engine->RequestEventHook(AGSE_PRESCREENDRAW);

#if defined(PSP_VERSION) || defined(ANDROID_VERSION) || defined(IOS_VERSION)
  engine->RequestEventHook(AGSE_SAVEGAME);
  engine->RequestEventHook(AGSE_RESTOREGAME);
#endif
}

void AGS_EngineShutdown()
{

}

int AGS_EngineOnEvent(int event, int data)
{
  if (event == AGSE_PREGUIDRAW)
  {
	 // WindEffect(g_Fx,g_Fy,g_Trans,g_RW,g_RH);
	  /*
    BITMAP* screen = engine->GetVirtualScreen();
	BITMAP* ParticleGraph = engine->GetSpriteGraphic(4322);
	//engine->BlitBitmap (100, 100, ParticleGraph, 0);
	engine->BlitSpriteTranslucent(100, 100, ParticleGraph,50);
	engine->ReleaseBitmapSurface(screen);
	//engine->MarkRegionDirty(0,0,screen_width,screen_height);
	engine->SetVirtualScreen(screen);*/
  }
  #if defined(PSP_VERSION) || defined(ANDROID_VERSION) || defined(IOS_VERSION)
  else if (event == AGSE_RESTOREGAME)
  {
    RestoreGame((FILE*)data);
  }
  else if (event == AGSE_SAVEGAME)
  {
    SaveGame((FILE*)data);
  }
#endif
  else if (event == AGSE_PRESCREENDRAW)
  {
    // Get screen size once here.
    //engine->GetScreenDimensions(&screen_width, &screen_height, &screen_color_depth);
	engine->UnrequestEventHook(AGSE_SAVEGAME);
	engine->UnrequestEventHook(AGSE_RESTOREGAME);
  }
  return 0;
}

int AGS_EngineDebugHook(const char *scriptName, int lineNum, int reserved)
{
  return 0;
}

void AGS_EngineInitGfx(const char *driverID, void *data)
{
}



#if defined(WINDOWS_VERSION) && !defined(BUILTIN_PLUGINS)

// ********************************************
// ***********  Editor Interface  *************
// ********************************************
//AGSFlashlight
const char* scriptHeader =
  "import void DrawScreenEffect(int sprite,int sprite_prev,int ide);\r\n";


IAGSEditor* editor;


LPCSTR AGS_GetPluginName(void)
{
  // Return the plugin description
  return "AGSWave";
}

int  AGS_EditorStartup(IAGSEditor* lpEditor)
{
  // User has checked the plugin to use it in their game

  // If it's an earlier version than what we need, abort.
  if (lpEditor->version < 1)
    return -1;

  editor = lpEditor;
  editor->RegisterScriptHeader(scriptHeader);

  // Return 0 to indicate success
  return 0;
}

void AGS_EditorShutdown()
{
  // User has un-checked the plugin from their game
  editor->UnregisterScriptHeader(scriptHeader);
}

void AGS_EditorProperties(HWND parent)
{
  // User has chosen to view the Properties of the plugin
  // We could load up an options dialog or something here instead
  MessageBoxA(parent, "AGSWave", "About", MB_OK | MB_ICONINFORMATION);
}

int AGS_EditorSaveGame(char* buffer, int bufsize)
{
  // We don't want to save any persistent data
  return 0;
}

void AGS_EditorLoadGame(char* buffer, int bufsize)
{
  // Nothing to load for this plugin
}

#endif


#if defined(BUILTIN_PLUGINS)
} // namespace agswave
#endif



I'm using 3.4.1 version of AGS
#23
Code: ags

//WIND ENGINE

struct Particle{
int x;
int y;
int transp;
int life;
bool active;
int dx;
int dy;
int mlay;
int timlay;
int movedport;
int translay;
int translayHold;
int width;
int height;
int fx;
int fy;
bool doingcircle;
float angle;
float radius;
int doingCircleChance;
int angleLay;
int frame;
float anglespeed;
};

Particle particles[110];
Particle particlesF[10];
int WForceX[110];
int WForceY[110];

int raysizeF=4; 
int dsizeF=0;
int raysize=100; 
int dsize=0;
int creationdelay=0;
int creationdelayf=0;
bool found_Activeparticle=false;

int32 Random(int value)
{
	return (rand() % value);
}

void CreateParticle(int xx, int yy, int ForceX, int ForceY)
{
  int h=0;
  bool foundparticle=false;
  int fid=-1;
  while (h <= dsize && !foundparticle)
  {
    if (particles[h].active==false)
    {
      foundparticle=true;
      fid=h;
    }
    h++;
  }
  
  if (foundparticle)
  {
    int d=fid;
    particles[d].x=xx;
    particles[d].y=yy;
    particles[d].dx=0;
    particles[d].dy=0;
    particles[d].life=20000;
    particles[d].transp=55+Random(10);
    particles[d].active=true;
    particles[d].mlay=4+Random(2);
    particles[d].timlay=0;
    particles[d].translay=0;
    particles[d].translayHold=19+Random(15);
    particles[d].width=2+Random(2);
    particles[d].height=particles[d].width;
    particles[d].fx=0;
    particles[d].fy=0;
    particles[d].doingcircle=false;
    particles[d].angle=0.0;
    particles[d].radius=4.0+float(Random(6));
    particles[d].doingCircleChance=Random(200);
    particles[d].angleLay=0;
    particles[d].frame=0;
    particles[d].anglespeed=float(Random(20))/100.0;
    WForceX[d]=ForceX;
    WForceY[d]=ForceY;
    if (dsize<(raysize-1)) dsize++;
  }
}



void CreateParticleF(int xx, int yy, int ForceX, int ForceY)
{
  int h=0;
  bool foundparticle=false;
  int fid=-1;
  while (h <= dsizeF && !foundparticle)
  {
    if (particlesF[h].active==false)
    {
      foundparticle=true;
      fid=h;
    }
    h++;
  }
  
  if (foundparticle)
  {
    int d=fid;
    particlesF[d].x=xx;
    particlesF[d].y=yy;
    particlesF[d].dx=(-1)+Random(1);
    particlesF[d].dy=(-1)+Random(1);
    particlesF[d].life=20000;
    particlesF[d].transp=45+Random(10);
    particlesF[d].active=true;
    particlesF[d].mlay=4+Random(2);
    particlesF[d].timlay=0;
    particlesF[d].translay=0;
    particlesF[d].translayHold=19+Random(15);
    particlesF[d].width=8+Random(2);
    particlesF[d].height=particlesF[d].width;
    particlesF[d].fx=0;
    particlesF[d].fy=0;
    particlesF[d].doingcircle=false;
    particlesF[d].angle=0.0;
    particlesF[d].radius=4.0+float(Random(6));
    particlesF[d].doingCircleChance=Random(200);
    particlesF[d].angleLay=0;
    WForceX[d+100]=ForceX;
    WForceY[d+100]=ForceY;
    particlesF[d].frame=0;
    
    
    if (dsizeF<(raysizeF-1)) dsizeF++;
  }
}

//WIND ENGINE

///WING ENGINE UPDATE
void ParticleUpdate(int ForceX, int ForceY, int Transparency,int RoomWidth,int RoomHeight)
{
  
  int ww=RoomWidth;
  int hh=RoomHeight;
  BITMAP* screen = engine->GetVirtualScreen();

  found_Activeparticle=false;
  creationdelay+=int(2.0);
  if (creationdelay > 0)
  {   
    
    int by=0;
    while (by <2)
    {
    int dnx=Random(ww+250)-250;
    int dny=Random(hh);    
    CreateParticle(dnx, dny, ForceX, ForceY);
    by++;
    }
    
    int dnx=-(20+Random(50));
    if (dnx<-160) dnx=-160;
    if (dnx > ww+160) dnx=ww+160;
    
    int dny=Random(hh);    
    CreateParticleF(dnx, dny, ForceX, ForceY);
    
    found_Activeparticle=true;
    
    creationdelay=0;
  }
  
  int h=dsize-1;
  
  if (h < dsizeF-1)
  {
    h=dsizeF-1;
  }
  while (h>0)
  {
    if (particles[h].life>0)
    {
      found_Activeparticle=true;
      particles[h].life-=int(2.0);
      particles[h].doingCircleChance-=1;
      int df=100-particles[h].transp;
      df=10-(df/4);
      int pwidth=particles[h].width+df;
      int pheight=particles[h].height+df;
      
      int px=particles[h].x-(pwidth/2);
      int py=particles[h].y-(pheight/2);
      int tp=particles[h].transp+Transparency;
      
      if (tp>100) tp=100;
      
      int pgraph=0;
      int SplitBetweenTwo=Random(100);
      if (SplitBetweenTwo<=50) pgraph=813;
      else pgraph=4466;
      
      if (tp!=100)
	  {
		  BITMAP* ParticleGraph = engine->GetSpriteGraphic(pgraph+particles[h].frame);
		  engine->BlitSpriteTranslucent(px, py, ParticleGraph,tp);
		  //drawt.DrawImage(px, py, pgraph+particles[h].frame, tp, pwidth, pheight);
	  }
      particles[h].timlay+=int(4.0);
      if (particles[h].timlay> particles[h].mlay)
      {
        particles[h].frame++;
        if (particles[h].frame>6) particles[h].frame=0;
        particles[h].timlay=0;
        particles[h].x += particles[h].dx+particles[h].fx; 
        particles[h].y += particles[h].dy+particles[h].fy;      
      }
      particles[h].translay+=1;
      if (particles[h].translay>=particles[h].translayHold)
      {
        if (particles[h].transp<=99) particles[h].transp++;
        else 
        {
          particles[h].life=0;
          found_Activeparticle=false;
        }
      }
      if (particles[h].x>=ww-90 || particles[h].x<90)
      {
        if (particles[h].transp<=99)particles[h].transp++;
        else 
        {
          found_Activeparticle=false;
          particles[h].life=0;       
        }
      }
      
      if (!particles[h].doingcircle && particles[h].angle==0.0
      && particles[h].doingCircleChance<=0)
      {
        particles[h].doingcircle=true;
      }
      if (particles[h].doingcircle)
      {
        particles[h].angleLay+=(1+WForceX[h]);
        if (particles[h].angleLay> 12)
        {
          particles[h].angleLay=0;
          particles[h].angle+=particles[h].anglespeed;
          int Y=particles[h].y + int((sin(particles[h].angle)* particles[h].radius));
          int X=particles[h].x + int((cos(particles[h].angle)* particles[h].radius));
          particles[h].x=X;
          particles[h].y=Y;  
        }
      }
      particles[h].fx=ForceX;
      particles[h].fy=ForceY;
      
    }
    else 
    {
      particles[h].active=false;
    }
    
    
    
    if (h<=9 && particlesF[h].life>0)
    {
      found_Activeparticle=true;
      int pwidth=particlesF[h].width;
      int pheight=particlesF[h].height;
      int px=particlesF[h].x-(pwidth/2);
      int py=particlesF[h].y-(pheight/2);
      int pgraph=0;
      int SplitBetweenTwo=Random(100);
      if (SplitBetweenTwo<=50) pgraph=806;
      else pgraph=4459;
      
      int tp=particlesF[h].transp+Transparency;      
      if (tp>100) tp=100;
      
      
      if (tp!=100)
	  {
		  BITMAP* Particle_B = engine->GetSpriteGraphic(pgraph+particlesF[h].frame);
		  engine->BlitSpriteTranslucent(px, py, Particle_B,tp);
		  //drawt2.DrawImage(px, py, pgraph+particlesF[h].frame, tp, pwidth, pheight);
	  }
      particlesF[h].timlay+=int(4.0);
      if (particlesF[h].timlay> particlesF[h].mlay)
      {
        particlesF[h].frame++;
        if (particlesF[h].frame>6)  particlesF[h].frame=0;
        particlesF[h].timlay=0;
        particlesF[h].x += particlesF[h].dx + ForceX;
        particlesF[h].y += particlesF[h].dy + ForceY;  
      }
      
      
      if (particlesF[h].x>=ww-90 || particlesF[h].x<90)
      {
        particlesF[h].translay+=1; 
        if (particlesF[h].translay>=particlesF[h].translayHold)
        {          
          if (particlesF[h].transp<=99) particlesF[h].transp++;
          else 
          {
            found_Activeparticle=false;
            particlesF[h].life=0;
          }
        }
      }      
    }
    else 
    {
      if (h<=9)  particlesF[h].active=false;
    }
    
    
    h--;
  }
  engine->ReleaseBitmapSurface(screen);
  
}

//WIND ENGINE UPDATE



Nothing seems to be drawing on the screen, on my AGS script side i just run ParticleUpdate(int ForceX, int ForceY, int Transparency,int RoomWidth,int RoomHeight).
This is 'replacement' code moved from AGS to the plugin, so the code itself works fine. Any thoughts on why it doesn't? I'm not sure I'm using the 'virtual screen' part correctly, but there's little to no examples, I could find for it. Apologies for the sequence of new posts every day.
#24
I'm trying to code a PLUGIN function that grabs two sprites (sprite_a and sprite_b) parses the entirety of sprite_a and replaces the color of each pixel in sprite_b (with coordinates y = y from sprite a and x= x-Random(2) -2 from sprite_a), but that's not working, and i can't figure out why, I think I'm parsing the 2d array wrongfully.


Code: ags


int x, y;  
  BITMAP* src_a = engine->GetSpriteGraphic(sprite_a);
  BITMAP* src_b = engine->GetSpriteGraphic(sprite_b);
  unsigned short* pixel_a = *(unsigned short**)engine->GetRawBitmapSurface(src_a);
  unsigned short* pixel_b = *(unsigned short**)engine->GetRawBitmapSurface(src_b);

  for (y = 0; y < screen_height; y++)
  {
    for (x = 0; x < screen_width; x++)
    {
	  unsigned short colorfromB = pixel_b[y,x];
	  pixel_a[y,(x-(rand() % 2)-2)]=colorfromB;
      pixel_a++;
	  pixel_b++;
    }
  }
  engine->ReleaseBitmapSurface(src_a);
  engine->ReleaseBitmapSurface(src_b);  


Clarifying it's only doing half the screen, and it shouldn't, and i think the colors it picks are a bit wrong as well.


https://imgur.com/dMLLhUA
#25
This basically creates a circle and saves each frame on a Dynamic Sprite array (size of 20).
I've noticed that this takes 2-4 seconds to execute, and the whole issue stands (i've commented parts of the code etc) inside the two while loops, is there a way I can make this faster/better?



Code: ags


//CODE IS EXECUTED TILL 20 Dynamic Sprite FRAMES ARE CREATED.

  waveFrames[waveFrameC]=DynamicSprite.CreateFromExistingSprite(waveFrames[0].Graphic, true);//waveFrameC
  DrawingSurface*area = waveFrames[waveFrameC].GetDrawingSurface();
  DrawingSurface*refarea = waveFrames[0].GetDrawingSurface();//waveFrameC-1
  
      float Size=6.0;//2.0;
      float IncX=2.6;
      int CircleSize=((wvc+1)-waveFrameC);
      int incBy=waveFrameC*FloatToInt(Size, eRoundNearest);//*6;
      
      int incByx=FloatToInt(IntToFloat(incBy)*IncX, eRoundNearest);
      
      
      int CentralX=cEgo.x;
      int CentralY=cEgo.y-150;
      
      int x=CentralX+(incByx);
      int x2=CentralX-(incByx);
      
      int y=CentralY+(incBy);
      int y2=CentralY-(incBy);//180-(incBy);
      
      int d=x2;
      int d1=0;
      int f=y2;
      int f1=0;
      
      
      float difX;
      float difY;
      float sum;
      float distance;        
      int checkDist;
      
      float gx=IntToFloat(waveFrameC)*Size*IncX;
      int getXv=FloatToInt(gx, eRoundNearest);
      int getX=CentralX-getXv;
      int getY=CentralY-(waveFrameC*6);
      
      while (d < x && CircleSize>0)//while
      {
        f=y2;
        f1=0;
        while (f < y)
        {
          //CALCULATE DISTANCE BETWEEN TWO POINTS
          
          difX = IntToFloat(CentralX) - IntToFloat(d);
          difY = IntToFloat(CentralY) - IntToFloat(f);
          difX = Maths.RaiseToPower(difX, 2.0);
          difY = Maths.RaiseToPower(difY, 2.0);
          sum = difX+difY;
          distance = Maths.Sqrt(sum);        
          checkDist = FloatToInt(distance, eRoundNearest);
          
          if (checkDist<= incBy && checkDist>incBy-CircleSize)
          {            
            area.DrawingColor=refarea.GetPixel(getX+d1, getY + (f1-1));            
            area.DrawPixel(d, f);
          }
          
          f++;
          f1++;
        }
        d1++;
        d++;
      }    
  
  
  area.Release();
  refarea.Release();
  waveFrameC++;
  
  
}
#26
https://instaud.io/private/3fa46f017819fafd66996530fefa83f312c68ee8

Been working on this piece for 2 days now, it's a cute-like song very inspired by Kirby!
That's all I can share!
#27
Critics' Lounge / Music Critique
Sun 30/07/2017 14:59:34
Alright, I'm working on a song at the moment, where the aim is to make it a bit tween-peaky.

This is the first version of it:
http://primordia-game.com/Files0/nemobadalmentweenpeaks.mp3

And this is the second version of it:
http://primordia-game.com/Files0/didsomealterations.mp3

I'm a bit stuck deciding which is better atm. Will also gladly accept any other feedback regardless of the choice of preference.
#28
What is a Music Competition?

Well, a music competition, is a competition where music composers can compose and release their musical creations to compete for the ultimate priz, acceptance and recognition.
It's meant to be fun, no one should care about winning, but improving their own skill set. Or trying new things. Be creative!

Who is hosting it? And why is this back again?

I'm hosting it, and the reason it's back, is to make it interesting again.

The main problems of the old tune competition, which explained the lack of entries, were:
1) Unclear deadlines.
2) Very strict themes.
3) Very strict rules.


THEME: DEATH
Quote
Definition of Death


1)
a :  a permanent cessation of all vital (see vital 2a) functions :  the end of life The cause of death has not been determined. managed to escape death prisoners were put to death death threats â€" compare brain death
b :  an instance of dying a disease causing many deaths lived there until her death

2)
a :  the cause or occasion of loss of life drinking was the death of him
b :  a cause of ruin
the slander that was death to my character â€" Wilkie Collins
The drought was death to the farm.

3)
capitalized, folklore :  the destroyer of life represented usually as a skeleton with a scythe when death comes to take me away

4)
:  the state of being no longer alive :  the state of being dead

5)
a :  the passing or destruction of something inanimate the death of vaudeville
b :  extinction the death of the dinosaurs

6)
law :  civil death

7)
:  slaughter death and destruction

8)
Christian Science :  the lie of life in matter :  that which is unreal and untrue


RULES:

As long as it fits the theme (and that should be fairly broad), you can compose and post from at least one to x songs. You can even make an EP.
For example you can compose a hip-hop beat that samples the world LOVE and makes a pun as you hear a tennis crowd cheering at the end. You can do anything, as long as you can explain (if needed) how it does fit.

          No limit on duration:
          -You wanna make 2 bars, make 2 bars.

          No limit on genres:
          -Any genre goes, death metal songs are fine.

         No limit on covers:
          - You can cover an older composition of yours or someone else's, as long as the cover is obvious and you are being honest (aka posting the older song)

          No limit on file type:
          - MIDIs are fine.
          - OGGs are fine. (Preferably at 320kbps)
          - WAV are fine.
          - FLACs are fine.
          - MP3s are fine. (Preferably at 320kbps CBR or V0 VBR)

          For the lossy filetypes (mp3, ogg) above 128 CBR (Constant Bitrate) plz.

          Limit on the time deadline.
          -Entries that are delivered late, unless I'm notified before, won't be accepted, unless the entry is delivered within 24 hours after the deadline.

Deadline:

The deadline is till the 12th of June, that is, because on June 15th I'll post another theme, while this competition goes on the voting part. Voting will be public, and can be done by anyone. We'll see more rules about it, when we get there.

Workshop:

If you wanna do your entries, workshop style, that's highly advised. Going into detail, explaining your process, and how you work, if you want. No harm in sharing, people can input on that, but please do so in a respectable manner.



TL:DR
Code: ags

Theme is DEATH. 
Compose a song.
Deadline is JUNE 12th.





#29
What is a Music Competition?

Well, a music competition, is a competition where music composers can compose and release their musical creations to compete for the ultimate priz, acceptance and recognition.
It's meant to be fun, no one should care about winning, but improving their own skill set. Or trying new things. Be creative!

Who is hosting it? And why is this back again?

I'm hosting it, and the reason it's back, is to make it interesting again.

The main problems of the old tune competition, which explained the lack of entries, were:
1) Unclear deadlines.
2) Very strict themes.
3) Very strict rules.


THEME: LOVE
Quote
Definition of love

  • 1
       a :
           (1) :  strong affection for another arising out of kinship or personal ties maternal love for a child
           (2) :  attraction based on sexual desire :  affection and tenderness felt by lovers After all these years, they are still very much in love.
           (3) :  affection based on admiration, benevolence, or common interests love for his old schoolmates
       b :  an assurance of affection give her my love
  • 2
      a: A warm attachment, enthusiasm, or devotion love of the sea
  • 3
      a :  the object of attachment, devotion, or admiration baseball was his first love
      b :
           (1) :  a beloved person :  darling â€"often used as a term of endearment
           (2) : British â€"used as an informal term of address
  • 4
      a :  unselfish loyal and benevolent (see benevolent 1a) concern for the good of another: such as
                                                                                                                                                             (1) :  the fatherly concern of God for humankind
                                                                                                                                                             (2) :  brotherly concern for others
      b :  a person's adoration of God
  • 5
      :  A god (such as Cupid or Eros) or personification of love
  • 6
      :  An amorous episode :  love affair
  • 7
      :  The sexual embrace :  copulation
  • 8
      :  A score of zero (as in tennis)
  • 9
capitalized, Christian Science :  god
[/list]
RULES:

As long as it fits the theme (and that should be fairly broad), you can compose and post from at least one to x songs. You can even make an EP.
For example you can compose a hip-hop beat that samples the world LOVE and makes a pun as you hear a tennis crowd cheering at the end. You can do anything, as long as you can explain (if needed) how it does fit.

          No limit on duration:
          -You wanna make 2 bars, make 2 bars.

          No limit on genres:
          -Any genre goes, death metal love songs are fine.

         No limit on covers:
          - You can cover an older composition of yours or someone else's, as long as the cover is obvious and you are being honest (aka posting the older song)

          No limit on file type:
          - MIDIs are fine.
          - OGGs are fine. (Preferably at 320kbps)
          - WAV are fine.
          - FLACs are fine.
          - MP3s are fine. (Preferably at 320kbps CBR or V0 VBR)

          For the lossy filetypes (mp3, ogg) above 128 CBR (Constant Bitrate) plz.

          Limit on the time deadline.
          -Entries that are delivered late, unless I'm notified before, won't be accepted, unless the entry is delivered within 24 hours after the deadline.

Deadline:

The deadline is till the 30th of April, that is, because on May 1st I'll post another theme, while this competition goes on the voting part. Voting will be public, and can be done by anyone. We'll see more rules about it, when we get there.
There is over a month for this, because I want to get this started and yeah, normally it would take 30 days per theme, but you know, it isn't bad to have extra time.

Workshop:

If you wanna do your entries, workshop style, that's highly advised. Going into detail, explaining your process, and how you work, if you want. No harm in sharing, people can input on that, but please do so in a respectable manner.



TL:DR
Code: ags

Theme is LOVE. 
Compose a song.
Deadline is April 30th.





#30
Where to begin really, who to mention, who to remember?

I started out this very day (well, about this day), 10 years ago, being 18 with the hopes of making videogames. And AGS has been an integral part to that, even if, I've decided to shy away from it, but the community, more or less, has stood by me. Not as mass always, sure, that's too much to ask of people anyway - but as individuals, they sure have. I've met some of you in real life, some I haven't, some I hope to do so, one day. To some I've been unjust, and childish, it would be a shitty thing not to admit that, and I've surely let my ego get the hold of me on countless occasions, but never have I ever not unpinned or unbookmarked AGS from my browser. It would be like tearing a big part of me apart. I've met wonderful people around these parts, and m0ds. Damn, m0ds is horrible. I've had the luxury of working with talented people, and italians, italians are the worst. It has been a sweet ride, and I wouldn't change it for anything, so for once, perhaps truly, I'll humble myself, and say

Thank you.
#31
Having a problem with a person trying to play the game

http://steamcommunity.com/app/439310/discussions/0/361798516953837919/?tscn=1471801429

UNTIL I Have You is on AGS 3.3.5
Any suggestions?
#32
Recruitment / Unity super secret project
Fri 29/04/2016 17:22:50
Alright, here goes the most common topic of all time.

I'm looking forward to designing a game in Unity, I've begun setting up the workflow, I'm unfortunately leaving AGS, sorry, rip and all that.
I'm looking towards a person that can create simple 2d graphics, the way you can depict the world depends on how we'll end up doing this, possibly something close to Until I Have You in terms of art production. Way less possibly, but in requirements about that.

I have begun setting up a design doc, this is a paid job, but i can only somewhat offer royalties, if you think you'd like to work with me, please don't hesitate to contact me either by PM or other things, If needed you can ask everyone around that I always, always come through.

Mail is ledzepforever@gmail.com
#33
Hello, sorry for popping these up here.

We're experiencing this issue on the Linux port.

http://steamcommunity.com/app/439310/discussions/0/371918937284320786/

Logs and more info are inside the topic, I figured pasting them here would be silly. Is this some sort of a secluded case where nothing can be done, or?
#34
Alight, as you all may know/care, i've released Until I Have You, that uses AGS 3.3.5

The ever ending bane of my existence is this OS. Windows 7.
Basically, what happens is this, most users cannot start the game, and they immediately crash. That forces them to run both the game and the winsetup (yep can't even run winsetup) as administrator and set the Driver from Direct3D to Draw.

I've tested this with a person, and they had the same problem with all AGS games.
So, they set the mode to DirectDraw, but if they have an antivirus (usually Avast), hell brakes loose. They have to disable it, otherwise the crash still happens. And as far as i can tell, nobody is willing to do that. Any thoughts?
#35
Wormwood Studios Presents



Until I Have You, is a story-driven, fast-paced, retro-aesthetic platformer, engulfed in a Cyberpunk setting.

Driving you to the edge of your seat as you run n' gun through enemies, the game recounts a thrilling story of regret, love and corruption, in a city that's gone haywire and just doesn't give a damn.

This is the story of the ARTIST, a talented assassin, who has worked many dirty jobs in a long and successful career. Finally heeding the pleadings of his wife, he has decided it's time to quit this ugly business and live a simple and peaceful life. However the ARTIST's clients know he is irreplaceable, and are unwilling to allow the craftsman to hangup his tool belt. They send him this message by kidnapping his wife, Emily, and make it clear, retirement is not an option! The ARTIST is determined to get his wife back, and prepares himself for one last assignment. He understands to be successful he needs to go all out, and he procures a rare exoskeleton suit. Although this provides him with additional powers, it also can cause hallucinations and affect his judgment.

If you could save someone, how much of yourself would you be willing to sacrifice?






FEATURES:

  • 12 Chapters of immersive story-telling
  • Beautifully pixelated environments
  • Fast paced action
  • Over 60 unique Enemies and 12 Boss Fights.
  • Rich and Diverse Settings (both in gameplay mechanisms and visuals)
  • Fully Voiced Dialogues
  • Gritty Cyberpunk Atmosphere
  • Keyboard & Controller Support

TEAM:

James Spanos - Programming, Music, Design

"I've worked on several games most famously known for The Cat Lady, where I coded the interface, Downfall, where I fixed the interface, and Primordia, where I coded the entire game, plus the interface. I've been a huge fan of games such as Megaman, Strider and always wanted to built a platformer that deviates from the norm and gives the ability to the player to perform extraordinary stunts and tricks, if he masters the controls, and that it should feel limitless, as if he's bending the world to accommodate his skill. That is why I've started working on this with Andrea Ferrara. We share our passion for challenging games, and old school graphics."

Andrea Ferrara - Graphics, Design

"Before becoming an active member of the Adventure Game Studio community I used to work alone on games; writing, programming and making the art. I worked on a couple of indie adventure games released as freeware that became quite well known in the net, such as “Donald Dowell and the Ghost of Barker Manor”. When a couple of months ago James showed me a very early WIP of “Until I Have You” (made with placeholder graphics), I instantly realized the huge potential of that game and told James "you just have to let me make the graphics for this!".


For more screenshots, you can check our website

http://www.untilihaveyou.com






GIVEAWAY (Ends Dec 20th).

Since it's the holidays, and Limpingfish is playing Secret Santa, I thought to myself, there's no chance I can outdo that, but still, one can try.

We'll give away 2 Steam keys.

So how do you win one?

  • RETWEET this tweet to be eligible.

And follow me or andrea on Twitter.
#36
General Discussion / Bowie is Dead.
Mon 11/01/2016 07:35:31
I am not gonna post any link but the wiki article.

https://en.wikipedia.org/wiki/David_Bowie

But to me, Bowie was more like a friend. I mean look at the name. I would listen to his music and say "yeah, if Bowie could hang out with me, we could be so hip". And now he's gone, and i never got the chance to see him live. Shame really. Without him i wouldn't have even heard of Velvet Underground.

A musical phenom, regardless of whether you like his stuff, or not.
#37
Looking for testers for untilihaveyou.com

It's a platformer, but regardless, you don't have to be a platforemr game.
This time it has keyboard and controller support.

So mail me at ledzepforever gmail.com
or PM.
#38
I was going to type out a big paragraph, but honestly watching that interview kind of makes me cringe a bit. I didn't realize i was such a nerv-wreck.
Anyhow, it features my home, game footage, and that's about it.

https://youtu.be/Cl-UOeCqiCc?t=16m30s

So I guess I've made it now, right?
#39
-------------------------------------------------------------------------------
>> GAME IS RELEASED - GET IT HERE! <<
Visit the link above to find details on the completed game!
-------------------------------------------------------------------------------

Wormwood Studios Presents



Until I Have You, is a story-driven, fast-paced, retro-aesthetic platformer. Engulfed in a cyberpunk setting, sunk in 80s synth pop melodies. The game is heavily influenced by movies such as Blade Runner, Brazil, Perfect Blue, anime like Neon Genesis Evangelion, and games like Snatcher, Hotline Miami, Strider, Megaman and Canabalt.

Driving you to the edge of your seat as you hit n' run through enemies it aims to recount a thrilling story of regret, love, corruption, and things gone haywire, under the strong, vibrant neon lights of a city that just, doesn't give a damn. This is the story of the ARTIST, a talented thief, who in his attempts to quit business finds himself in a situation he can't back out from. His wife, Emily has been kidnapped to extort him. Through the acquisition of an exoskeleton, he will lead a suicide mission to get his wife back. The catch is while the exoskeleton offers him all this power, it comes with a cost. Hallucinations, caused by the use of the suit, have a dominant role in the game, as they slowly create a trippy/dreamy world engulfing the player, making them unable to separate real life and dream.

How much of himself is he willing to sacrifice to get her back?

"When you gaze long into an abyss, the abyss also gazes into you."






Always feeling that games have gone too soft on us, we're attempting to create a game that rewards character skill and allows you to exploit the game mechanics and physics based on this fact. The possibilities are practically endless, provided you can execute them. Also, we've decided to limit the weapons of the game on usefulness rather than ammunition. So that means while there's no limit to how many times you can shoot a weapon, it doesn't mean that you should, or that it's overpowerered. We've balanced things through circumstances, not by cheaply removing ammo.

FEATURES:

  • A game that evolves as you progress, passively increasing your ability to play it.
  • A unique interface, but also offering full keyboard and controller support (for those that don't have a mouse, or prefer to play the game differently)
  • 12 Chapters planned, each chapter being consisted by 5 stages. So in total: 12 boss fights - 60 levels.
  • Strong atmosphere.
  • Cinematic cutscenes.
  • An arsenal of futuristic weapons
  • 16-BIT Era Graphics blended with various visual effects
  • Parallax Scrolling beyond your wildest dreams.
  • Rich and Diverse Soundtrack

RELEASE DATE:

We're under contract with Digital Tribe Games, and so, the release is set around April of 2016.


TEAM:

James Spanos - Programming, Music, Design

"I've worked on several games most famously known for The Cat Lady, where I coded the interface, Downfall, where I fixed the interface, and Primordia, where I coded the entire game, plus the interface. I've been a huge fan of games such as Megaman, Strider and always wanted to built a platformer that deviates from the norm and gives the ability to the player to perform extraordinary stunts and tricks, if he masters the controls, and that it should feel limitless, as if he's bending the world to accommodate his skill. That is why I've started working on this with Andrea Ferrara. We share our passion for challenging games, and old school graphics."

Andrea Ferrara - Graphics, Design

"Before becoming an active member of the Adventure Game Studio community I used to work alone on games; writing, programming and making the art. I worked on a couple of indie adventure games released as freeware that became quite well known in the net, such as “Donald Dowell and the Ghost of Barker Manor”. When a couple of months ago James showed me a very early WIP of “Until I Have You” (made with placeholder graphics), I instantly realized the huge potential of that game and told James "you just have to let me make the graphics for this!".


For more screenshots, you can check our website, which is rather under construction.

http://www.untilihaveyou.com



And follow me or andrea on Twitter.
#40
Right so I basically took a c++ script and moded it to AGS. The issue is that on higher sensitivites the movement is weird, it doesn't jitter in any value of sensitivity, but the movement appears to be "laggy" even though the game runs at 40 fps constant. However increasing the fps to 60 by using SetGameSpeed seems to fix the lag yet there are, regardless of game speed, some weird unexpected jumps. Any ways to make this better?  I really don't wanna re-arrange the entire game at 60fps.

Code: ags

float sensitivity = 2.0;

float ox;
float oy;

function repeatedly_execute_always()
{

   if(mouse.x != FloatToInt(ox, eRoundNearest) || mouse.y != FloatToInt(oy, eRoundNearest))
   {
    // Mouse has moved
    // Work out the mouse movementinteger    
    if (Game.DoOnceOnly("set_fx"))
    {
      ox= IntToFloat(mouse.x);
      oy= IntToFloat(mouse.y);
      mouse.Visible=false;
      return;
    }    
    float x = IntToFloat(mouse.x);
    float y = IntToFloat(mouse.y);    
    float nx = ox + ((x - ox) * sensitivity);
    float ny = oy + ((y - oy) * sensitivity);
    
     Mouse.SetPosition(FloatToInt(nx, eRoundNearest), FloatToInt(ny, eRoundNearest));
     mouse.Update();
 
     bmouse.Visible=true;
     bmouse.NormalGraphic = mouse.GetModeGraphic(mouse.Mode);
     bmouse.SetPosition(mouse.x, mouse.y);
     // Set old location ready for next time
     ox = nx;
     oy = ny;    
  }  
  
  
  game.debug_mode = true;
  Debug(4, 1);

  
}
SMF spam blocked by CleanTalk