Pages: 1
  Print  
Author Topic: Ludum Dare  (Read 13533 times)
Offline (Male) Josh @ Dreamland
Posted on: August 22, 2011, 02:04:12 am

Prince of all Goldfish
Developer
Location: Pittsburgh, PA, USA
Joined: Feb 2008
Posts: 2950

View Profile Email
So today concluded the 21st Ludum Dare competition. I didn't make this public due to the fact that it was a last-minute decision made twelve hours into the 48 hour contest, but I decided to enter. Dazappa did as well.

Here are our games:
Dazappa's Crystal Conduit
My own Cave Escape

Okay, so my title's not that creative. Nor is my game itself, really. Point is, the two of us entered this competition.

For those who are unfamiliar, the Ludum Dare is a 48 hour game making competition. Competitors are given precisely that long to develop and "perfect" their games. Hence, my engine has serious physics and collision issues, and I imagine dazappa would have preferred more time, too. This year, with Notch from Minecraft participating, the server was so overloaded with interested peoples that they had to extend the deadline to give people a chance to wait out the server issues.

While, given the competition (especially this time around), it is astronomically unlikely for either dazappa or me to win, that was not the reason I entered (though I'd certainly not mind if one of us did win). I can't speak for dazappa, but I entered for three reasons,

1) To put ENIGMA to the test and show what it can do
2) To register a blip on the engines radar in the name of ENIGMA
3) As a learning experience for myself

At this stage, you'd think I wouldn't have that much left to learn about game design, right? Well, you're wrong, but that's beside the point. I wanted to learn not about game design itself, but game design in ENIGMA. Using only the features of ENIGMA a typical user would utilize, I discovered quickly a small number of bugs, quirks, and features that should be added. While most of the features I thought would come in handy were already planned, I did manage to come up with a few extras. Here is my list of discoveries made, bugs to fix, and features to add:

  • Any sort of iterator tampering in draw will kill you. Not just depth change; room change as well.
  • Initializers are ignored while parsing with() statements. For example, with (object) { int a = x; } will use x from the calling scope.
  • Script scoping is incorrect in with(). This->script() is used when ::script() should be instead (::script is a global copy that sets scope manually via with()).
  • LateralGM's highlighter and code editor in general suck. We should probably finish the one I mostly finished.
  • Multiple inheritance is a must for complicated games. Also, LGM has an inheritance loop checking issue in which the check seems to return parent->parent != null.
  • switch() {} doesn't coerce enums; this is an issue because switching sprite_index will be an O(N) operation unless you hard-code the IDs.
  • The instance creation codes in rooms should be bumped up in priority, and it should be easier to enumerate and manage those codes.
  • It's high time for ENIGMA array literals. And, well, a new type resolver so it can tell what's an array.
  • The room editor needs a way to drag select and move efficiently.
  • Design mode would really expedite platform gaming development, and a slow-motion feature should be added to it (something to quickly set room_speed.
  • Since the collision system depends on the positioning tier, which contains hspeed and vspeed, an option should be allowed to let the user control the two.
  • I found myself really wanting the planned "Overworld"/"Map" resource.
  • I've still not fixed local const.

Other issues: Does instance_count grow with each create event at room start in GM as it does in ENIGMA?

Other than that, I was mostly in a pissy mood at IsmAvatar, because I encountered about 60 problems that EGM would fix. No ++, no alpha channels in the default format (GM6) (This cost me another our of work), no way of declaring C-level globals.

Also, polygone's framerate fix fucked me a bit, because it only fixes it on his computer, and packing AL in with the engine made filesizes huge. Something needs done about those two, too.

At that, I'm tired. Good night.
If anyone else entered the Ludum Dare, do let me know.
Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Unknown gender) TheExDeus
Reply #1 Posted on: August 22, 2011, 06:44:06 am

Developer
Joined: Apr 2008
Posts: 1860

View Profile
Quote
"Overworld"/"Map" resource.
What now?
And yes, I agree that AL should be added only when such a system is used, because I didn't hear sound in your game, but it still was quite big. Also, you should of finished the .res thing so icons and game description could be added. And remove the console when Build is used and have it on when Debug is used (so we can finally have clean builds without the extra shit and it would look a lot nicer as well).
I agree with the other stuff.

