|
|
| Somthing that would be nice in an RPG series |
|
SamuraiCrow
Member #1,733
December 2001
|
quote:jhuuskon wrote: What's wrong with static linking? Methinks writing shared code as a library and building it with a C compiler instead of a scripting language is better because all of the scripted stuff doesn't need to waste all of that processor time and memory with an interpreter. The only problems I see is that it: Requires the code be written following all of the portable standards that Allegro itself is, Isn't that how Allegro itself is built? |
|
Funklord
Member #467
June 2000
|
why do we need to use a scripting language or dynamic linking? ---------------------- Age is inversely proportional to how much drink you've had - Funklord |
|
Funklord
Member #467
June 2000
|
also, if everyone would share their sourcecode, the interface and graphics could be done consistant as well.. ---------------------- Age is inversely proportional to how much drink you've had - Funklord |
|
jhuuskon
Member #302
April 2000
|
Funklord, You are forgetting the fact that if you want the project to have an audience larger than the RPG-fans of allegro.cc you'll need to supply precompiled win32-binaries. Extrapolating this thought, one comes to the conclusion that with content written in some scripting language, the expansion code gets smaller, and user-expandability increases as the lower level code doesn't clog the user's view of the actual content. Besides, the lua interpreter's few kilos of overhead, when compared to the bulky 900 kilobytes of alleg40.dll, feels like no burden at all. If Lua was good enough for LucasArts (they used it in Grim Fandango), it'll damn sure be good enough for us, too. SamuraiCrow, Expanding is easier when you already have a system that runs and you can build on that, (like you have the house built up but it lacks paint and interior) as opposed to your proposition where the construction material is assembled partially, but you still had to build the house yourself. I can tell you from experience, it's really frustrating. Of course this limits your possibilities a bit, but only in a way that assures some level of continuity in the feel and appearance of the 'series'. You don't deserve my sig. |
|
Funklord
Member #467
June 2000
|
jhuuskon: That is exactly what I mean.. you can use/mix any platforms u want using my method ---------------------- Age is inversely proportional to how much drink you've had - Funklord |
|
jhuuskon
Member #302
April 2000
|
I understand your point, but i'm too tired to make an argument. However, i will try. The problem with your approach is that every game will be different. Not a bad thing necessarily, but more likely. Take the X-com series for example. If we disregard TFTD which was a blatant ripoff by 'Prose, all of the games in the series are completely different. Many people will agree with me that the sequels don't feel as good as the first one because it was so good and fresh in ideas. There's not really a series similar to my idea. I'll have to use all the half-life mods as an example. Let's take counter-strike. Everyone knows what CS is like. Then, another mod, Team Fortress. More of deathmatch feel into it, but focuses on teamwork. The Opera is something completely different, but from the first second you notice that it's a half-life mod. By now you should have gotten my point. It comes down to Xcom-like series vs. Half-life mod-like series. It comes down to matters of taste. Good night now, important enlish test tomorrow. You don't deserve my sig. |
|
Peter Hull
Member #1,136
March 2001
|
I have had some more thoughts on this, and put together some code to implement 'property sheets'. A property sheet is just a collection of named attributes of an object. You can store them in a file (Allegro packfile) and also just save the changes. So a collection of sheets could represent all the objects in a game, and saving the changes to them would save the total state of the game. Because it would be inefficient to access properties by name (e.g. (x,y) coordinates of a moving object), there is a facility to copy properties out to a C structure, then copy them back for saving. The implementation does not put any special meaning on any of the properties, so different parts of a game are free to set properties of an object for whatever they see fit, in the same way that a web-site can set cookies in your browser.
|
|
jhuuskon
Member #302
April 2000
|
That sounds good. Very good indeed. It's got the best of both sides. Funklords approach, with user extendability. I like it a lot. You don't deserve my sig. |
|
Peter Hull
Member #1,136
March 2001
|
I've posted my stuff on the web http://www.geocities.com/peterhull90/Dynamic_RPG_Game.html Pete
|
|
ReyBrujo
Moderator
January 2001
|
Hmm... I am not sure if you have realized, but the way you explained things to work is the basic of, in example, LPC, a C-like language to write MUDs (MultiUser D* The scripting engine I am actually testing (MoSaM: Masters of Sword and Magic) uses that knowledge for objects, but it is written in C++ (until now, 2.3 MB shudder) and is divided into five main engines (combat, magic, item, quest and map). However, the development (actually almost a year under DOS, plus another year under Linux) has been almost stopped since I am right now far from my studio grumble If you want more help about what you are trying to get done, try looking for LPC, or in http://genesis.cs.chalmers.se you can download a snapshot of the library being used in Genesis (the Mud I play). You can also download docs about it, to get more ideas. You can also check for www.circlemud.org, which though it is not a language, it is an engine which comes with source and can help you too. RB -- |
|
Peter Hull
Member #1,136
March 2001
|
Yes,I think it is something like a MUD but without the online bit. Pete
|
|
Adam Barclay
Member #1,968
March 2002
|
The ultimate RPG would be one where the world you are in is like a real world - not just a platform to play out a story. The world would have its own economy and politics etc. - the game play would come from modular downloadable quests that can be plugged in to the world - or they could just explore the incredibly detailed world they were in. eg. - you download a quest where the king needs you to go and fight some nasty beast but a)you arent the only adventurer he calls on to do it and b)he will quite happily have you executed if you go around murdering civilians.
--- |
|
23yrold3yrold
Member #1,134
March 2001
|
Quote: It's still a neat idea to have these linked episodes that everyone can contribute to, but all the enthuasim seems to have gone! Is anyone still interesting in giving it a go? I'd be interested in participating, but I lack the knowhow to get it off the ground. If someone is willing to do all the work to make a setup where people can interact and contribute with a minimum of effort, then it could happen, but who's gonna do all the work? Cool; quotes work 8) -- |
|
ReyBrujo
Moderator
January 2001
|
Yes, I guess SourceForge seems a nice place to store the project. I would also help, just notify everyone when the setup has been done. If you want to be a leader, you must act as one wink RB -- |
|
Specter Phoenix
Member #1,425
July 2001
|
Yep that definitely makes for a great game idea:D. Unfortunately I've been busy working my job now so I may not be able to ever get in on a game idea that involves multiple Allegro programmers:(. Just noticed that I have to reset all my information. My sig and everything:(. Also how do I change from vgdes2000 to another public nickname without using my real name(sorry to be off-topic with this question)? I've got more questions so I'll put them into the Allegro.cc forums.
|
|
23yrold3yrold
Member #1,134
March 2001
|
Go to the top of the screen, click My Profile->General. Leave the "First Name" spot blank and put your nickname in the "Last Name" space. -- |
|
Peter Hull
Member #1,136
March 2001
|
If it's not just going to be me... I can try and set up a sourceforge page - but how is everyone on using CVS? I think you need this to use sourceforge. Any ideas for a project name, though? Pete [edit: getting to grips with that mockup]
|
|
ReyBrujo
Moderator
January 2001
|
Hey! (warning, looooong and innecessary post) I remember something about a project... Aeon I think, which started here as well, and tried to become a library independant full RPG engine, but it has not had important enhancements since that day (try looking Aeon in Sourceforge). If you don't start working right now, it will become just another dream. So, until now we have... SCRIPTING Well, as far as I know, ALL commercial games produced are not compiled, but scripted. And when a new release is done, they just modify some of the engine abilities. SeeR can be discarded, since it is not completely platform independant. RUBY might not be worth, since it is mostly used to write standalone scripts. LUA is an option. The problem is actually building the engine. It is tedious, indeed. However, I think BISON can help us here if we don't want to lose too much time in writing it. Remember that this is a project to learn (and who knows? if it becomes a good one we can get some $$$ A scripting engine is slow? Yes, they are slower, but remember: it is much slower the input/output routine. A scripting engine can be debugged much easier, and will allow players just to download the compiled script rather than having to download the whole executable. I go for the scripting engine. Take a sheet of paper, and write down functions and variables you think it might need to support. LANGUAGE AND PLATFORM Hmm... C or C++? I myself feel much more confortable using C++, but it can be discussed. And remember, C++ is a superset of C, so after learning C it is very easy to understand C++ (at least the basic to work with -- I myself started with C++, which made the learning a bit slower, but finally worked MODULARITY We must divide the engine into several sections: sfx, gfx, maps, combat, user input, character handling, item, quest, etc. That will allow us to start with the easy sections (gfx: defining sprite sizes; input: those with joystick can start writing a wrapper for it; etc). Well, those were some thoughts I had about this project. When I started mine, I first wrote everything I wanted the engine to do, and then wrote some scripts I wished it to understand. Here is the newest I compiled (except for the free() function, because I haven't finished the quest engine). (EDITED: deleted the code, since it messed up the board shrug). RB -- |
|
Nathan Letwory
Member #671
October 2000
|
On flipcode is a good tutorial on making scripting languages... __________________________ |
|
Thav
Member #608
September 2000
|
I've used the tutorial on flipcode to write a very simple scripting language for a game engine of mine (the engine is almost finished, but i've had no graphics to show it off with). I know my scripting engine is not the most efficient thing in the world, but it makes development INCREDIBLY easy. After writing that, i couldn't imagine hard-coding all of the objects. I would definitely use a scripting language of some sort in this project, as it gives the module developers greater flexibility with what they can create. Here's a good quote i found in my research: It seems he had created a puzzle script, where the user hits a switch on the wall causing the water level in the room to rise, carrying the player along to the top of the room. It seemed simple, except we had just recently decided not to support moving water levels in the game. no one, including those who had worked on the engine and the language, could figure out how he did it. This sounds like an interesting project. My advice to those who undertake it: design it out at length. Figgure out how everything will work and work together before you code. I learned at my last job that design is crucial. Just my $.02 |
|
ReyBrujo
Moderator
January 2001
|
Oh, yeah, it is rather easy to write a scripting engine, but if you want an optimized one, you must develop it with a lot of beta testing. That is why I prefer BISON or YACC. And yes, design is important. But there must be a brainstorm and someone who actually merges all those ideas. And until now, we only have the storm done. RB -- |
|
Peter Hull
Member #1,136
March 2001
|
I am still really interested in doing something on this. I have asked SourceForge for a new project. Once it's set up I hope you will join me and we can produce a plan, stories, etc. In the meantime I recommend you get an SF username if you haven't already. Cheers, ======
|
|
Korval
Member #1,538
September 2001
|
Quote: Well, as far as I know, ALL commercial games produced are not compiled, but scripted. That's not true at all. There are plenty of commercial games written purely in C/C++. Don't let the Unreal's and so forth make you think that everybody is just writing scripting engines to games. Some people are, but not everybody. Quote: A scripting engine can be debugged much easier, and will allow players just to download the compiled script rather than having to download the whole executable. How is it easier to debug a scripting engine? In order to guarentee that some horrible convergance of scripts doesn't cause a crash or other unexpected events, you would literally have to test out every possible script. In fact, I think scripts make debugging harder. The first step in debugging is localization of the error. If you have scripts, then you have to wonder if the script code is causing the problem or if the bug is in the engine. Also, players will have to download game data, not just new scripts. Quote: We must divide the engine into several sections: sfx, gfx, maps, combat, user input, character handling, item, quest, etc. That will allow us to start with the easy sections (gfx: defining sprite sizes; input: those with joystick can start writing a wrapper for it; etc). You need to spend more time modularizing your engine. Sound effects, for instance, is in two parts: sound effects and music. Graphics can easily be broken into tilemaps, sprites, fonts, and your GUI. |
|
Johan Henriksson
Member #11
April 2000
|
I've been working on RPGs for about a year now (and soon need a break First, a scripting language makes it easier to debug. Since there usually is nothing to debug! Scripts are usually dead simple and you either: My current engine doesn't use it but my next will use a homemade language called SwampScript (will write a lib for it later). It uses queues and triggers to work on a frame-by-frame basis. This is needed if you want scripts that are as flexible as FF5+ and don't feel like coding to death. If you want specs for the lang, just tell me. About DJGPP DXE: The format sucks. Don't use it. If you go with modules this way (which I don't recomend), use .so's and .dll's instead. Also avoid messing with multiple .exe's. All kinds of binary messing will make porting and usage harder. About NPC-NPC interaction; only one game has been insane enough to do this, Outcast, and it's doing some pretty simple stuff. If you want something serious, bring in the AI professor from the local University If you're looking for a game serie that refers back, check out Phantasy Star 1-4. Really great stuff. Edit: s/th/ll |
|
ReyBrujo
Moderator
January 2001
|
Quote: Don't let the Unreal's and so forth make you think that everybody is just writing scripting engines to games. Unreal? Hmm... I have never played it. The last game I bought was Heroes of Might and Magic III. So, I am not talking "from" Unreal, I am talking before it. Starcraft, Warcraft, Heroes... they all use scripting engine. Even ID has its own standard engine (that is why all ID games look so similar laugh). A game completely written in C++? Hmm... Maybe you disunderstood me... if you write starcraft without a scripting engine, the executable would be 12MB. And I am talking about: 1) AI, 2) Maps, 3) Dialogs, etc. Quote: How is it easier to debug a scripting engine? The problem is that you are actually thinking about writing your own scripting engine from scratch. And if it is your first engine, of course it would have hidden bugs. But if you use bison, and you actually know what to do (I, in example, had to write a scripting engine for a virus simulator essay, so I am not a novice there). And about Johan NPC-NPC interaction: Yes, it is TERRIBLE to write that kind of stuff. Also, they would do much sense with a strategic game rather than a role playing one (when to attack a country, when to develop the walls, etc). You all know my C++ devotion. At first, I wanted my engine to handle each tile as a different object. So, a 320x240 screen with 16x16 tiles does a 20x15 tile screen. So, my engine handled at least 20*15=300 objects at the same time (AT LEAST, since NPC, items, houses, etc were different objects as well). In example, suppose a field with only grass. I have on screen 300 grass tiles (which are in fact two or three different, but they are all repeated). However, I created 300 GRASS object, and set each of them into their own position. This way, I was able to handle multiple actions independantly of the grass tile. If the character lighted a torch, a fire broke up and so each object which was fired modified its own tile to burnt grass. Each object was able to hold a hidden treasure, which had to be scavenged in order to get it. A wall, in example, could be destroyed using magic, each magic ball hitting the wall deleting the target BRICK object. oops Gone from the idea. Back: writing classes for a C++ engine allows you to design the different interfaces of all classes, make them "work in paper", and then start writing each class, knowing that, if you stick to the interface, you are sure it will work. As a suggestion, I write here a simple CHARACTER class (stripped from my own version), from which both players and real NPC inherit. (Edited: I give up, the board messes the code!) -- |
|
|
|