Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Author
Message
YetAnotherMike
7
Years of Service
User Offline
Joined: 25th Jun 2017
Location:
Posted: 25th Jun 2017 13:10
Hey there!

I'm currently looking for a suitable game dev package for creating 2D games. In my day job I'm a developer of business applications. I mainly use C# and Java to get the job done. In my free time I like to create some small games. I have tried many frameworks / packages. I have tried Unity but it always felt to be a little "too much" for the simple things I wanted to accomplish.I have tried libGDX and I liked the idea of using Java. To keep things simple I then switched to Monkey X which now seems to have gone beyond the rim. I really liked the idea of using a simplified OOP based language with a rather powerful media API. I know there is Monkey 2 in the making but I don't really like the way it's headed. The language feels like a copy of C++, just in a weird way.

Some time ago I had found out about AppGameKit but I always kind of ignored it because of it's simple syntax and the absence of even basic OO features. I know I could use it with C++ but if I do this I could just as well use one of the 1000 libraries out there. How do you feel about loosing all OO capabilities? How hard is it to go back to just functions & types? I can't even remember the last time I wrote something in C. Anyone here having had the same "problem"?

Thanks!
tmu
8
Years of Service
User Offline
Joined: 2nd Feb 2017
Location:
Posted: 25th Jun 2017 16:12
Hi YAM,

And welcome.

I have some similar background and similar languages, etc. And still work with those in the dayjob as well. Got AppGameKit license some time last year and early this year gave it a go to write some simple game(s). I previously tried LibGDX and loved the possibility to use Java, all the libs, functionalities, etc. Did not like how complex even the dev environment was to set up, all the issues I kept getting into, the feeling it did not need to be that complex.

On a single person side-project I prefer to the tradeoff of making 90% stuff simple for me while sacrificing some performance or whatever. Looked briefly at Unity et al and felt like I prefer a simple 2D game and try to do that good rather than poorly done 3D hack. For such things Unity et al are way overkill IMO. Gamemaker seems potential but expensive and with all sorts of add-ons and after a bit of scracthing not that much simpler. Has a nice level editor though. So I have for now used AppGameKit for a few 2D games.

My PROS:
-Very simple to do stuff, including physics. Just give it a direction, spin, etc. Creating sprites etc.
-Lack of some annoying OOP features is actually nice, such as inheritance, polymorphism, etc. Other times lacking (see below)
-Great way to test on mobile if that is your thing.
-Great cross-platform compatibility.
-Very easy to develop on desktop and deploy everywhere.
-Good abstraction for Android/iOS for things such as achievements, leaderboards, in-app purchases.
-The community is nice and friendly, even though quite small. Usually a few same people here answering questions. But people do try to help.
-There is even some level editors etc from the community but not quite the same as a fully integrated, professional grade one.

My CONS:
-Sometimes the simplicity is a bit of a bummer. Say I shoot my physics object. How do I know what all the things were hit (and where) in the previous frame when an object bounced around the screen?
-Or in general some things are a bit hard for me to figure out from the docs. Like mixing images for effect such as take R from image 1, G from 2, B from 3 and A from 4. Or some variants.
-Above just as examples, might be easy enough, but sometimes I find it hard to find some info.
-Lack of good refactoring. You have some basics such as go-to-declaration to navigate code in the IDE but half the times even this does not work.
-Lack of ability to structure your code. So you have to uniquely name all functions, and after a while this gets complicated and messy.
-You only have basic types such as arrays, so sometimes you need to be creative. But you gotta feel so great that you can and get to solve them problems, right?
-The packaged games on Android and iOS are quite large. About 20MB for a hello world. So forget about featuring in small size app categories
-Can be difficult to access native functionality if you want something that is not in AGK. But that should apply to every kit out there.
-The debugger is OK but you need to write the variable names in it manually to see the values, and you need to implement your own logging (and figure out where did it go..). Or maybe I just don't know and someone will not correct all my points.
-Lack of level editors, etc. Even lack of seeing your media assets in the IDE.


TRICKS and NOTES:
-There is a flag that forces variables to be declared before used, that should help with managing code and variables.
-You should put all your global variables in custom types to avoid further confusion and make managing them easier.
-Seems that one guy is responsible for all of AppGameKit development (Paul). He does not necessarily have always a chance to put as much effort as you might like, and communication could sometimes use improvement. But generally I have found issues to be addressed OK. I find it a risk I can take even if Paul decided to quit. If my game suddenly made millions I could then just hire someone to rewrite it, and the company behind this has been going for long time.

SUMMARY:
I would recommend to try this, I find it so far best suited for my needs. I keep an eye open for alternatives and where they are all going. For the price you might just get it on one of the ever-lasting discounts and try writing a very simple game. Honestly I wonder what the guys live on with these prices.

As soon as you start making your game bigger you probably find it difficult to manage the code. So variables in types, compiler flags, ... would recommend using them right off. I did not but will next now that I know they are there..

Anyway, hope someone can now correct all my issues and tell us how to do it right etc.




GameDevGuy
9
Years of Service
User Offline
Joined: 18th Jul 2015
Location:
Posted: 26th Jun 2017 02:08
Hi YetAnotherMike,

I come from a coding background with OOP and still have "why can't I just do this..." moments where I know something would be easier, with objects and polymorphism.

But having said that, I feel I have adapted to the AppGameKit BASIC, and for a lot of code, I think being prevented from over-engineering my code with a wonderful hierarchy of classes has been benefit.

Thinking about it more, if Object Oriented Extensions to the BASIC language were added, then I don't think I would use them. If I wanted OOP then I would just skip to Tier 2 and still keep the benefits of the amazingly easy to use and well thought out API that is central to AGK.
YetAnotherMike
7
Years of Service
User Offline
Joined: 25th Jun 2017
Location:
Posted: 26th Jun 2017 07:07
Hello again!