And good entries. Yours looks very good josh, but not much gameplay (well you did have quarter of the time everyone else had).
Dazappa's has more gameplay, but its quite hard for me so I didn't go trough it all.
Anyway, looks good and shows a great deal of progress for ENIGMA. It needs the things I said earlier and it would be ready to be released in the wild. Functions and stuff can be added later incrementally (just like it has been done now), but the basic things like allowing a nice, clean build should be added first. So people can actually distribute their games without people asking what the black window does (does it hack my PC?).
Logged
Offline (Male) polygone
Reply #2 Posted on: August 22, 2011, 07:11:05 am

Contributor
Location: England
Joined: Mar 2009
Posts: 794

View Profile
Quote
The room editor needs a way to drag select and move efficiently.
You can use CTRL left click to drag instances. What it actually needs is a manual written for it. There are a number more room editor suggestions I put on the wiki:
http://enigma-dev.org/docs/Wiki/Room_editor:Suggestions

Quote
Also, polygone's framerate fix fucked me a bit, because it only fixes it on his computer
Oh didn't overly think about that but yeah it's not actually hardly fixed anyway it was just working a little bit better, it's still way too fast for some reason. You need to control it with timers.

Anyway add all this shit to the wiki todo list/suggestion pages.
Logged
I honestly don't know wtf I'm talking about but hopefully I can muddle my way through.
Offline (Unknown gender) daz
Reply #3 Posted on: August 22, 2011, 10:24:34 am
Contributor
Joined: Jul 2010
Posts: 167

View Profile
Make packing OpenAL an option checkable in LGM.

Things I've noticed:
  • Declaring a global var in room create code, ie: "global.playerdeaths = 0;" causes the game to crash. If global.playerdeaths is also used in any object anywhere, it no longer errors. I think in the room create code it just doesn't add it to whatever master var list there is.
  • I stumbled upon a random bug in LGM's room editor that I haven't tried reproducing yet. I was placing some objects (all the same object) and suddenly the ones I placed were just invisible. They still showed up in the object list though...
  • sound_volume and LGM's sound volume slider don't work, so for my music I had to use audacity to neuter the volume
  • I noticed a problem with object creation code placed in the room editor. Sometimes the code is executed before and sometimes after the object's default creation code. I believe GM does object first, room object creation code after, which allows me to change default variables I set in the objects in the room. I couldn't change the cog speeds in my game for instance because of this..
  • Never bothered trying to make the console window disappear on windows, but for some reason the way LGM/ENIGMA launches the game it launches it without a console lol
  • Compile option in LGM crashes, so I have to go to temp dir to pull out executable
  • The tiles system in ENIGMA is quite broken, myself and others in the IRC get gaps in tiles quite often. Because of this, I had to use objects as tiles
  • The above brings me to... there was no instance_deactivate. Most of my pseudo tiles didn't have any code, so I just did a check to see if the tiles were in the view, otherwise not draw them. This slight optimization will probably make quite a difference, but I didn't have time to force my drivers into non-vsync and create a dual setup to see the FPS impact

If I think of anything else I'll post here ;P as per Josh/Poly I've also made my wiki page contain my ENIGMA wishlist, because gimme.
Logged
Offline (Male) Josh @ Dreamland
Reply #4 Posted on: August 22, 2011, 01:15:03 pm

Prince of all Goldfish
Developer
Location: Pittsburgh, PA, USA
Joined: Feb 2008
Posts: 2950

View Profile Email
Point taken, HaRRi. I don't mind doing that today.

Polygone: I know control-click moves. I said I wanted drag selection: drawing a rectangle to select multiple instances to move. I found myself wanting to move around large structures in my game, and that wasn't easy with the current featureset. The room zoom also doesn't go very far, in or out.

daz:
1) That's bad. Global is supposed to contain a copy of each dot-accessed local; I'd best give that a look, too.
3) I forgot about that. The sound system needs work in general. The codecs need moved to ../Codecs/...
4) That's odd, considering object creation code isn't implemented at all anymore.
5) Yep, I'll deal with that one.
6) I don't experience this problem, but I'm glad you found a workaround. We'll deal with that later.
7) Yeah, I need to redo that. TGMG didn't spend much time on it.
Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Male) polygone
Reply #5 Posted on: August 22, 2011, 01:30:55 pm

