pridelandsjokebig.exe

Now with new GALLERY

Moderators: Hagus, SeanWolf

Post Reply
User avatar
Frooxius
Posts: 311
Joined: Tue Jul 28, 2009 6:00 pm
Contact:

pridelandsjokebig.exe

Post by Frooxius »

Because I had birthday a few days ago (however, not certainly happy, it's just ordinary day for me spent with work), I decided to give some present to you instead. I noticed that in Housepets' Bonus page is picture of a fictional cover of a Pridelands game: pridelandsjokesmall.png

So I got an idea, why not create a game, when there's already a cover, thus making a Housepets related fan game :-) Few days ago, I started to work on a simple battle gamesystem and for the sake of simplicity and development speed, I used GML programming language. Thus, this project won't be really big game (for that, I would rather use a C++ or C# languages. For C# Microsoft supplies interesting game development SDK, but I'm also preparing my own C++ engine, but it won't be ready for moths, which is a little bit too long for a small game), but just something simple.

I have already very well functional battle system, designed as a platform game. I created to classes, for players (including enemies, which are controlled by simple artificial intelligence) and weapons and those two work together. They're both functional and thus, creating various weapons and enemies is matter of seconds.

However, since I'm currently without graphic designer, I thought that some other Housepets fans here could help me with graphics. As you can see, graphics which I've created is looking horrible and stupid, because I made it quickly and more significantly, I'm not a graphic designer so I can't create very well looking graphics from scratch (I drew animals in this game on my PDA with touchscreen and then I draw them in my computer with mouse).

In following demo, there are only two characters - a lion with a spear, which should look like that one from Pridelands poster and a jackal with a club or spear (there are four different jackals - they differ in difficulty to defeat) and also quickly made (thus ugly looking) level.

Please note, that it's merely a technical demo, not (yet) a fully fledged game. Point is, that I want to find out if you like a Pridelands game idea (and want to help me with graphics) and if Rick will be okay with this. It's not yet really a Pridelands game, since there is no story, no specific characters (only two kinds of animals), so it can be stopped now and I could make a completely different game or just move it to my "unfinished" archive and let the dust to cover it.

So here you can download a executable technical demo (2.4 MB ZIP), I can even release it's sources, it's still only about 600-700 lines of simple code (although with several notes, where I'm whining about some stupid features of GML language :D ). Here's also a little screenshot, but it says absolutely nothing, only my ugly "graphics". :)

Image

How to control:
A - left
D - right
W - jump (you can even jump from walls! Just press direction key towards the wall and then jump (if wall is on the left, you must press and hold A and then press W)
J - attack (pressing it even when being hurt will increase yellow meter, so keep pressing it as fast as you can!)
K - hard/aggressive attack (can be only done when yellow meter reaches full capacity, but it overrides anything - even when being attacked)

R - restarts the demo
P - press it and game starts playing itself :D (you may press it several times, but it can cause game to slow down, because of to many objects);

Let me know if you like the idea and wish to create a Pridelands game, or not. If you want some reference of my work, watch those two videos, which are showing all significant (thus without a lots of little experiments) games I've created since year 2003 (when I started) to year 2008. Of course, only the latest ones are relevant, so watch at least the second part, especially the last game called DeathFall, which is my latest released creation, but also about a year and half old, so my skills are even more improved now.
Reference of my work 2003-2006 (Youtube) Part 1
Reference of my work 2006-2008 (Youtube) Part 2

EDIT: Anyway, I also know person who could compose a music for this.
EDIT2: And by the way, I hope that at least somebody will find it interesting, since I spend on this last few days (and nights) and forgot to take dinner and sleep :D

EDIT3: Well, here is the source. (~11 MB) I think that I can release it anytime (even if it won't be a Pridelands game), since its only a simple techdemo and few hundred lines of simple code (nothing extra to keep in secret), so you can look how that simple gamesystem works (it's a GML code using simple class system and defining specific objects using single inheritance (GML does not support multiple like C++ does, which is shame since it would make a lot of things easier) and with a little bit of taste of C++ style, since I spend with this language a very long time (it was sometimes harder to adapt to GML. For example it evaluates only positive numbers as true and negative and zero as false!)), as well as see some source pictures, including weird drawings of four animals.

EDIT4: Also for those who are interested, here is the plaintext form of the source of that simple battling system, so you can see how it is programmed and how flexible the code should be (meaning that creating new weapons and enemies is matter of seconds). Of course, there are some flaws, since GML does not support encapsulation principle nor polymorphism, two main principles of OOP. I still don't understand how some people dare to call it a OOP language...
Last edited by Frooxius on Tue Nov 03, 2009 2:03 pm, edited 4 times in total.
Image
hug_overflow.asm wrote: LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP
User avatar
Alex
Posts: 3792
Joined: Wed Aug 05, 2009 3:41 pm
Location: End of Time
Contact:

Re: pridelandsjokebig.exe

Post by Alex »

Well, I must say, Tails, I'm impressed. However, sadly, I can't help you with the graphics problem. But still I'd like to see it done.... You never cease to amaze me.
Richarson Valley
Edward S4 P8 E6 C8 I9 A3 L5
Shanks S7 P5 E6 C7 I4 A6 L7


Image
User avatar
Teh Brawler
Posts: 5133
Joined: Fri Aug 14, 2009 1:26 pm
Location: Someplace with Internet access
Contact:

Re: pridelandsjokebig.exe

Post by Teh Brawler »

I've got to say, I'm impressed with the gameplay. It has a lot of potential. And I'd love to help you with the graphics, but I'm way to busy right now. Maybe when November is done, if you haven't found anyone by then, and if the game isn't dead.
DOH HO HO WELL THEN
User avatar
Frooxius
Posts: 311
Joined: Tue Jul 28, 2009 6:00 pm
Contact:

Re: pridelandsjokebig.exe

Post by Frooxius »

Teh Brawler: I think that gameplay is simple, nothing special. However I doubt that it will be dead after November. You know, I'm planing many games even several years and although they are still only in state of plans, drafts and writing documentations and algorithm charts (flowcharts), I could hardly say that they're dead, although I haven't written even a piece of code for many of them, so one month can't change anything for this simple project, which has already written base code on which I can built whole game quite easily and quickly.

EDIT: I also added source to the first post.
Image
hug_overflow.asm wrote: LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP
User avatar
Mr. BoO
Posts: 38
Joined: Sat Oct 10, 2009 12:59 pm
Location: My Room

Re: pridelandsjokebig.exe

Post by Mr. BoO »

It's really good but of course it should be improved(I got stuck with 5 of them and I was dead xD).
I would gladly help you but I don't know anything about programming.I hope you will finish it cause I really like it :D
Jazz S-7 P-10 E-6 C-3 I-5 A-7 L-4

Image
Ebly
Posts: 4246
Joined: Sun Oct 26, 2008 10:01 am
Location: Imagination!

Re: pridelandsjokebig.exe

Post by Ebly »

Just wondering - would it not be wise to quickly translate the present code you have from GML to C++ or C# so you don't have to completely write it all out again if you decide to make it into a larger game using a 'better' OOP language, or would that be too much bother?
I was going to make a joke but then I did.
User avatar
Frooxius
Posts: 311
Joined: Tue Jul 28, 2009 6:00 pm
Contact:

Re: pridelandsjokebig.exe

Post by Frooxius »

Mr. Boo: As I already said in the first post, it's only a technical demo (presentation of game system), not yet a game, so don't worry about some bugs similar to that. Also, I don't need help with the programming, but with graphics, which I also said in the first post. People don't read it or what? :)

Ebly: Answers to your question are also in the first post. Writing that in some lower level languages would require much more code, even with the same functionality. Also, I would have to create some engine for drawing graphics, playing sounds, collision system and many other functions, or find some libraries which would provide that, but it will still take much more time to program. Of course, that would be beneficial for a large game, but I don't want to create large game (for larger game, I would even need to create documentation and some plans), so GML should be good choice for this. Anyway, there's not such thing as a better or worse programming language (excluding those badly designed), each has a specific purpose and each is better for different tasks and worse for others. It's a programmers job to decide which one to use to create project by his needs and I want to create this quickly, so I chosen this one, with underlying engine providing large function library and thus allowing fast development. Also, there exists much more programming paradigms than OOP and some languages provide support for several at once, but I think that OOP is one of the best, but GML doesn't support it fully. There's simple inheritance, maybe a little bit of polymorphism (depends on what you want. For example there's no such thing as pointers to derived classes and virtual functions, there are no pointers at all :D ) and absolutely no encapsulation. :-)
Image
hug_overflow.asm wrote: LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP
Ebly
Posts: 4246
Joined: Sun Oct 26, 2008 10:01 am
Location: Imagination!