Wow, thanks a lot! That doesn't sound too bad then although the "one developer show" sounds a little scary. I just bought a licence to play with it. As you noted it costs literally "nothing". I agree that the editor (I wouldn't really call it an IDE) is not the most advanced piece of software ever but I guess it gets the job done. I I will just try to implement my usual Space Invaders clone and see how that goes. With my purchase I also received the tutorial guide so I think I should be good to go.

I'll keep you updated, thanks again!
Markus
Valued Member
21
Years of Service
User Offline
Joined: 10th Apr 2004
Location: Germany
Posted: 26th Jun 2017 11:54
i think oop is more productivity, have a better syntax than the id usage always.

syntax example with oop, and there is also a context if you use the dot at input.
local spr as Sprite = Sprite().Size(25,50).Depth(500).Group(5).Shape(1)
spr.PositionByOffset(50,50)

in oop i mislike the new and null anomaly.


AGK (Steam) V2017.05.15 : Windows 10 Pro 64 Bit : AMD (17.4.4) Radeon R7 265 : Mac mini OS Sierra (10.12.2)
Dybing
13
Years of Service
User Offline
Joined: 12th Sep 2011
Location: Bergen, Norway
Posted: 26th Jun 2017 15:05 Edited at: 26th Jun 2017 15:07
I just like the simplicity of AGK. I'm not bummed by the lack of OO, though that said - some sort of modularity and encapsulation would be greatly appreciated. Namespace pollution is real, and in a suffiently large project will happen.

I tend to structure my projects having one file (.agc) for each responsibility, the lower down in the list, the less abstraction is involved. IE:

main.agc : Setup, a few globals, main loop
views.agc : Managing each screen/view
output.agc : Collect assets and manage them
input.agc : read keyboard, mouse, other input.
text.agc : Nuts and bolts of drawing and manipulating text
sprites.agc : Nuts and bolts of drawing and manipulating sprites and images
fileIO.agc : All file handling
httpIO.agc : All networking
structs.agc : All datatypes definitions

And so on. Now if we had modules/packages (as in Modula2 or Go), each of those would be it's own namespace and be called in the typical fashion of packageName.functionName(arguments) - but sadly we do not.

Other negatives of AppGameKit is how tied it is to the Geany IDE it ships with. I'd much prefer if AppGameKit (tier 1 obviously) provided extensions to popular lightweight IDEs like say Atom or VSCode so we could use one of those. I wouldn't mind doing the compiling via Bash. I do it all day long in Go and C#

But for quick and dirty prototypes or fun little hassle-free multi-platform frontends AppGameKit is great. It really is code once, run everywhere. Could use a proper encryption package though. HTTPS and Hashing is all well and good, but throw in some RSA and/or AES and I'd be happy as a cuddly kitten.
tmu
8
Years of Service
User Offline
Joined: 2nd Feb 2017
Location:
Posted: 26th Jun 2017 15:25
Yeah so to sum up a a bit more, some sort of module system for scoping methods/functions would be great. As many also mentioned. Something simpler than the more complex OO versions. Something like Go modules could be useful starting point, as Dybing mentioned. And the real nice thing about the BASIC is that it does prevent a lot of overengineering, as GDG mentions. So it has its plusses as well, although with a bit bigge projects the namespace pollution is becoming a real bummer. Not unmanageable but you feel the pain..

Plugins for some Jetbrains IDE would be great for me. But then again, you'd probably get into arguments which IDE to choose..
GarBenjamin
AGK Developer
8
Years of Service
User Offline
Joined: 30th Nov 2016
Location: USA
Posted: 26th Jun 2017 17:57 Edited at: 27th Jun 2017 00:31
I'm really enjoying developing in AGK. Many years ago I thought oop was the only real way to develop really likes inheritance. Then favored interfaces over inheritance. Then got into DI. And then a few years ago questioned all of this stuff. Seemed to me like we are continually adding more and more junk in our projects from these "best practices" often times to fix flaws or overcome limitations introduced by using other "best practices".

So I came full circle right back to straight forward procedural programming. Actually a sort of hybrid procedural and data driven approach. I strive only for consistency and simplicity. Not fanatical about it but that is my golden rule.

AGK BASIC and using the AppGameKit library in C/C++ works very well for me.

I was going to wait until my current project is further along to share it here but seeing this thread I thought it might be useful. Because this is also a Space Invaders game only in 3D. And I am developing the game in AppGameKit BASIC and C & AppGameKit library at same time. Basically I update one of the versions test then port my update to the other version.

It is very early on because I don't spend much time on this stuff. Made it to 6 and 1/2 hours yesterday. I am making a videos list showing the progress and yesterday I decided to also make a video showing the current code both for the BASIC and C/C++ versions.

You can advance to next video in the list (or just watch each in full and they should auto-advance) and see how develop has unfolded and finally see the current source in video 9b.

I have no idea how to use that video tag to embed the video here so you'll have to click this link and watch it on YouTube. HD is best of course.

https://www.youtube.com/watch?v=W4PT88Knli0&index=1&list=PLM8uJ2ISEVJvkIiYjXNtXvlnBme6VsyBt

It's better to watch on YT anyway because beneath each video there is a description i filled in of what was done in that dev session.

Anyway it might be interesting to you.
TI/994a (BASIC) -> C64 (BASIC/PASCAL/ASM/Others) -> Amiga (AMOS/BLITZ/ASM/C/Gamesmith) -> DOS (C/C++/Allegro) -> Windows (C++/C#/Monkey X/GL Basic/Unity/Others)

Login to post a reply

Server time is: 2025-06-03 11:46:44
Your offset time is: 2025-06-03 11:46:44