Contributor
Location: England
Joined: Mar 2009
Posts: 794

View Profile
Oh I misread.
Logged
I honestly don't know wtf I'm talking about but hopefully I can muddle my way through.
Offline (Male) Josh @ Dreamland
Reply #6 Posted on: August 22, 2011, 01:51:39 pm

Prince of all Goldfish
Developer
Location: Pittsburgh, PA, USA
Joined: Feb 2008
Posts: 2950

View Profile Email
You know what else I was going to add?

Code: (C++) [Select]
string string_list(const enigma::varargs& x, string sep) {
  string res;
  for (size_t i = 0; i < x.argc; i++)
    res += toString(x.get(i)) + sep;
  return res;
}

string string_list(const enigma::varargs& x) {
  return string_list(x,", ");
}

string string_list_ext(string sep, const enigma::varargs& x) {
  return string_list(x, sep);
}

the header being this:
Code: (C++) [Select]
string string_list(const enigma::varargs& x);
string string_list_ext(string sep, const enigma::varargs& x);
« Last Edit: August 22, 2011, 02:23:11 pm by Josh @ Dreamland » Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Unknown gender) TheExDeus
Reply #7 Posted on: August 22, 2011, 02:09:43 pm

Developer
Joined: Apr 2008
Posts: 1860

View Profile
Another thing I found when making mp_ was that instance iterators don't work in create event, so mp_grid_add_instances() doesn't work in create events. Its probably because when the room is loaded, an instance is added, its creation event called, and then the next instances is added and so on. So I can't access those instances in create event. I could be wrong though.
Also, variables like "grid" are templates now for some reason (probably because of the parser) so it changes into "grid<>" and errors.

Quote
You know what else I was going to add?
Doesn't that just do this:
Code: [Select]
return string(variable1)+", "+string(variable2)+", "+string(variable3) +....I it could be easier to call that function:
Code: [Select]
string_list(variable1,variable2,variable3,", ")But I don't really see the point. But it can might as well be added.
Logged
Offline (Unknown gender) daz
Reply #8 Posted on: August 22, 2011, 02:40:27 pm
Contributor
Joined: Jul 2010
Posts: 167

View Profile
I'll try to see if there's any specific repeatability to the room object creation code when I look for the invisible object bug.

All in all though, ENIGMA's still a quite viable game development tool. Looking forward to starting on a bigger project with it once some of the issues and wishlist items I have are addressed =P

I imagine each game entry will get around 20-50 plays (hey man, it's hard for everyone to play every game) so that's a nice start on some exposure. Hoping to participate in the next as well, but usually the one in December coincides with my finals (or birthday). Might do a mini LD between then instead.

Also I think I'll go organize my wishlist by order of desire...
Logged
Offline (Male) Josh @ Dreamland
Reply #9 Posted on: August 22, 2011, 04:55:21 pm

Prince of all Goldfish
Developer
Location: Pittsburgh, PA, USA
Joined: Feb 2008
Posts: 2950

View Profile Email
HaRRi: that's the behavior I question above. "Does instance_count grow with each create event at room start in GM as it does in ENIGMA?"

If not, I can update that to do allocations first. Otherwise...
Logged
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble
"I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
Offline (Unknown gender) TheExDeus
Reply #10 Posted on: August 22, 2011, 06:17:59 pm

Developer
Joined: Apr 2008
Posts: 1860

View Profile
Quote
that's the behavior I question above.
Then I can confirm that it doesn't do that in GM. In GM it creates all of the instances and only then executes their create events.
Logged
Offline (Unknown gender) luiscubal
Reply #11 Posted on: August 22, 2011, 07:50:28 pm
Member
Joined: Jun 2009
Posts: 452

View Profile Email
Quote
I found myself really wanting the planned "Overworld"/"Map" resource.
What would this resource be for? What would it do?
Logged
Offline (Male) Rusky
Reply #12 Posted on: August 22, 2011, 08:14:07 pm

Resident Troll
Joined: Feb 2008
Posts: 954
MSN Messenger - rpjohnst@gmail.com
View Profile WWW Email
It would be a level up from rooms, to organize how they fit together.
Logged
Pages: 1
  Print