Re: pridelandsjokebig.exe

Post by Ebly »

Tails++ wrote:Ebly: Answers to your question are also in the first post. Writing that in some lower level languages would require much more code, even with the same functionality. Also, I would have to create some engine for drawing graphics, playing sounds, collision system and many other functions, or find some libraries which would provide that, but it will still take much more time to program. Of course, that would be beneficial for a large game, but I don't want to create large game (for larger game, I would even need to create documentation and some plans), so GML should be good choice for this. Anyway, there's not such thing as a better or worse programming language (excluding those badly designed), each has a specific purpose and each is better for different tasks and worse for others. It's a programmers job to decide which one to use to create project by his needs and I want to create this quickly, so I chosen this one, with underlying engine providing large function library and thus allowing fast development. Also, there exists much more programming paradigms than OOP and some languages provide support for several at once, but I think that OOP is one of the best, but GML doesn't support it fully. There's simple inheritance, maybe a little bit of polymorphism (depends on what you want. For example there's no such thing as pointers to derived classes and virtual functions, there are no pointers at all :D ) and absolutely no encapsulation. :-)
Tails++ wrote:Few days ago, I started to work on a simple battle gamesystem and for the sake of simplicity and development speed, I used GML programming language. Thus, this project won't be really big game (for that, I would rather use a C++ or C# languages. For C# Microsoft supplies interesting game development SDK, but I'm also preparing my own C++ engine, but it won't be ready for moths, which is a little bit too long for a small game), but just something simple.
Sorry to quote you at you, but I just thought I should clarify my question a bit better. I wasn't actually asking you why you didn't use C++ from the get-go, I was actually wondering more along the lines of if you were to make this a larger game for some reason, perhaps having the simple battle system you mentioned already written out in, say, C++ would make it a lot faster to adapt it into the overall game. Like, if you were to have to do it again in C++ later for whatever reason, having part of the work already done would be good, wouldn't it?

