Monkey Frameworks... too soon?

Monkey Archive Forums/Monkey Discussion/Monkey Frameworks... too soon?

therevills(Posted 2011) [#1]
I see quite a few frameworks are being advertised or talked about around the place:

* Utoopia Framework & PodEdit - http://www.monkeycoder.co.nz/Community/posts.php?topic=55
* Playniax - http://www.monkeycoder.co.nz/Community/posts.php?topic=494#3816
* mbm (maybe) - http://www.blitzbasic.co.nz/Community/posts.php?topic=94290


The thing is, Monkey is only 3/4 weeks old (to the general public) and I think its too early for people to jump onto the framework wagon.

Grey Alien Framework (GAF) sold well because Jake had created two or three commercial games with it himself so it was a proven framework.

Because Monkey is still young it will change a lot over the next year(s), in the last 3 weeks we have already seen 4 updates and one which changed the Android engine from Canvas to OpenGL!!

For me a framework must be proven, like with GAF and Playniax for BlitzMax (both have commercial games out)...

Yes, you can have common functions which "might" not change over the life of Monkey, but the core engine "might" change too...

Since Monkey is a multi-target tool, are these new frameworks ready for all targets Monkey supports or are they going to be set targets that only the developer is interested in.

I'm not saying frameworks are bad... just maybe too soon :)


GfK(Posted 2011) [#2]
Yep, too soon. It needs to evolve first.


Canardian(Posted 2011) [#3]
Nah, if it works, it's enough. Crysis 2 wasn't very stable either and crashed with a bluescreen, but I got it to work with beta drivers.


Dabz(Posted 2011) [#4]

Crysis 2 wasn't very stable either and crashed with a bluescreen, but I got it to work with beta drivers.



You try releasing a dodgy game at say, the iOS App Store, you'll get nowhere, and if you manage to squeeze one through onto a well known portal, the users will have your knackers in a mincer and serve them to you steak tartare styleee!

We are'nt AAA, our clout is nothing compared to other big companies who dish out tripe on release.

Dabz


GfK(Posted 2011) [#5]
Crysis 2 wasn't very stable either and crashed with a bluescreen, but I got it to work with beta drivers.
I think you posted in the wrong thread - this one is nothing to do with Crysis 2.


Canardian(Posted 2011) [#6]
It has, the stability of released games.


Raz(Posted 2011) [#7]
Never too soon to release tools to make things easier.

If Monkey changes significantly, the frameworks will too if they still offer something new.


jjsonick(Posted 2011) [#8]
With Playniax, the developer is planning to use the framework to port his Blitz games to Monkey, so there seems there will be plenty of motivation there to keep updating the framework with any important Monkey changes (especially if he wants to keep selling it...an obsolete framework would garner bad feedback pretty quickly).


therevills(Posted 2011) [#9]
If Monkey changes significantly, the frameworks will too

Once someone has your money, it might be the last you hear from then...

Im only saying is watch out for people cashing in...

Monkey is very easy to code with and the examples included gives everyone an idea on how to create a simple framework/game.

Also because on how Mojo is setup it really is a framework by itself...


pinete(Posted 2011) [#10]
We have to think in a positive way,

the more frameworks will be the more potential users can access to stuff they wouldn't do in other way..

I don't know the final pricing policies of each one of those frameworks but in any case we're not talking about multi-millions dollars investment! ;) just 20 to 30 bucks, 40 in the worst case, right?..

If I buy a framework and it doesn't work as expected I will try to improve it by myself OR looking for another one that fits into my needs :P

Think in terms of investement: A 40€ framework = a bunch of hours/days/weeks/months maybe of I+D, entertainment and new posibilities to develop.... a 40€ game is in most of situations 5h to 10h of entertainment (bad in a lot of cases), as much... :D

To me all kind of frameworks/tools/snippets/whatever are more than welcome!!
Best!


therevills(Posted 2011) [#11]
I've got 3 games (Windows and MacOS) on Big Fish Games using Grey Alien's Framework, which cost me £30 and Ive made a quite a bit of money from using it...

So yes a framework can by an investment, if its good and you use it well... :)

My "framework" for Monkey currently has Sprites, Screens (not state-based), SoundManager, Fixed Rate Logic and a bunch of useful functions... but its not proven in the real-world and would require heaps of testing on different hardware/platforms.

So I can now do my games like this:



But it'll cost you $1,000,000 :P


pinete(Posted 2011) [#12]
:P you're a businessman! 1000$ :P OMG! :)

I would encourage you to sell it, why not? I'm a hobbyist glad to pay for it, to learn, to use it and to enjoy!

I've spent during the last years more than 2,000€ in this kind of languages/tools/apps for development (blitzbasic, blitzmax, leadwerks engine, glbasic, purebasic, DB, DBPro, Monkey, Xors, and a bunch of indie tools, sometimes not cheap...), if you're comfortable just with one of them the whole investment has worth it! :)

That's my point :P


Virtech(Posted 2011) [#13]
I'm all for frameworks and extensions for monkey! Rather sooner than later.


pinete(Posted 2011) [#14]
There are never too many frameworks and it is never too early to have them all!!! ;)


JD0(Posted 2011) [#15]
Well, none have been released yet so... not too soon :)


Playniax(Posted 2011) [#16]
We at Playniax think that Blitz MAX and Monkey are great products and especially Monkey shows great potential. We like to support platforms like these because we believe in it. We use our own framework primarily for producing commercial and maybe non commercial games and on the side we want others to benefit from this because we want Monkey to succeed and grow. And besides that it’s great fun.
Our priority now is to get our framework ported to Monkey and basically the engine mode is done. This engine is practically the same as the Blitz Max version but better and has proven to us to work really well for games like Defenstar. So too soon, depends how you look at it. The more support and products for Monkey, the better as long as the quality is good is what we think.


therevills(Posted 2011) [#17]
Hey Playniax,

Yes Monkey does show great potential and its great that you are producing a framework for it... but have you tested it on every target for Monkey?

Looking at the Blitz forums, selling frameworks really became popular after Jake started selling his GAF... and that was 4 years ago so that was 2 years after BlitzMax was released (Dec 2004). Quite a while for BlitzMax to become stable and for Jake to test/research different ways to do stuff within BlitzMax.

Monkey and BlitzMax has a very similar syntax... but the "compiled" code is very very different, one thing which might work well in BlitzMax might not work well in Monkey (or one of Monkey's targets - example: You should not create new objects at runtime for Android).

I started this thread just to help people think about a few of these things... frameworks are meant to be sort of best practice, yet Monkey is still young so how can any practice been had yet?


pinete(Posted 2011) [#18]
It's a good thread, really, a lot of people has dropped interesting opinions here! :)

Just a small comment regarding 'best practices'; I think there are a lot of important considerations beyond that, what makes interesting to have/buy/play around with different frameworks, from the small to the big ones, well constructed and designed or not... independently of the best practices and good design used to develop it. People will filter all of them and will select the better ones..

As I said in this thread, investment in a framework is not big so I think it worth, even if the framework is not as good as UDK ;P


Playniax(Posted 2011) [#19]
Yes, it's a good thread.

The risk is that people could start to think, 'Aargh, yet another framework?' and I think this is already going on.

But for me it's not too soon, we need it to write our games.


Hima(Posted 2011) [#20]
It probably isn't too early to start/research, but it is too early to spend time or pay money for one specific framework, I think.

Money for framework isn't an issue, really. But the time we will be spending on it is important. I don't want to spend time learning something that might be discontinued in the future. That's one reason I support Monkey at the early stage, because I saw what Blitzmax have proven to be.

So for those who want to making their own framework, I think it's a very good thing to start. But as a customer/user, I'll wait for a while before I decide which framework I'll go with. For now, I'll do it on myown to learn Monkey. I believe strong understanding of the core framework would make it easier for me to understand the framework I'll be invested into in the future. :)


xzess(Posted 2011) [#21]
Im currently working on my own Framework, its getting larger everyday.

This is the current state:

- RessourceManager
- RenderManager
- Actors
- Animations
- Collisions, Bouncing
- Tweening, Fading
- Input Handling especially for Touch Devices (using VirtualStick thx Samah!)
- Movement
- SceneManager (Actors)
- PageManager (GUI)
- Vectors (thx Tibit for Sharing!)
- GUI (currently only buttons, labels and images and sliders)

its very nice to code with

Quick Example of Usage:
OnCreate()
'''''''''''''''''''''''''''''''''''''
'You have to Init these
'''''''''''''''''''''''''''''''''''''
RessourceManager = New xRessourceManager
RenderManager = New xRenderManager
SceneManager = New xSceneManager	
'''''''''''''''''''''''''''''''''''''
'Then You can add your Ressources
'''''''''''''''''''''''''''''''''''''
Local intro:xImage = RessourceManager.AddImage("intro.png",True,2,0,0)
Local soundf:xSound = RessourceManager.AddSound("click.wav")

'Put Images to Render Queue	
RenderManager.GetImages(RessourceManager)

'New Intro Screen
Intro =  new xIntro
Intro.Images = intro
Intro.Frames = 2
Intro.CurrentFrame = 0
	
RenderManager.HideAll()
Intro.PlayIntro()
			
RenderManager.HideAll()
NewGame()

button = new xButton
button.Create(ximg,x,y)
button.visible = true

End

''''''''''''''''''''''''
'Here is your Update
''''''''''''''''''''''''
OnUpdate()
SceneManager.Update()

If button.clicked = true
button.reset()
GameOver()
End

End

''''''''''''''''''''''''
'Here is your Render
''''''''''''''''''''''''
OnRender()
RenderManager.Render()


You can create a xActor of your xImage you loaded in the RessourceManager and then use
MoveEntity(actor:xActor,x:float,y:float)
RotateEntity(actor:xActor,Angle:float)
SmoothMove(Startposition:Vector,Endposition:Vector,SmoothValue:float)

or you can create a xAnimation from your xImage and use
PlayAnimation()
PauseAnimation()
JumpToFrame(Index:int)
Hide()


Playniax(Posted 2011) [#22]
O no! Not another framework! :)


wiebow(Posted 2011) [#23]
Ooohhh =]


xzess(Posted 2011) [#24]
hehe :D

Good preferation to name the child, Playniax


Supertino(Posted 2011) [#25]
I'm making my framework right now...



Just got the basics up at the moment but soon the roof.


Playniax(Posted 2011) [#26]
:)


therevills(Posted 2011) [#27]
Best... Framework... Ever!!! :P


Volker(Posted 2011) [#28]
No. It looks like it's never getting finished.
And I don't believe the framerate. 301145 frames.
Impossible with monkey.


therevills(Posted 2011) [#29]
And I don't believe the framerate. 301145 frames.


SetUpdateRate 301145



xzess(Posted 2011) [#30]
haha you made my day :D


Samah(Posted 2011) [#31]
SetUpdateRate 301145

And this is why you use delta timing... in femtoseconds. ;)


Grey Alien(Posted 2011) [#32]
When I made my Grey Alien Framework BlitzMax had been out for a while and was pretty good but I uncovered quite a lot of things that needed fixing in order to make commercial quality games. It seems that already in 6 months you lot (and Mark) have don't a great job of catching various problems and people have already shipping commercial games.

I'm still wary that Mark may add more functionality that may make parts of peoples' frameworks obsolete (this happened a little bit to mine, but mainly it was just workaround hacks I had in place that weren't needed any more). Testing on all the platforms must also be a real pain, and new platforms will no doubt emerge.

Anyway, I'm going to be taking a good look at Diddy for sure. Thanks TheRevills! Probably end up making my own at some point too as I've learned a lot since making the original GAF.


therevills(Posted 2011) [#33]
I'm still wary that Mark may add more functionality that may make parts of peoples' frameworks obsolete

Hopefully, but in the mean time you got to do what you got to do :P

Testing on all the platforms must also be a real pain

Oh Yes!!! PITA!! (Esp. when Monkey itself was working fine on one target and not another!!!)

making my own

Cool :)

Because Monkey is still young, I really wanted Diddy to be open so that everyone can use it, get more people using Monkey in general and learn from each other.

The main "framework" is a lot of like your screen-based GAF, a few people are using state-based frameworks.


FlameDuck(Posted 2011) [#34]
For me a framework must be proven, like with GAF and Playniax for BlitzMax (both have commercial games out)...
Bit of a Catch-22 that. Like with "We only hire people with work experience".

You try releasing a dodgy game at say, the iOS App Store, you'll get nowhere,
Which is ironic because the hands down best selling (in terms of both units installed as well as revenue generated) game on the Apple App Store, Angry Birds, crashes on level 4-2.

Oh Yes!!! PITA!! (Esp. when Monkey itself was working fine on one target and not another!!!)
Get a spare computer (preferably a Mac) and install a CI server (I'm partial to Hudson). Ideally get some sort of test framework too, (you can technically use TestNG on Android targets, but it's a bit rubbish, as is maintaining tests in native code) or write your own xUnit test framework in Monkey. Writing a simple xUnit framework in Monkey is certainly doable and relatively trivial (took about 4 days to do one in BlitzMAX, I don't imagine Monkey taking any longer). While this setup won't cover all bases it will prevent regression and stupidity bugs, and certainly any cross platform issues (that tests exist for, natch).

Anyway, it's never too early to start on a framework. What else are you going to do? Throw all your code out and start all over again with every game? Of course not, that would be insane and counterproductive. Eventually you'll have a relatively complete framework which you can then A) release as open source, giving back to the community, or B) sell to the community for profit, or C) Keep to yourself as a competitive advantage.


therevills(Posted 2011) [#35]
Anyway, it's never too early to start on a framework

True, but at the time I was more concerned that people would be taken for a ride at a price - remember I started this post 4 months ago only a few weeks after Monkey was released. It was more about people selling frameworks...

With the CI server (continuous integration) it would be great if Mark (BRL) did this himself, I feel over the time I have used Monkey that I have been a beta tester - lol

Also with how Monkey "compiles" you need to call every bit of code to ensure it ends up in the target platform... recently my test application has been Diddy's GUI example, which uses a lot of functionality (generics, interfaces etc) - if Monkey fails to run this I raise a bug ;)


muddy_shoes(Posted 2011) [#36]
With the CI server (continuous integration) it would be great if Mark (BRL) did this himself, I feel over the time I have used Monkey that I have been a beta tester


I'd strongly agree with this. I nearly dropped Monkey when it began to look like the development wasn't using any form of test-suite to assure cross-platform consistency and avoid regressions. Mark generally fixes things pretty quickly when problems are flagged but it's hard not to think "Why the hell isn't there a test for that?" when faced with something like maths operations on properties not working.


Grey Alien(Posted 2011) [#37]
@therevills: Yeah I think your original post's sentiment was correct, but now it's beginning to be a good time to sell frameworks, and put out awesome free ones like yours of course. You know, when I started with BMax, 2 years after launched as you pointed out, it felt kinda beta-ish! But this is because I was demanding a lot from it (not technically, just from a reliability point of view) and using in new ways that needed bug-free performance.

I was going to use monkey at launch but, for various reasons I shan't go into, I couldn't; however now it feels like a good time to get on board plus I'm sure monkey is going to get even better in the coming months. I'm quite excited about learning what it can/can't do and making a framework. I probably shouldn't make a framework, and should use Diddy, it's just that I have this geeky side of me that likes making a framework :-) Also I'm excited by the Box2D ports that have been going on, that's something I've been meaning to look into for a long time.

The only thing is I'm actually working on various projects with other people and so monkey is more like a hobby right now than a full-time thing, which is kinda a shame as I'd love to give it my full attention.


FlameDuck(Posted 2011) [#38]
I'd strongly agree with this. I nearly dropped Monkey when it began to look like the development wasn't using any form of test-suite to assure cross-platform consistency and avoid regressions. Mark generally fixes things pretty quickly when problems are flagged but it's hard not to think "Why the hell isn't there a test for that?" when faced with something like maths operations on properties not working.
I also agree. I can't fathom why people in this day and age don't have things like this automated, but there you have it. But we don't get to dictate how BRL develops software. So the next best thing is to do it ourselves, because if reliability is important to you, or your customers, the only way to ensure some degree of reliability, is bite the bullet yourself.


matty(Posted 2011) [#39]
Just because monkey is cross platform..a framework doesnt necessarily have to be..I'm currently content to develop primArily for Android so I'm not too fused if it doesnt work in html5 for example. But that's just me.


Grey Alien(Posted 2011) [#40]
That's a good point actually, I'm only planning to use Flash and iOS at first.


FlameDuck(Posted 2011) [#41]
Just because monkey is cross platform..a framework doesnt necessarily have to be
While that's certainly true, it does put restraints on the usefulness of the framework. Okay so Monkey probably has too many platforms to make a coherent and still meaningful and useful framework that works on all platforms, but similar platforms (I'm thinking largely iOS and Android, maybe HTML5 if you target tablets) should have at least some love. :o>

For instance the ability to enter input (like for a highscore table) seems peculiarly absent for a games oriented language, aimed chiefly at devices with no keyboards, it seems somewhat an oversight that no type of input dialog (along the lines of the EMCAScript prompt() method or the Android EditText). I mean you could probably integrate something like scoreloop (and probably should if you plan on making lots of games) but maybe for your first couple of games that might seem a little daunting (or overkill perhaps), and also there the point people already raised earlier that you might spend time integrating it, only for BRL to come along and break it the next update.