Metroworks release Cross Platform Game Framework
Zasteva writes
"MacInTouch
reports that GameCode,
a cross platform (Windows and MacOS) C++ class framework for
game development, has just been released by
Metrowerks under their MWPL."
Apparently a
Linux version is in progress.
Documentation is online.
How else can game developers get more $$ in their pockets? Make the game appeal to everyone.. not just the windows users....
I think this a great idea... I would definately shell out some $ for some good linux games.. =)
ChiefArcher
From a brief lookover, the MWPL looks fully open-source. It's actually very GPL like.
The sooner more game companies start supporting linux, the better. If this helps to do it, great.
Hopefully the trail being blazed by id will make more people aware that there is a market out here...
Lotek---
is that people will let their egos take control and won't combine efforts. It will be fine if all the different SDK's get finished, and one ends up being the true Linux game SDK and it takes all the nice features (and code?) from the other ones. But I don't think it's in our best interest to have to have five different sets of general games libraries. Sure, most of us could hanle it, but one has only to look at the mindnumbing confusion that besets Windows users when they have to figure out the difference between OpenGL, Glide, and Direct3D.
If its very GPL like why don't they just use the GPL instead of adding to the current license melee?
SDL is a GPLed cross platform development library, developed by Sam Lantinga @ Loki.
http://www.devolution.com/~slouken/SDL/
It runs on Linux, Windows, Solaris, and BeOS, with Mac support in the works.
m.
"Sebastian you're in a mess. They called you King of all the Hipsters, is it true or are you still the Queen?" -- B
Uh,
I did not see any mention of Linux as one of the supported platforms.....
Amen. This license explosion has gotten pretty old. As if GPL is the only alternative to writing your own license for software.
If it's so close to Mozilla (as they put it), why don't the use the Mozilla license?
MetroWerks is already on the thin line for announcing support for "Red Hat Linux" for their next-gen compilers.
"Sebastian you're in a mess. They called you King of all the Hipsters, is it true or are you still the Queen?" -- B
It's just a dog license with the word "dog" crossed out and "cat" written in with a crayon.
Er, sorry, wrong sketch.
It's pretty much the Mozilla license with "1,$s/Mozilla/Metrowerks/g" performed on it.
Not quite GPL.
-- Alastair
Then ya didn't look hard enough. "in the oven", as I recall, is how they described it.
;) license. Any idea which commonly used licenses qualify? Any of them?
They're working on it, but its not ready yet.
About the license:
I skimmed it, and it provides for something I hadn't seen in other, recent licenses: the ability to combine their code into something else entirely, so long as that "something else"'s license is in agreement with the aforementioned
--Mark
Well, obviously this library is not the holy grail. Whoever wants to prgram a game with many fancy features for both Windows and Linux (and MacOS, almost forgot ;) will have to do a lot of architecture specific stuff, or use yet another cross-platform library.
But those who only need a framebuffer and some primitive drawing functions may give it a try; GameCode runs on top of DirectX and whatever that MaxOS thing is called. Hey, it supports buttons and menus! Simple, but effective.
Status of this Memo
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1999). All Rights Reserved.
Abstract
The various types and formats of open source licenses have been causing many griefs among coders. The time lost reading licenses, comparing licenses and commenting on licenses has already caused the normal coder average coding time to drop by 20%. This document proposes a simple, easily implemented protocol for constructing an open source license that conforms with the many open source/free software definitions.
etc etc etc...
A developer release Gamecode shipped with Code Warrior Pro ver 1 in '97 some time. This was developer release 3. I don't know when the first one shipped...
Posted by shaver@netscape.com:
The license there is much closer to the NPL than the MPL, in that it grants relicensing rights to Metrowerks. Using the NPL was obviously not an option, because they don't want Netscape to get special rights to their code. =)
What's wrong with GLUT (besides sound support)?
--- A Jesus Fish eating a Darwin Fish only proves Darwin's point.
Why not? It is all about choice -- for the developers. And I happen to like competition.
The setup procedure only has to install the toolkit which the game uses. Just like MSWin games install DirectX 2/3/4/5...
It is no problem to put everything on one CD. That's what distributors like Suse and RedHat are for. The anoraks can still get the different parts from all over the net and compile the source themselves.
I remember the day when I started programming games, back in 1993. The problem always was lack of quality code around. From my own experience I became very skeptical of suitability of any "game kits" making development easier, more portable etc.
I faced the truth that time: any universal approach, suhch as drivers, cross-platform code etc, is doomed to be too general, and as the result too slow for specific purposes. Why Quake2-3 doesn't use DirectX for anything but direct screen access???
As a game developer you will try to die, but to make your game DIFFERENT, now, tell me, how different you are doing to make game using same routines? Best of the best always had to create their own engines (DOOM,Quake,Unreal etc),
what's the use of any other cross-platform staff?
For me as a game developer only real need is for some very basic, raw operations, such as direct access to screen. Engine itself can be done very portable, so, the only good thing in portable GameSDK is that it provides access to raw things, and that's it! Nothing more is required.
Hence, while I think the guys who are doing this project deserves a cheer or two, their creation will be useful for "educational purposes only", to learn new stuff, but not to create something commercial. It's very IMHO.
You can see my games at my site (with source code).
AtW,
http://www.investigatio.com
alexc
Join Majestic-12 Distributed Search Engine
Not all games are 3D, it may look like that at the moment tho :)
-Yarn - Rio Karma: Excellent
Different games require different engines. The more the merrier. You wouldn't write a role playing game with a Quake engine. Well, I wouldn't any how.
GameCode isn't an engine, it is exactly what you said you needed. It does setup, handles basic drawing, sound and a way to manage resources.
From the website:
What is GameCode
GameCode is an OpenSource cross platform multimedia development library. GameCode
consists of three primary parts: 1) An easy-to-use programmers API which does basic setup.
For example to set up a game or a multimedia application. 2) A number of functions to
display graphics, play sounds, display text, etc. 3) A converter-tool which uses a simple
script-language to convert graphics, sounds and other types of resource files. GameCode
also does compression and archiving.
What is GameCode not
GameCode does not try to do everything. GameCode is not a replacement for DirectX or
GameSprocket.
thanks
beos.
thanks.
I've used SDL, and just wanted to tack on a note here saying it is really really nice. Sam is very very active in supporting it. I haven't gotten the level of support that I got when I had some brief problems (due to a bug in metrox, not SDL!!) with any other chunk of commercial software. Ever.
/dev
"There's no secret. You just press the accelerator to the floor and keep turning left." -- Bill Vukovich
Well, if you take a look, MWPL actually does have one big advantage over GPL: it respects the laws of the country under which a developer may be subject. If you can't comply because of the law with MWPL, you comply as much as you can and state what you can't do. If you can't comply and you're dealing with the GPL you are quite hosed.
Frankly I think GPLv3 should include something like that.
I have been updating my MW compilers today, and /. again...
suddenly, about 12:00 pm PST, MW became
unreachable. Now I know why.
David
The problem with all of this is that you cannot create a derivative license at all! You have to remove all references to Metroworks, but then you have to specifically state that this is different from the Metroworks license. It would take a politician to state that the license is different from the Metroworks license without mentioning them...
As said before, I'm chalking this up to a thinko. I've just emailed them and told them about the same thing.
--The basis of all love is respect
I don't have the time to critique the library in detail. While it has a couple of interesting utility routines (such as a LoadFile() function that will transparently handle compressed or archive files), the design of the library is rather primitive.
They use call-backs and sub-classed C++ object functions to implement their convenience functions. For example, every game frame, you have to call a particular function in the GameApp class so that keystrokes and mouse coordinates can be collected. This is extremely primitive. A better way to do this is to spawn a thread whose sole purpose in life is to collect input, process it, and enqueue it for use by the mainline thread. (As an aside, the current mouse coordinates are stored a globals; can you say, "Not thread-safe?")
So, I'm sorry, but after scanning the API documentation, I'm not very impressed. For people just learning how to write games, it's a marginally reasonable utility package. But it would have little use in a rich, commercial-quality, high-performance gaming environment.
Schwab
Editor, A1-AAA AmeriCaptions
Libraries should be transparently installed when a program depending on them is installed, transparently upgraded as necessary, etc, etc. All it should cost is some download time. ( the only problem would be the hardware-specific stuff that might not be available in the distribution )
Daniel
Hurry up and jump on the individualist bandwagon!
But this isn't an engine (I hope not). only lazy programmers take an engine and make it their own unmodified. "The more the merrier" doesn't really apply so much to high-level device interfaces (which is really what this is). Like DirectX or X or SVGALib. I think those sorts of things should not be too abundant.
While bleeding edge games may need their own bleeding edge code, something like this is great for things like "edugames", educational software for kids that incorporates a lot of game and multimedia aspects. (Stuff like the "Jump Start" series, or "Sesame Street", or "Reader Rabbit").
There's already lots of this s/w for the Windows and Mac markets, but a cross-platform kit like this (when the Linux version becomes available) will, hopefully, encourage the development of such that will also run on Linux.
Availability of software like this for the kids is another factor (in addition to desktop GUIs and office software) in getting Linux accepted on the home desktop (and in elementary schools).
-- Alastair
Incidentally, I wrote up a longish comment on some general ideas I've had concerning improving gaming support under Linux. It might prove an interesting read.
Schwab
Editor, A1-AAA AmeriCaptions
Why shouldn't the current mouse coordinates be stored in a global? As long as they're written atomically, who cares?
-russ
As much as a good idea as this sounds, this throughly depresses me as a game programmer. I am a very old style one, I like everything to be done by hand, no high level libraries and such, just strait c and assembly. But high level libraries are begging to takeover the gaming world.. It has gotten to the point of point and click game programming, its just too easy. The problem with this? a LOT of shitty games with absolutley nothing revolutionary about them. I'll admit that I find Quake2 a lot more bland than Quake I when it first came out. The only decently revolutionary game I've seen of lately is Half Life, and it still doesnt seem like a jump. I guess I'm still just reminisant of the days of DOS VGA game programming, where effiency actually mattered.
You can always set Z to zero and do 2D graphics.
--- A Jesus Fish eating a Darwin Fish only proves Darwin's point.
Because it destroys information you may need. By sticking just current position in a global, you lose the history of previous motions. You also don't know when the mouse arrived in that position; it could have been just a moment ago, it could have been last week. If the mouse is motionless, you may not need to recalculate the frame.
Basically, you want a high-speed event queue. This will let you handle the mouse motion anyway you want (including stuffing it in a global, if that best suits your app).
Schwab
Editor, A1-AAA AmeriCaptions
If you use any kind of hardware acceleration in your game, you're going to have a tough time rolling your own. It's easy to write a game in C/asm for straight VGA or a console system, but try it for SVGA games with 3d acceleration. I'm sorry to say it, but you need libraries to write state-of-the-art games on the PC. There's just no other way to support everybody's hardware setup.
--- A Jesus Fish eating a Darwin Fish only proves Darwin's point.
Perhaps a better word would be dated, not primitive. This is a very functional approach.
Although threads might work great on some platforms, they certainly don't work the same on all platforms, and sometimes doing things the old way is faster and more portable. Under Linux, I'd be happy with threads, because I know that clone() is faster than fork(), for starters. Other platforms, and I wouldn't be so sure...
I could also argue that, say, writing lots of stack code is primitive, and we should make a template class for it, but have fun trying to compile it. I know I've had enough problems with g++ and templates that I've ended up just include -ing actual C++ files instead of shoving linking info into headers or whatever.
pb Reply or e-mail; don't vaguely moderate.
Actually, it's not. It forces the entire code base to be relased if I'm reading it correctly. The MPL allowed parts to be propriatery if they were put in a different file.
Well its now open source. Its your golden chance
to send them improvements, or doctor it as needed
to suit your game.
Make the best of the opportunity
If you don't like "the more the merrier" how about the ones that work will survive the other ones are going to get their throats slit? Evolutionary programming has the definate advantage that many things are tried, not just a few. What works well now will be adopted later.
Glut hasn't been updated since 3.7beta over a year ago as the man behind it works at nVidia instead of SGI now.
The Metrowerks Public License (MWPL) is directly fashioned on the Mozilla license. Metrowerks believes that MWPL is 100% in conformity with the goals and objectives of the OpenSource Movement.
If you feel adjustments need to be made feel free to write directly to me.
MWRon@metrowerks.com
-- METROWERKS Ron Liechty "Software at Work" MWRon@metrowerks.com
>You wouldn't write a role playing game with a Quake engine.
heh, actually...i've been thinking about doing
exactly that. but then, i'm bored.
Darth --
Nil Mortifi, Sine Lucre
normal coder average coding time to drop by 20%?!
Um, no.
Clanlib is an open source, crossplatform game SDK with a very active developer community.
After browsing through the documentation, I could find no evidence of network support at all. I realize that Mac vs Win vs Linux networking are different beasts. But then again, so are the underlying graphics engines (Sprocket, DirectX, OpenGL/X).
If they want this library to succeed, they really need to add a common network layer supporting both TCP and UDP. Most modern games have some multiplayer aspect to them. It'd be a shame to have a nice portable codebase, and then be forced to write three different sets of network code.
- Speed
Get with the times man. Everything in this age is libraries and high level stuff. Thats why we have 300 mhz computers, and didn't settle for 50 mhz. And I'm sorry, but Commander Keen just wont cut it in todays world. If games dont look good, play good, sount good, and smell good, they just wont make it. Thats why libraries like this are usefull. They save the programmer a lot of time to add in the features they want to, and not deal with doing it all by hand.
If they only did this with South park the game. I dont think it could have been any worse. Many games come out like this. I hope that the use of tools such as Game Code allow the programmers to bring games to a level of decency
Sorry, I forgot the tags... :))
According to this story and a story I saw on linuxtoday (too lazy to look up link..), a "Red Hat" port has completed.. whatever that means.
Agreed, looks pretty good. I'm going to read through it more carefuly later today. But it looks like Metroworks did a good job!
Metrowerks announced an IDE of codewarrior for /. doesnt pick it up!!!, typical /.
linux and
late with reports, misses reports
whats the point
Or is it, a "If it aint OPenSource, it aint get the news" attitude?
This is the GUI IDE , can you read or not.
It is theproject manager etc, source editor etc... that sort of thing , if you know what an IDE is.
Get a clue, you too rob.
I believe you are refering to developing cutting edge techniques. A "universal" library will provide whatever is not cutting-edge. Do you create your own front-end buttons and list gadgets? Do you write your own file-access functions? Of course not! I'm to young to know first hand, but some "old fogeys" have told me about their experiences in writing these basic techniques into their old DOS games, because DOS didn't provide an efficient enough solution. That was cutting edge.
Modern games focus on 3D graphics, multi-player communication, more realistic physics, etc. A game library should provide the basic funcitonality to allow game programmers to focus on what they truly need to invent, rather than a "better" wheel. Game libraries could even provide (slow and inefficient) cutting-edge techniques, which could be used as skeleton code while the programmers get other aspects of the program ready (of course that code will _never_ go into the shipping product! ).
That was my point before. It's great if that's how it works. It's not great if, after all that, there are 5 "standard" Linux SDK's. If it boils down to 1 or 2 (maybe 3) that'd be fine.
What's wrong with the current version? Why does it need to be updated? I'm not ridiculing, I'm inquiring.
The current full version 3.6 is fine, 3.7 was nicknamed gameglut and was never finished. The only real difference I know of is full screen video modes. Joystick support etc never actually made it in.
There is probably a lot more changed I only played with it for an afternoon....
Don't forget MGL from scitech.
The official 4.05 is only for DOS/windows, but 4.5 beta is out for OS/2, QNX, and Linux right now.
>
This is what we Mac users have been saying for years. I'm glad someone else finally thinks so now too.
Commander Keen ruled :-P and still does. Though I agree there are many advantages to libraries and it is not because someone used a library that the game sucked... Not to mention broad base graphics/sound/controler support is much easier if you use a library instead of coding your own. There is nothing wrong with a library as long as it is coded well!
There is already an Open Source Game Development ...), networking, ... Work is underway for
Kit for Linux, Windows, DOS, OS/2, BeOS,
Macintosh, Amiga, NextStep, OpenStep, Rhapsody,
Solaris, SGI/IRIX, and FreeBSD. It is called
Crystal Space. Although it is more geared towards
3D game development it is getting more and more
useful for general game development as well. It
contains a 3D engine (supporting software,
OpenGL, Glide, and Direct3D rendering), a
sound engine (with 3D sound using eax, ds3d,
a3d,
an AI module and scripting.
It is Open Source and written in C++ with a
little optional assembly for optimization.
Have a look at http://crystal.linuxgames.com
Greetings,
Project Manager of Crystal Space (http://www.crystalspace3d.org). Support CS at http://tinyurl.com/cb3x4
Hmm... at my university we got Metroworks Codewarrior 3 (and later 4)... which could do pascal as well... they said. I havent seen a buggier program since. Now, I must admit, I dont know much about Metroworks, but I do know that they couldnt build an even less-then-decent programming environment for Pascal. I've heard that they did make pretty good Mac C stuff... Anybody know if the C part of it is any good?
I just hope they can get it right for Linux...
Koos Gadellaa
Student at TUE Eindhoven,
(whatever@gadellaa.demon.nl)
Multiple USB mice? It won't be long before someone wants to do it. Quake used mouse and keyboard simultaneously -- two mice isn't such a huge leap from that.
"The invisible and the non-existent look very much alike." -- Delos B. McKown
Actually all the mac compilers are quite good (C, C++, Pascal, Java) but I know that the first windows versions sucked big time...
You might want to try the last version (4 or soon 5)
BTW, they have cheap student licenses and you get all versions (Mac, Win, and now Linux)
PenguinPlay games SDK (probably the API that compares most closely to DirectX) at http://sunsite.auc.dk/penguinplay/.
GGI (General Graphics Interface, compares to DirectDraw, Direct3D and DirectInput portions of DirectX) at http://www.ggi-project.org/.
GSI (General Sound Interface) at http://wouters.www.cistron.nl/gsi/gsi.ht ml.
All these projects could use some help from any of you out there with a bit of free time.
Okay, sounds good to me.
--The basis of all love is respect
Codewarrior 3 and 4 have been pretty good to me on win 95. Used it for c, c++, java, but not pascal. Granted, it was only for my undergrad CS projects, but compared to MS Visual Studio (which was what was available in the labs), it was very easy to use.