Either way, I'd be surprised if you made this into a big game, and you certainly seem determined not to, so it kind of makes the question obsolete. xD

...What the hell, seriously, no pointers? No encapsulation!? And you said it doesn't have multiple inheritance… how can you work with that?
I was going to make a joke but then I did.
User avatar
Frooxius
Posts: 311
Joined: Tue Jul 28, 2009 6:00 pm
Contact:

Re: pridelandsjokebig.exe

Post by Frooxius »

Ebly: I wrote and somewhat debugged this battle system in about three days, so if I wrote something similar in different in future, it won't take so much time or I can port code later, since it's not going anywhere. However, if don't really think that I would ever write this battlesystem again, because I will rather write a different one, with more features and proper documentation.

Also I said, (Standard) C++ does not provide by itself any functions to draw graphics, play sounds, resolve collisions, interact with operating system or even a game engine for maintaining all objects and rendering frames. You have to use libraries providing access to these features and write your own engine which will provide enough functionality to create a game. This would take much more time to program or even plan. Of course, you can create something simpler within days and without plans, but that isn't very good choice, because it is highly possible that code won't work properly and debugging it will take much more time, since there's no documentation and every part is written without knowing what it will exactly do, how it will interact with other parts of engine and so on. Also, when you decide to add new feature, you could also end up spending hours trying to figure how to add this single new feature to a barely working engine, so it won't cause engine to malfunction or stop working and you will most probably end up creating many workarounds to get it working. This both slows down the development significantly and engine performance as well as easy code maintenance. Maybe it's possible to use some existing free to use engine, but you can't become fluent with it within a day. GML allows really rapid development, which is perfect for simple projects like this. Of course, for larger ones it has many drawbacks, for example speed (it's an interpreted language). Anyway, when I create first usable version of my engine, I will probably start using it, but as I said, that won't happen in months, because it needs to be planned carefully, since proper design is one of the most important parts of creating software.

Anyway, both Java and C# for example don't support multiple inheritance too. It should make code easier to understand and you can always work with that and create exactly the same thing as with multiple inheritance, but I think that multiple inheritance makes some task much simpler. For example in that battle engine, I have defined a general object/class called character_class. It defines all traits that all characters without distinction between player or enemy, or between kinds of animals have common. This is code that takes care of moving in terrain, controlling character's movement, attacking, being hurt and so on as well as playing appropriate sounds (if they exist) according to current action and displaying proper pictures (if they exist) also according to current situation (in air hurt, in air not hurt, on ground not hurt...). There's also AI code which controls character, if variable controller evaluates the value of macro CTRL_AI.

Now that I have this general object/class, I want for example create two types of characters - players and enemies. All I need to do is to declare for player derived class, type will be player (only characters of different types can hurt each other), controller will be player (keyboard) and target closest instance of object (and objects derived from) enemy. Similarly for enemy derived class, type will be enemy, controller will be AI and target closest instance of player class objects. But now comes the difference between multiple and single inheritance, because I want to create a derived classes for various animals. This derived class will define pictures which will be displayed (for example lion pictures), sounds which will be played (for example lion sounds) and maximum walk speed and jump. This way I will have defined a traits common for all lions or whatever animal that is. Then I just create specific (for example) lion characters, with different base weapons, AI latency, energy and so on.

With multiple inheritance, all I need to do is to create this final specific character object (for example lion enemy) and let it inherit traits both from lion class and enemy class and define it's aforementioned specific properties. Since it derives from both lion class, it will look and sound like a lion and will be an AI controlled enemy, which will attack player. For a lion player, I would derive it from lion class and player class.

However, single inheritance allows to derive only from one object. Thus I had to create enemy and player classes and then derive a lion and jackal classes not from character_class, but from player class and then create a specific object from these lion-player and jackal-player classes and then derive exactly the same classes from enemy class, creating lion-enemy and jackal-enemy classes. Thus I have duplicate classes - two lions and two jackals. They're exactly the same, but one is for enemies and one for players (you can't find this in source in the first post, but it will be there later (maybe)). Point is, I'm defining lion properties twice and programmer should never repeat his code (because if I changed for example one property in one lion class, I must change it also in the second one - this is both annoying and error prone, since you often forget to do that). I solved this by creating a standalone script, which defines those traits, but it's not the most ideal solution. So it is possible to work without it, but in my opinion not always very comfortable. Well pointers are not really so big issue, they have their place in lower level languages, but of course, sometimes they will be useful, for example when I would need function to modify calling arguments. Encapsulation will also be better, since all code has access to all data of every object (functions are global, they can't be bind with objects), but in small projects, it's still possible to maintain.


To the large game: I'm certainly not making this a big game. I follow the rule: Never ever create a large project without careful planning and documentation. I did that once (no planning) and it end up terribly, so I'm not doing it again. I already mentioned before, what happens when you start programming something larger without plans. You can (and should) spend even moths creating careful plans, about how will that software work, how you will develop it and so on, before actually starting to writing a code. It may seem as a unnecessary, but results are worth it.
Image
hug_overflow.asm wrote: LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP
User avatar
Frooxius
Posts: 311
Joined: Tue Jul 28, 2009 6:00 pm
Contact:

Re: pridelandsjokebig.exe

Post by Frooxius »

Teh Brawler wrote:Maybe when November is done, if you haven't found anyone by then, and if the game isn't dead.
So?
Image
hug_overflow.asm wrote: LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP
User avatar
Teh Brawler
Posts: 5133
Joined: Fri Aug 14, 2009 1:26 pm
Location: Someplace with Internet access
Contact:

Re: pridelandsjokebig.exe

Post by Teh Brawler »

Tails++ wrote:So?
Tell me what you need, and I'll see what I can do. However, if you're looking for digitally created 3-D stuff, I'm afariad I can't help you with that.
DOH HO HO WELL THEN
User avatar
Dylan
Box Fox
Posts: 2275
Joined: Fri Jul 10, 2009 12:31 am
Location: Austin, Texas

Re: pridelandsjokebig.exe

Post by Dylan »

From the recent arc (and talking with Tails++) I wanted to try this game...I love it :)
Image
Make Pasta not war.
User avatar
Jack
Posts: 2499
Joined: Tue Jan 19, 2010 7:20 am
Location: The bunny enslaving site, enslaving bunnies. ^^

