Sign in to follow this  

Unity Linking via preprocessor problems, and static libs with classes linker errors

This topic is 3658 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I'm having troubles with exceptions. I'm trying to catch access violations and page faults.(My Dev-Cpp debugger won't goto wherever my game crashed for some reason.) (The Win98 error says page fault, unknown module, at pos 0.) (Mainly page faults) But, it won't work. I'm using try-catch(char*) code. Is there a special way to catch these exceptions? Click here to jump to my linking via preprocessor problem. See the post after that for the classes problem. [Edited by - yellowstar on December 11, 2007 4:29:26 PM]

Share this post


Link to post
Share on other sites
You should look at Structured Exception Handling (SEH), that is the right way to handle those exceptions, you do not want to handle those exceptions using C++ exceptions since those were not meant to handle those type of issues.

Google Structured Exception Handling for more information

Share this post


Link to post
Share on other sites
What I really want to know is where my game is crashing.

Is there a way to find
where the program crashed/threw the exception,
from the exception data in the catch statement?

My game uses DLLs.
This could be why my debugger isn't working right.
(I had problems with it not telling me where
it crashed before.)

My primary dev PC is Win98.
I also have a XP.

I can use VS on my XP.
But,
It wouldn't work with the VS version on my 98.
I could use VS on my XP for debugging only,
for this project.

I'm trying to throw my own exception.
But,
it won't work.
I just get abnormal program termination errors.

My code is something like this:

try
{
throw("Hello...");
}

catch(char *ex)
{
...
}


Share this post


Link to post
Share on other sites
This game is going to be cross-platform.
(PC, Console, Handheld)
(PC = Windows, Linux, ect.)
(Console = Wii, NGC)
(Handheld = Nintendo DS)

Could somebody point me to
some tutorials/documents about
using SEH with Dev-Cpp/GNU?
(Using it with C/Cpp, without using OS things.)

Share this post


Link to post
Share on other sites
Quote:
Original post by yellowstar
This game is going to be cross-platform.
(PC, Console, Handheld)
(PC = Windows, Linux, ect.)
(Console = Wii, NGC)
(Handheld = Nintendo DS)

Could somebody point me to
some tutorials/documents about
using SEH with Dev-Cpp/GNU?
(Using it with C/Cpp, without using OS things.)


SEH is a Windows only thing, AFAIK. Access violations have nothing to do exceptions in C++. What you are looking for is a debugger. If Dev-Cpp's debugger cannot meet your needs, you should investigate alternatives.

Share this post


Link to post
Share on other sites
Would static librarys compiled with GNU
work with VS Cpp?

I don't have the Windows SDK.(Dial-Up)
(I could use DL manager, but that would probably
take several nights.)
(If the above is true, would using the Dev-Cpp version of the SDK
in VS Cpp work?)
All,(or most)
Win32 things is in a static library.(I might need to move it
to DLL to get it to work.)

I don't have the OpenGL SDK either.
(I have the Dev-Cpp version)

How would I integerate oGL with VS Cpp?

VS would only be used for debugging.
The Dev-Cpp version would be the one
used for playing and ect.

EDIT:
Exception handling wouldn't be much use here anyway.
I already know the address it crashes at.

Share this post


Link to post
Share on other sites
Well, without a fast internet connection it will take you quite a while to download something like VC2008, let alone VC builds of any other libraries you are using.

Are you sure you have debugging symbols enabled in the Dev-Cpp project settings? (project->project options->compiler->linker->generate debugging information). Do a full rebuild and see if running in the debugger shows you where your program is dying.

If not, you could always give gdb command line program a try. Its complex, but for a simple program it will probably find your access violation.

First, you need to add your dev-cpp binary path 'C:\path\to\Dev-Cpp\bin' to you PATH environment variable, if it isn't already. Open a console (Windows key + R, type cmd and return).

PATH = "C:\path\to\dev-cpp\bin";%PATH%


Then navigate to your program (newly built with debug symbols, see above).

cd C:\my\programming\projectsgdb


Type the name of your program:

(gdb) file myprogram.exe
(gdb) run


At this point, my application crashes. Gdb prints the following output:

Starting program: C:\...\C_Helper.exe

Program received signal SIGSEGV, Segmentation fault.
0x004012f2 in foo (a=0x22ff74) at main.c:9
9 *ptr = 42;



To get a backtrace, type bt full:

(gdb) bt full
#0 0x004012f2 in foo (a=0x22ff74) at main.c:9
ptr = (int *) 0x0
#1 0x0040136e in main () at main.c:24
ptr = (int *) 0x0
(gdb)


I've never tried any complicated debugging with the gdb command line program, but this much is enough to give a good hint at where your access violation is occurring.

As you can see its a long procedure. It could be worth your while setting that download manager.


Share this post


Link to post
Share on other sites
I have VS Cpp and C-Sharp on my XP.
It only took one night to download
for each program.
(I'm starting to download the the 08 versions
of the above, plus the web designer.)
(But, I can only do one app per night)
(My DL manager won't work when I
attempt to have it download multiple
things in one session. I'll have to find another one for that.)

I have found out from the VS Cpp Web installer,
that it also downloads the librarys and headers
for the Windows SDK.
That elimates downloading that.
That leaves only oGL to solve.

How do I add headers and librarys,
to the default directory for them?(Like where the WinSDK things are put.)
(In VS 08)

Dev-Cpp makes sure the debugging setting is set.
If it's not set, it forces me to
rebuild it with debugging info.

I tried this code for throwing my own exceptions,
but it still does the same thing.

try
{
throw new char*("EXCEPTION!!! CRASHINGG!! HELP!!!");
}

catch(char *e)
{
MessageBox(NULL,e,"EXCEPTION",MB_OK|MB_ICONINFORMATION);
}


Share this post


Link to post
Share on other sites
Gdb worked!(Only once...)
Dev-Cpp still dosen't find it,

According to gdb,
it's crashing at a string function.(msvcrt.dll)

Dev-Cpp says in the backtrace,
that the last called function is Reshape.
I'll need to investigate.
<edit>
It is diffently crashing in the above function.
Time to find out why...
</edit>

I'm having big problems with the VS Cpp 08 install.

It crashes near the middle of the
NET 3.5 framework install.

I tried removing all MS VS and NET
stuff, but that didn't fix it.

I'm going to see if
installing that seperately does anything.
(That will probably mean another overnight download.)

Share this post


Link to post
Share on other sites
My game uses DLLs.
The below functions are called in these DLLs.(values are addresses)
It is obvious what the problem is.

Moving those functions calls
around didn't get me anywhere.

Odd that moving those calls
around caused this.

*growls*

Quote:

FINIT 00000000
INIT 00000000
FDEINIT 00000000
DEINIT 00000000
DRAW 00000000
STEP 00000000
RESHAPE 00000000
KEYS 00000000
KEYS SPECIAL 00000000

Share this post


Link to post
Share on other sites
I know those addresses shouldn't be zero...

<edit>
About the moving those function calls around:
I tried moving the function calls
back to where they were,
but nothing differen't happened.
</edit>

It's not a DLL loading problem.
(At least not with the actual loading of the exported function)

I'm trying to make it simple to
switch between DLL and static lib.(homebrew console dev)

There is only one exported function.

This function returns a void* pointer
to some arbitary data.

This data is a struct,
which contains a function pointer to the InitComm function,
and the functions that would have been exported otherwise.
(like the functions in the above post)

In the Shell,(the actual program)
in DLL loading, it calls this exported function,
and copys that data into the needed structs.


The Engine works with this.(DLL)

But,
it's the Render modules that are the problem.
(They have the above functions in the above post)

There are 2 of these modules.
The Game module is fine.

It's the Menu module that's not working right.
(It has the null function pointers)

Both modules are fine
right after they are loaded,(in the load function)
but, somehow the Menu module is
being screwed.

Either module could be messing up the other somehow.


RenderStates ExFuncs;
//Contains the function pointers to the exported functions.
//(They aren't really exported; But the Shell uses this struct,
//via the exported GetFunctions function, to access them.)
//
//DLLIMPORT means to export the function,
//in this case.
//This code works fine. It's the next piece that
//dosen't work.
DLLIMPORT void* GetFunctions()
{
ExFuncs.RenderInitComms = (LPInitComms)&InitComm;

ExFuncs.RenderInit = (LPRenderInit)&LRenderInit;
ExFuncs.RenderFInit = (LPRenderFInit)&LRenderFInit;

ExFuncs.RenderDeInit = (LPRenderDeInit)&LRenderDeInit;
ExFuncs.RenderFDeInit = (LPRenderFDeInit)&LRenderFDeInit;

ExFuncs.RenderDraw = (LPRenderDraw)&LRenderDraw;
ExFuncs.RenderStep = (LPRenderStep)&LRenderStep;
ExFuncs.RenderReshape = (LPRenderReshape)&LRenderReshape;

ExFuncs.RenderKeys = (LPRenderKeys)&LRenderKeys;
ExFuncs.RenderKeysSpecial = (LPRenderKeysSpecial)&LRenderKeysSpecial;

return (void*)&ExFuncs;
}






struct VMod
{
void* value;
};

//I switched from a void* array to VMod,
//since I was having problems. That didn't fix anything.
HMODULE hModules[DLLS];
VMod fModules[DLLS];
//Contains the address of the struct which contains
//the pointers to the exported functions.
//Must be typecasted to the correct type of struct, for use.
//This is used only for loading the modules.

bool Load_HMEngine(HMODULE *module);
bool Load_HMMenu(HMODULE *module);
bool Load_HMGame(HMODULE *module);

typedef void* (WINAPI *LPGetFunctions)();

bool LoadDLLS()
{
if(!Load_HMEngine(&hModules[HM_ENGINE]))return 0;

if(!Load_HMMenu(&hModules[HM_MENU]))return 0;

if(!Load_HMGame(&hModules[HM_GAME]))return 0;

return 1;
}

bool LoadRenderDLL(HMODULE *module, int index, char *name)//char pointer is for errors
{
RenderStates *renderStates = &comm.renderState.renderStates[index];
LPGetFunctions getFuncs=NULL;
RenderStates *functions=NULL;

//With this project, if this string wasn't decorated,
//this function call wouldn't work.
getFuncs = (LPGetFunctions)GetProcAddress(*module, "_Z12GetFunctionsv");

if(getFuncs==NULL){Error2("GetFunctions",name);return 0;}

fModules[index].value = getFuncs();

FILE *f=fopen("debugging.txt","a");
fprintf(f,"%d Void* value = %p\n",index,fModules[index].value);

fclose(f);

functions = (RenderStates*)fModules[index].value;
memcpy(renderStates,functions,sizeof(RenderStates));

if(renderStates->RenderFInit==NULL){Error2("LRenderFInit",name);return 0;}
if(renderStates->RenderInit==NULL){Error2("LRenderInit",name);return 0;}
if(renderStates->RenderFDeInit==NULL){Error2("LRenderFDeInit",name);return 0;}
if(renderStates->RenderDeInit==NULL){Error2("LRenderDeInit",name);return 0;}

if(renderStates->RenderDraw==NULL){Error2("LRenderDraw",name);return 0;}
if(renderStates->RenderStep==NULL){Error2("LRenderStep",name);return 0;}
if(renderStates->RenderReshape==NULL){Error2("LRenderReshape",name);return 0;}

if(renderStates->RenderKeys==NULL){Error2("LRenderKeys",name);return 0;}
if(renderStates->RenderKeysSpecial==NULL){Error2("LRenderKeysSpecial",name);return 0;}


return 1;
}

bool Load_HMEngine(HMODULE *module)
{

HINSTANCE hLib = LoadLibrary("SFBEngine.dll");
LPGetFunctions getFuncs=NULL;
EngineFunctions *functions=NULL;

*module = (HMODULE)hLib;

if(*module==NULL){Error("Failed to load DLL SFBEngine!")}

getFuncs = (LPGetFunctions)GetProcAddress(*module, "_Z12GetFunctionsv");

if(getFuncs==NULL){Error2("GetFunctions","SFBEngine");return 0;}

fModules[HM_ENGINE].value = getFuncs();

FILE *f=fopen("debugging.txt","a");
fprintf(f,"%d Void* value = %p\n",HM_ENGINE,fModules[HM_ENGINE].value);
fclose(f);

functions = (EngineFunctions*)fModules[HM_ENGINE].value;
memcpy(&comm.funcComm,&functions->funcs,sizeof(FuncComm));

WindowInit = comm.funcComm.WindowInit;
LoadTexture = comm.funcComm.LoadTexture;

if(WindowInit==NULL){Error2("WindowInit", "SFBEngine");}
if(LoadTexture==NULL){Error2("LoadTexture", "SFBEngine");}

return 1;
}

bool Load_HMMenu(HMODULE *module)
{

HINSTANCE hLib = LoadLibrary("Menu.dll");

*module = (HMODULE)hLib;

if(*module==NULL){Error("Failed to load DLL Menu!")}

if(!LoadRenderDLL(module,HM_MENU,"Menu"))
return 0;

return 1;
}

bool Load_HMGame(HMODULE *module)
{

HINSTANCE hLib = LoadLibrary("Game.dll");

*module = (HMODULE)hLib;

if(*module==NULL){Error("Failed to load DLL Game!")}

if(!LoadRenderDLL(module,HM_GAME,"Game"))
return 0;


return 1;
}



Share this post


Link to post
Share on other sites
I am finding it very difficult to read your posts. The forum will automatically wrap long lines, you don't need to press enter unless finishing a paragraph.

Other than that, it is hard to say from the code you've posted. Why can't you link directly to the functions (I mean: declare them dllexport when building library and dllimport when using the library) rather than attempting to manually load them at run time?

Your code is hard to follow, making references to things we cannot see. Can you print the call stack? Can you see where it all goes wrong? It could be in the calling code.

To selectively disable name mangling in C++, mark the function signatures as 'extern "C"':

extern "C" myFunction(int arg);

Share this post


Link to post
Share on other sites
can i just add that what i see,
is like reading poetry,
except there's no rhythm nor can hear any rhyme,
reading all these lines is taking a long time.

ode to formatting!

Share this post


Link to post
Share on other sites
Solved!

The indexes for the renderStates var
was supposed to be zero-based.
Instead,
they were one-based.

There are only 2 indexes in
the renderStates array,(the array that this var points to)
for modules.
One module's index was out of bounds.
This meant that module's function pointers
didn't get touched.
(That would have caused another crash,
if it weren't for some data after this array.)

Once I fixed this,
it worked.

Quote:
Original post by rip-off
Other than that, it is hard to say from the code you've posted. Why can't you link directly to the functions (I mean: declare them dllexport when building library and dllimport when using the library) rather than attempting to manually load them at run time?


I can't do that.

I must do this.(hombebrew console dev)
(I haven't started porting yet.
But, once I do, I must use static librarys at first.)

Share this post


Link to post
Share on other sites
I'm having problems again.

I'm trying to add some statics libs
to be linked, via preproccessor commands,
but it won't work.
The linker errors seems to
be caused because the linker dosen't
find the librarys.
I have the library directorys set correctly
in Dev-Cpp.


//Link with the static lib versions of the modules if this is the static lib build.
#ifdef LIB
#pragma comment (lib, "Engine.a")
#pragma comment (lib, "Menu.a")
#pragma comment (lib, "Game.a")
#endif





EDIT:
Quote:
original post by yellowstar
I'm having big problems with the VS Cpp 08 install.

It crashes near the middle of the
NET 3.5 framework install.

I tried removing all MS VS and NET
stuff, but that didn't fix it.

I'm going to see if
installing that seperately does anything.
(That will probably mean another overnight download.)


That fixed it.
I installed MS VS C# also,
and that worked.

[Edited by - yellowstar on December 11, 2007 1:50:50 PM]

Share this post


Link to post
Share on other sites
I'm also having problems
with static libs and classes.

I have a header,(like class foo{...})
and a static lib which is linked with it.
I have the directorys set correctly,
and the correct static libs linked.(supposed to be linked)

I'm getting linker errors
as if it didn't find the static libs.


../Helpers/DirManager/DirManager.a(libmain.o)(.bss+0x0): In function `ZN9DirStruct9FreeStuffEv':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:27: multiple definition of `dirStruct'
../Menu/Menu.a(libmain.o)(.bss+0x4):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Menu/../Shell/../Engine/viewport.h:59: first defined here
../Helpers/DirManager/DirManager.a(libmain.o)(.data+0x0): In function `ZN9DirStruct9FreeStuffEv':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:27: multiple definition of `CDirManager::base_dir'
../Menu/Menu.a(libmain.o)(.data+0x0):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Menu/../Shell/../Engine/viewport.h:59: first defined here
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x5c): In function `ZN9DirStructD1Ev':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::FreeStuff()'

../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x6e):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::~CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0xa7):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::~CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x10c): In function `ZN9DirStructD2Ev':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::FreeStuff()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x11e):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::~CBinTree()'

../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x157):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::~CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x18e): In function `ZN9DirStruct9macResModEP7SBTNode':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:33: undefined reference to `CBinTree::AddNode(SBTNode*, int)'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x1d6): In function `ZN9DirStruct6macResEP7SBTNode':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:44: undefined reference to `CBinTree::AddNode(SBTNode*, int)'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x1f5):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:33: undefined reference to `CBinTree::AddNode(SBTNode*, int)'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x228):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:33: undefined reference to `CBinTree::AddNode(SBTNode*, int)'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x26e): In function `ZN9DirStruct8macMainVEP7SBTNode':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:57: undefined reference to `CBinTree::AddNode(SBTNode*, int)'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x2af):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:66: more undefined references to `CBinTree::AddNode(SBTNode*, int)' follow
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x59c): In function `ZN9DirStructC1Ev':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:17: undefined reference to `CBinTree::CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x5e7):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:18: undefined reference to `CBinTree::~CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x64c): In function `ZN9DirStructC2Ev':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:17: undefined reference to `CBinTree::CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x697):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:18: undefined reference to `CBinTree::~CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0xd98): In function `Z41__static_initialization_and_destruction_0ii':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::FreeStuff()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0xdab):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::~CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0xdd6):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:17: undefined reference to `CBinTree::CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0xe08):C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::~CBinTree()'
../Helpers/DirManager/DirManager.a(libmain.o)(.text+0x5): In function `ZN9DirStruct9FreeStuffEv':
C:/Dev-Cpp/Projects/StarFoxBattle/current/StarFoxBattle/Helpers/DirManager/DirStruct.cpp:28: undefined reference to `CBinTree::FreeStuff()'


Share this post


Link to post
Share on other sites

This topic is 3658 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Forum Statistics

    • Total Topics
      628726
    • Total Posts
      2984408
  • Similar Content

    • By INTwindwolf
      THE PROJECT

      INT is a 3D Sci-fi RPG with a strong emphasis on story, role playing, and innovative RPG features such as randomized companions. The focus is on the journey through a war-torn world with fast-paced combat against hordes of enemies. The player must accomplish quests like a traditional RPG, complete objectives, and meet lively crew members who will aid in the player's survival. Throughout the game you can side and complete missions through criminal cartels, and the two major combatants, the UCE and ACP, of the Interstellar Civil War.
      Please note that all of our current positions are remote work. You will not be required to travel.
      Talent Needed
       
      Unity Engine Programmer
      Website Administrator
      3D Animator
      We have made great strides in the year 2017! INT has received a comprehensive face-lift compared to the start of the year. We look forward to a productive, fruitful year 2018!
      Revenue-Share
      This is the perfect opportunity to get into the game development industry. Being an Indie team we do not have the creative restrictions often imposed by publishers or other third parties. We are extremely conscientious of our work and continuously uphold a high level of quality throughout our project.
      We are unable to offer wages or per-item payments at this time. However revenue-sharing from crowd-funding is offered to team members who contribute 15-20 hours per week to company projects, as well as maintain constant communication and adhere to deadlines. Currently the crowd-funding campaign is scheduled for the year 2018. Your understanding is dearly appreciated.
       
      Thank you for your time! We look forward to hearing from you!
       
      John Shen
      HR Lead
      Starboard Games LLC
    • By Apollo Cabrera
      Energy particles being harnessed by collection multi-hedron energy matrix. Whuuuttt?
      Love it :)
    • By AndySv
        Total Music Collection (http://u3d.as/Pxo)   THE COLLECTION CONTAINS:   Mega Game Music Collection   Universal Music Collection   Huge library of high quality music for any project! All at an incredibly low price!   - 2,5GB of high quality audio - 100+ different music tracks - Loop and short versions   Action, fantasy, casual, horror, puzzle, epic, dramatic, romantic, positive, inspiring, motivational and more!
    • By Dafu
      FES Retro Game Framework is now available on the Unity Asset Store for your kind consideration!
      FES was born when I set out to start a retro pixel game project. I was looking around for an engine to try next. I tried a number of things, from GameMaker, to Fantasy Consoles, to MonoGame and Godot and then ended up back at Unity. Unity is just unbeatable in it's cross-platform support, and ease of deployment, but it sure as heck gets in the way of proper retro pixel games!
      So I poured over the Unity pipeline and found the lowest levels I could tie into and bring up a new retro game engine inside of Unity, but with a completely different source-code-only, classic game-loop retro blitting and bleeping API. Months of polishing and tweaking later I ended up with FES.
      Some FES features:
      Pixel perfect rendering RGB and Indexed color mode, with palette swapping support Primitive shape rendering, lines, rectangles, ellipses, pixels Multi-layered tilemaps with TMX file support Offscreen rendering Text rendering, with text alignment, overflow settings, and custom pixel font support Clipping Sound and Music APIs Simplified Input handling Wide pixel support (think Atari 2600) Post processing and transition effects, such as scanlines, screen wipes, screen shake, fade, pixelate and more Deploy to all Unity supported platforms I've put in lots of hours into a very detail documentation, you can flip through it here to get an better glimpse at the features and general overview: http://www.pixeltrollgames.com/fes/docs/index.html
      FES is carefully designed and well optimized (see live stress test demo below). Internally it uses batching, it chunks tilemaps, is careful about memory allocations, and tries to be smart about any heavy operations.
      Please have a quick look at the screenshots and live demos below and let me know what you think! I'd love to hear some opinions, feedback and questions!
      I hope I've tickled your retro feels!



      More images at: https://imgur.com/a/LFMAc
      Live demo feature reel: https://simmer.io/@Dafu/fes
      Live blitting stress test: https://simmer.io/@Dafu/fes-drawstress
      Unity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064

      View full story
    • By Dafu
      FES Retro Game Framework is now available on the Unity Asset Store for your kind consideration!
      FES was born when I set out to start a retro pixel game project. I was looking around for an engine to try next. I tried a number of things, from GameMaker, to Fantasy Consoles, to MonoGame and Godot and then ended up back at Unity. Unity is just unbeatable in it's cross-platform support, and ease of deployment, but it sure as heck gets in the way of proper retro pixel games!
      So I poured over the Unity pipeline and found the lowest levels I could tie into and bring up a new retro game engine inside of Unity, but with a completely different source-code-only, classic game-loop retro blitting and bleeping API. Months of polishing and tweaking later I ended up with FES.
      Some FES features:
      Pixel perfect rendering RGB and Indexed color mode, with palette swapping support Primitive shape rendering, lines, rectangles, ellipses, pixels Multi-layered tilemaps with TMX file support Offscreen rendering Text rendering, with text alignment, overflow settings, and custom pixel font support Clipping Sound and Music APIs Simplified Input handling Wide pixel support (think Atari 2600) Post processing and transition effects, such as scanlines, screen wipes, screen shake, fade, pixelate and more Deploy to all Unity supported platforms I've put in lots of hours into a very detail documentation, you can flip through it here to get an better glimpse at the features and general overview: http://www.pixeltrollgames.com/fes/docs/index.html
      FES is carefully designed and well optimized (see live stress test demo below). Internally it uses batching, it chunks tilemaps, is careful about memory allocations, and tries to be smart about any heavy operations.
      Please have a quick look at the screenshots and live demos below and let me know what you think! I'd love to hear some opinions, feedback and questions!
      I hope I've tickled your retro feels!



      More images at: https://imgur.com/a/LFMAc
      Live demo feature reel: https://simmer.io/@Dafu/fes
      Live blitting stress test: https://simmer.io/@Dafu/fes-drawstress
      Unity Asset Store: https://www.assetstore.unity3d.com/#!/content/102064
  • Popular Now