Adventure Game Studio

AGS Support => Beginners' Technical Questions => Topic started by: monkey0506 on Sat 02/07/2005 02:48:46

Title: Built in limit -- Not in help file. Function parameters.
Post by: monkey0506 on Sat 02/07/2005 02:48:46
I've found an interesting limit, and no Steve, I didn't just do this to annoy you.  Functions in AGS have a limited number of parameters.  The limit is 14.  This isn't covered in the help manual:

QuoteSystem limits
This section tells you the maximums for various parts of the system. If you have been wondering "How many rooms can I have?" or something similar, chances are this section will answer it.
There are maximum...

   20  objects per room
  100  messages per room
  500  global messages
  299  rooms per game
  300  inventory items
15000  imported sprites
  240  sprites per folder
  600  views
   16  loops per view
   20  frames in each loop
  300  characters
   50  GUIs
   30  controls on each GUI
  500  dialog topics
3000  dialog-script messages
   30  options per topic
   20  screen overlays at a time
  500  script GlobalInts
   50  script GlobalStrings
  100  interaction editor global variables
    5  background frames per room
   20  mouse cursors

If you think any of these limits is a serious problem, contact me and I can probably increase it.

So that's one problem I have.  Another problem is the fact that I actually have a function requiring 16 parameters.  I could of course just separate the functions, but because of it's purpose, it should really remain as one.  It's a function to initialize all the data members of a struct.

I can't really go into too much more detail as I'm kind of working on a secret project.  If it works out, I think you'll like it, but I've just started trying to see if it will work today.

Just for an example:

void Func(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, int n) {
  /* do stuff */
  }


Compiles fine.  With 14 parameters.

void Func(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, int n, int o) {
  /* do stuff */
  }


Does not compile.  I get the following error:

Quote---------------------------
Compile Error
---------------------------
There was an error compiling your script. The problem was:

In: 'Global script'



Error (line 3): too many parameters defined for function



Do you want to fix the script now? (Your game has not been saved).
---------------------------
Yes   No   
---------------------------

And yes, I am serious.  I want a function with 16 parameters.
Title: Re: Built in limit -- Not in help file. Function parameters.
Post by: Kweepa on Sat 02/07/2005 04:07:05
As a workaround you could have two initialization functions with 8 parameters each :=
Title: Re: Built in limit -- Not in help file. Function parameters.
Post by: monkey0506 on Sat 02/07/2005 04:26:44
Yeah, I got that much... (-_- )

I actually did split it into two functions, but it would make more sense if they could be combined.  Also, I appear to be doing something retarded because I keep encountering fatal errors when trying to save.  It's getting annoying because I'm not sure which part it is that I'm doing causing the error.  But I'm not in the mood right now to care enough to report the error.

Steve...enough with the pointless pointing out of workarounds that I already know about(/am currently using).
Title: Re: Built in limit -- Not in help file. Function parameters.
Post by: Kweepa on Sat 02/07/2005 19:54:25
Yikes!

Really though, using a function to initialize a struct is inefficient and confusing.
Take a look at these two pieces of code:

struct.Init(3.0, 4.5, 6.0);
You push a bunch of undefined data on the stack, then call a function that copies that data into the appropriate members.

struct.pos = 3.0;
struct.vel = 4.5;
struct.acc = 6.0;
The data is copied directly into the members, plus there's no chance of confusing the parameters.

Now imagine that with 16 parameters...
Of course you could break the data into logical groups and use functions to initialize them. That's not so much a workaround as a code organisation issue.

Hmm... 16 parameters... wouldn't happen to be a 4x4 matrix for some 3d would it? In which case, you can easily use a 3x4 matrix (forward vector, right vector, up vector, position vector) instead. Then initializing it works much better as:

matrix.setForward (1,   0,   0);
matrix.setRight      (0,   1,   0);
matrix.SetUp         (0,    0,   1);
matrix.SetPosition(10, 10, -30);

Just another pointless pointing out of a workaround for you.
Title: Re: Built in limit -- Not in help file. Function parameters.
Post by: monkey0506 on Sat 02/07/2005 21:36:11
Quote from: SteveMcCrea on Sat 02/07/2005 19:54:25struct.pos = 3.0;
struct.vel = 4.5;
struct.acc = 6.0;
The data is copied directly into the members, plus there's no chance of confusing the parameters.

Okay... Imagine with me for a moment.  Copying 16 data members directly:

[fake]
Code (ags) Select
struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;
[/fake]

Now, let's pretend that I have to write this code a minimum of 40 different times.  In this case, 75:

[fake]
Code (ags) Select
struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;struct.a = 9;
struct.b = 8;
struct.c = 3;
struct.d = 7;
struct.e = 1;
struct.f = 6;
struct.g = 5;
struct.h = 7;
struct.i = 6;
struct.j = 47;
struct.k = 5;
struct.l = 6;
struct.m = 4;
struct.n = 8;
struct.o = 3;
[/fake]

And let's say that none of these 75 objects are the same (unlike represented above).  Yeah.  Have fun with that.

Edit:  And no, it has nothing to do with 3D.

Edit:  If this message is severely too long, please just edit the second bit of fake code to read "/* previously listed fake code 75 times */", and sorry for the length.  Just representing what I would actually have to type...  I won't do this again.