Re: pridelandsjokebig.exe

Post by Jack »

dude... DUDE!!!!!!!!!!!!!!!!!!!!!!!!!!!! EPIC WIN!!! i am so sad i can't do anything to help you with this.
...
so sad.
Image
Jack PFRG - S-10 P-7 E-2 C-8 I-6 A-4 L-5
Nika PFRG - S-4 P-4 E-6 C-10 I-4 A-6 L-8
User avatar
Dylan
Box Fox
Posts: 2275
Joined: Fri Jul 10, 2009 12:31 am
Location: Austin, Texas

Re: pridelandsjokebig.exe

Post by Dylan »

Jack wrote:dude... DUDE!!!!!!!!!!!!!!!!!!!!!!!!!!!! EPIC WIN!!! i am so sad i can't do anything to help you with this.
...
so sad.
I know how you feel!
Image
Make Pasta not war.
ReCreate
Posts: 1415
Joined: Sun Mar 28, 2010 6:09 pm
Location: http://bordomirc.co.cc
Contact:

Re: pridelandsjokebig.exe

Post by ReCreate »

Ebly wrote:Just wondering - would it not be wise to quickly translate the present code you have from GML to C++ or C# so you don't have to completely write it all out again if you decide to make it into a larger game using a 'better' OOP language, or would that be too much bother?
Yes. Big time...And using GML is a somewhat better idea for 2d games because it can do all a compiled language can(with the aid of dll's) and is a LOT easier to use cutting the development time in half.
Don't let others define you, Only you can determine your fate
no longer active, sorry
Ebly
Posts: 4246
Joined: Sun Oct 26, 2008 10:01 am
Location: Imagination!

Re: pridelandsjokebig.exe

Post by Ebly »

ReCreate wrote:
Ebly wrote:Just wondering - would it not be wise to quickly translate the present code you have from GML to C++ or C# so you don't have to completely write it all out again if you decide to make it into a larger game using a 'better' OOP language, or would that be too much bother?
Yes. Big time...And using GML is a somewhat better idea for 2d games because it can do all a compiled language can(with the aid of dll's) and is a LOT easier to use cutting the development time in half.
that was a pretty old post, man

i would reply to all my old posts scathingly if i could, but i'd get in trouble for flaming. not that that was scathing, i'm just saying.

i never actually played this due to kind of, you know, living on my mac most of the time and pulling a windows machine out for one or two things - but i played this on request of someone and by god it was worth it

i could spend much longer killing wolves
for sure
that was unbelievably fun
I was going to make a joke but then I did.
User avatar
Jack
Posts: 2499
Joined: Tue Jan 19, 2010 7:20 am
Location: The bunny enslaving site, enslaving bunnies. ^^

Re: pridelandsjokebig.exe

Post by Jack »

Ebly wrote:
ReCreate wrote:
Ebly wrote:Just wondering - would it not be wise to quickly translate the present code you have from GML to C++ or C# so you don't have to completely write it all out again if you decide to make it into a larger game using a 'better' OOP language, or would that be too much bother?
Yes. Big time...And using GML is a somewhat better idea for 2d games because it can do all a compiled language can(with the aid of dll's) and is a LOT easier to use cutting the development time in half.
that was a pretty old post, man

i would reply to all my old posts scathingly if i could, but i'd get in trouble for flaming. not that that was scathing, i'm just saying.

i never actually played this due to kind of, you know, living on my mac most of the time and pulling a windows machine out for one or two things - but i played this on request of someone and by god it was worth it

i could spend much longer killing wolves
for sure
that was unbelievably fun
it really is a lot of fun! i didn't allow myself to post until i played it twice.
Image
Jack PFRG - S-10 P-7 E-2 C-8 I-6 A-4 L-5
Nika PFRG - S-4 P-4 E-6 C-10 I-4 A-6 L-8
ReCreate
Posts: 1415
Joined: Sun Mar 28, 2010 6:09 pm
Location: http://bordomirc.co.cc
Contact:

Re: pridelandsjokebig.exe

Post by ReCreate »

Ebly wrote:
ReCreate wrote:
Ebly wrote:Just wondering - would it not be wise to quickly translate the present code you have from GML to C++ or C# so you don't have to completely write it all out again if you decide to make it into a larger game using a 'better' OOP language, or would that be too much bother?
Yes. Big time...And using GML is a somewhat better idea for 2d games because it can do all a compiled language can(with the aid of dll's) and is a LOT easier to use cutting the development time in half.
that was a pretty old post, man
I realized that only minutes after posting it.
Don't let others define you, Only you can determine your fate
no longer active, sorry
User avatar
Dylan
Box Fox
Posts: 2275
Joined: Fri Jul 10, 2009 12:31 am
Location: Austin, Texas

Re: pridelandsjokebig.exe

Post by Dylan »

Does anyone like to press "P" a ton and watch who wins the battle? ...Though MOST of the time the lions win, but the hyena's get lucky once in a while.
Image
Make Pasta not war.
User avatar
Jack
Posts: 2499
Joined: Tue Jan 19, 2010 7:20 am
Location: The bunny enslaving site, enslaving bunnies. ^^

Re: pridelandsjokebig.exe

Post by Jack »

Dylan wrote:Does anyone like to press "P" a ton and watch who wins the battle? ...Though MOST of the time the lions win, but the hyena's get lucky once in a while.
i totally forgot about that action. really should try that...
Image
Jack PFRG - S-10 P-7 E-2 C-8 I-6 A-4 L-5
Nika PFRG - S-4 P-4 E-6 C-10 I-4 A-6 L-8
User avatar
Frooxius
Posts: 311
Joined: Tue Jul 28, 2009 6:00 pm
Contact:

Re: pridelandsjokebig.exe

Post by Frooxius »

Um... thanks, but do you realize it's not actually a game (yet)? Anyway, a lot of time passed since I announced this and I'm sorry I did nothing. Thing is, I have very much other things and projects to do, but I often have various "pockets" of time, when I can work on something else, meaning that I don't have enough time to start working on something, because I wouldn't be able to finish it, but I can fill that time with creating something else. However, when I stop working on something for several days for some reason (often, when I have a deadline to write batch of articles for a computer magazine I work for (there's new issue every 14 days), additionally to news articles I write almost every day), it tends to stay inactive for a long period of time, but I think I can finish this now.

However, I'm already programming the C++ game engine I mentioned, but there's still a lot of work, although you can try functional demo here. It's just an technical demo to test if the engine works properly (also older version though, newer one isn't much suitable for presentation), but many parts aren't implemented yet, so it's ok if you get stuck in a wall, because I do not handle collisions here much. Use arrows to move, spacebar to attack (in air), try holding left/middle/right mouse button for a second to test palette color effect. While it's written completely in C++ and thus, utilizes all its OOP features, which is very nice and comfortable to work with by the way, it's not ready yet for real use.

So I'll probably try finishing this simple Pridelands game without porting it to C++, assuming somebody will still like to help me with graphics and if it works well, I may try some larger game, with real Housepets characters (like Peanut and Grape), already written in my C++ engine from scratch, because by then the engine should be suitable for real use and I have already some basic idea how it may look like.

Give me some time, I'll make a list and instructions of things (pictures) needed for this Pridelands game, I'll post it here once I make it (the list).

--------------------------------------------------------------
ReCreate wrote:it can do all a compiled language can(with the aid of dll's)
That's a nonsense, interpreted languages can't do ALL that compiled ones can, even with dynamic libraries. Most importantly, then can't execute fast and they will always be slower than languages producing pure machine code (or some intermediate form processed in JIT compiler before execution like C# does). If we talk strictly about GML, then it's impossibly slow in many areas, compared to C++ code. While this may not be an issue for small, simple projects, once you start thinking about something better than simple amateur games, even in the 2D games area, you'll find GML very limiting. Personally, I do not like working with it that much as I do with C++, because I almost feel that with every line of code I write, the performance goes rapidly down. When I'll write some just a little bit complex algorithm in GML, or even a simple loop iterating tens of thousands of times (when processing image data for example, pixel by pixel) and execute it, I can go make myself a tea, before it finishes, while in C++, I don't even blink and it's done. Of course, you need to handle much more things in C++, because GML has already large library of functions and functioning interpreter and engine, but if you're doing something more serious, additional work will pay off.

About three (two and half maybe) years ago, when I was working as editor for the biggest server/community about GML and GM in my country, I worked on various performance tests, ranging from synthetical, 2D and 3D tests. C++ can do the same thing even several thousand times faster, than interpreted language. One of the worst things, I do not understand even know, what developers could've possibly be doing when creating that part, is binary IO system. That thing is slow as an night mare... Before it processes a few dozens of kilobytes, C++ code can process gigabytes and that's not exaggerating. Although dynamic library providing same functions in native code can speed up the process, the overhead caused by calling it's methods (passing execution control), as well as the performance impact of the GML interpreter itself (it has still to read the code calling the function and interpret it), will always result in number of I/O operations per second inferior to the number that native code can produce. If this doesn't seem as big drawback while developing 2D games, believe it is, because you'll need to utilize this quite often. For example, last time I remember, was when I was working on one game a few years ago, which had functionality to upload player's highscore the the online table. To prevent player from cheating, I had to both check all externally loaded files, so player doesn't tangle with them and also protect important variables in memory to prevent changing them using various cheating tools and such. I used one of my simple encryption algorithms written in GML, but even despite it's simplicity, encrypting some variables with dynamically changing key in realtime impacted performance quite significantly, so I had to optimize and even further simplify it a lot. If it was written in C++, I wouldn't have to worry about performance at all, but working with GML is like having both hands tied up, so I use it only for simplest things only.

But there's another thing you can't do. Interpreted language like GML doesn't allow changes to the engine itself, so you're limited in it's functionality. While external libraries may expand it to some extent, they won't actually change the engine itself, unless you use some very advanced techniques for modifying program memory in runtime, which is however very uncommon practice (usually used by malware) and thus, such code will be stopped from executing on many platforms, due to security issues. You can of course modify the standalone interpreter and engine, but that would require a lot of reverse engineering and changing whole drawing system for example for your own to meet your needs would actually take more time, than to write a new one in compiled language. Additionally, you can separate it completely and use your own, while GML engine will run in the background as some controller, but that would also lose the whole point of using it, since it will be more beneficial to write whole engine in the compiled language, than just one part as library, controlled by interpreted code.

Thus, you can't for example utilize many features of graphics card, since you can't change the part which handles drawing and rendering on screen, as well as whole program flow, including some platform specific processor instructions, which may be performance beneficial, assuming they're not utilized by interpreted language trough myriad of calls to a external library, which I can't even imagine, how it could possibly work, to be at least a little bit useful. Furthermore, you can't create portable code with, unless you rewrite the interpreter for the desired platform, which is again more complex than actually using some languages and tools designed for this purpose. Just recently, I saw interesting presentation, where a 2D computer game was developed for three platforms (Windows, Xbox360 and Windows Phone 7), while 80-90 % of the code (I don't remember exact number) was shared - same for all platforms. Furthermore, you can port such code, if it's written properly, into many other platforms, without significantly rewriting large parts of it. That's something that no DLL library can do at all. Also, you can't write low level code, such as device driver or even operating system with an interpreted language. This is surely quite distant from the original purpose of GML, but it shows the absurdity of the statement, that "it can do all a compiled language can(with the aid of dll's)". Speaking of other platforms, you can't also create 64b applications with it, unless developers make the interpreter itself 64b. That's again something, that no DLL can handle. While it's probably not significant drawback now, it shows another thing that even dynamic libraries can't reasonably help with.

GML language itself is not very much well designed, as I find many its features quite stupid. While this allows easier understanding of the code for beginners, creating and managing larger projects is virtually impossible. Aside from inability to separate program easily into various parts, reducing re-usability of the code (it can of course be reused to some extent, but it's not very comfortable) as well as "compilation" (building executables) effectiveness. You can't do an differential compilation and then just link all parts (including previously compiled ones) together. Also you can't ship your GML code in any easy way in a form of a static library, where no-one can easily read the sources, but still can't use it (which also reminds me of quite easy extraction of original sources from executable... I would expect them to at least convert it into some sort of bytecode during building, but that would be probably too much to expect), or even produce your own DLL library for use in other projects.

The language itself is somewhat primitive. It's not even really object oriented, you can't create your own datatypes, which would be useful in many cases, you can't easily work in teams, because of the way the development environment is designed. There are not advanced features, which simplify many things, or even allow many things GML programmers can never dream of... Like my favorite operator overloading, that's really fun :-) , lazy evaluation (I know, C++ doesn't have it, but C# does (it's short circuit operator here if I remember correctly), but generally, it doesn't allow real object oriented programming, only some very simplified form, which doesn't even comply with OOP principles much, so kids can understand it. Also other advanced features from mature languages are missing, like C#'s LINQ, which simplifies a lot processing large amounts of data or ability to create multithreaded or multiprocess applications and games (even 2D games can utilize that), so you can utilize multiple cores - again something that you can't do even with help of DLLs, unless you significantly modify the interpreter.

Another thing that's missing, is any real debugger. I wouldn't call that "Debug dialog" what GM does supply really useful tool for debugging, because last time I checked, you can't step the code, you can't view call stack (which often helped me a lot in Visual Studio), you can't do a "edit, build and continue" and many other things, which in the end actually cut the development time for larger projects. There's many things that interpreted language can't do, even with DLLs, but I understand that until you try many of these advanced, but useful things yourself, you won't know what you're missing, because you then won't like to go back to such inflexible language, unless creating something really simple and fast.
Image
hug_overflow.asm wrote: LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP
ReCreate
Posts: 1415
Joined: Sun Mar 28, 2010 6:09 pm
Location: http://bordomirc.co.cc
Contact:

Re: pridelandsjokebig.exe

Post by ReCreate »

That's a nonsense, interpreted languages can't do ALL that compiled ones can
I'm afraid i cant read that huge wall of text just below ATM. But other than the fact that the execution speed is several times slower it mostly can.

I've never encountered a problem that required me to use a compiled language.(disregarding execution speed problems)
And there are many, very, very complicated things that can be done with GM. I think you are underestimating it quite a bit from what i've read.
(assuming you're talking about making games, but its game maker right?)
And to get my point across, tell me something you think can't be done in GM that can be done in another language(Operating systems and similar do not count)
Don't let others define you, Only you can determine your fate
no longer active, sorry
User avatar
Frooxius
Posts: 311
Joined: Tue Jul 28, 2009 6:00 pm
Contact:

Re: pridelandsjokebig.exe

Post by Frooxius »

If you just read the post, you would find out that I pointed out many things, that are often useful when developing more advanced (but still 2D) games and I forgot about plenty of others, so I don't really see point writing it twice Image

Just a little advice, if you are going to make arguments against something, please make sure you even read what you are making argument against, because it looks a little silly to me, when you ask about some other things, GML/interpreted language can't do (well, some interpreted languages can do some things, that GML can't do, since GML itself is not also the best of interpreted ones), while previous post mentions some of them.

Also, execution speed is one of most significant drawbacks, which limits its usage a lot, especially for performance-demanding software, what computer games (even more complex 2Ds) certainly are.

Also it's fine, that you didn't had the need to use compiled, more powerful language, but as your demands and goals grow, you'll certainly find it very limiting soon. And about complex things in GML... It was either very annoying job, to create something really complex, since GML lacks many features to actually help to manage complex projects (and it runs very slowly in the end) or it's a failure to distinct what's really complex and what just looks complex in eyes of less experienced programmers.

I'm sure I'm not underestimating anything, I've spend many years with it before and I know what I can expect from my own experience. Also it almost looks like you're trying to assume from it's name "Game Maker" that it's almost the only and the best suitable tool for making games (even if only 2Ds). This kind of argument is like when some average user complains, why his old CD-ROM drive in 10 year old computer doesn't read new Blu-ray dics and arguments that it must work, because the disc fits in the optical drive bay and looks just like CD at first glance (I seriously doubt that average user will examine labels/sizes of individual layers on the disc Image )
Image
hug_overflow.asm wrote: LOOP: HUG #Peanut, #Grape
PUSH ACC
JMP LOOP
ReCreate
Posts: 1415
Joined: Sun Mar 28, 2010 6:09 pm
Location: http://bordomirc.co.cc
Contact:

Re: pridelandsjokebig.exe

Post by ReCreate »

Just a little advice, if you are going to make arguments against something, please make sure you even read what you are making argument against
Well, Here's some advice. Don't overdue it and write huge blocks of text when arguing. :roll:
edit: note: we got it all straightened out via MSN. It was mostly a misunderstanding. :roll:
Don't let others define you, Only you can determine your fate
no longer active, sorry
User avatar
The Game
Posts: 3920
Joined: Wed Nov 25, 2009 4:28 pm

Re: pridelandsjokebig.exe

Post by The Game »

Awwwwwww I wanna help!
...
Do you need a runner? I could get like, drinks while y'all work!
...
Thats pretty much all I could do though.....
User avatar
WolvenPaw15
Posts: 1449
Joined: Tue Dec 22, 2009 12:46 pm
Location: The edge of the Abyss
Contact:

Re: pridelandsjokebig.exe

Post by WolvenPaw15 »

Whoa... this board is making my head spin awsome game though....
Pet Friendly:
Zeke Warren RG S-5 P-5 E-5 C-5 I-8 A-9 L-5
Post Reply