Action RPG Framework

by Forum_account
Action RPG Framework
A framework for developing action RPGs.
ID:870083
 
BYOND is not a general purpose programming language, it's specifically for making games. This makes it possible for BYOND to make game development easier than C++ and Java could because those languages are general purpose - they don't provide you with maps, networking, movement, and procs like view() or obounds(). When it comes to game development, BYOND *is* general purpose. You can use it to make action games, RPGs, platformers, board games, card games, racing games, and realtime strategy games. This is a good thing but it also limits how easy BYOND can make game development.

It's not because BYOND is lacking. Look through the feature request forum - there are lots of good features being requested that'd improve BYOND's capabilities or provide conveniences to developers, but very few of the features would really make it easy to create a game. Even if all of those features were added you're still going to have to write 2,000 lines of code to make a game. That's just the cost of being flexible enough to produce such a variety of games.

If you want to have a development environment that truly easy to use, BYOND can't take you 100% of the way there. It's a solid foundation but it only takes you 70-80% of the way there. As you might have guessed already, frameworks are the way to bridge that remaining 20-30%. By making a framework for a specific type of game you can provide features that BYOND would never provide itself. For example, to make it easy to create an action RPG with BYOND you'd need to provide people with a health var and on-screen health meters but these aren't things BYOND would provide by default.

Here are some benefits to having and using frameworks:

1. Frameworks are appealing to outside users and current users. Showing non-users an example of a BYOND game lets them see what BYOND is capable of but compared to other tools, that'll never be that impressive. BYOND will attract people by being easy to use and frameworks provide a way to show non-BYOND users how easy it is to make a game. The current BYOND community has also responded positively to frameworks so there's no risk of alienating current users (except Falacy).

2. Frameworks let you accomplish more with less time, effort, and experience. They're not just something that inexperienced users can use because they can't make things from scratch. They'd also let more advanced users create games faster. Also, the more easily you can do things the more a tutorial can cover.

3. Frameworks provide topics for tutorials. ZBT is considered to be a good tutorial but it takes 6,500 words to cover some very basic things and, in the end, you've only got a verb panel and a couple of verbs. If you write a tutorial about how to use a framework it too will cover more in less time. The reader will get a more rewarding result in less time. If BYOND game development is supposed to be easy, tutorials that cover simple topics shouldn't be giant walls of text that only show you how to make a verb panel with two verbs.

4. Frameworks make it easier to develop resources. It's hard for people to write tutorials that cover the basics of how to use DM because it's so open ended. Writing a tutorial to show how to create a board game using a Board Game Framework would be pretty easy. It's also easier to make demos that can be integrated with other projects. If you make a demo in DM now, you typically have to build a game around the demo to make it work. If you write a demo that's made for a framework, it'll be able to integrate with any game that uses the same framework more easily.

5. Similarly, they also make it easier to help users. If someone posts a question in the Developer Help forum you might need a lot of background information about their project. If you know what framework they're using it can greatly simplify things. By being familiar with the framework you know a lot more about their project than you would otherwise. It also elevates the level of questions that people can ask. Currently if someone asked "how can I make a building in my RTS that shoots at enemies?" that's an awfully complicated question that nobody could easily answer now. If the developer was using the RTS framework the answer might just be a few lines of code.

6. Frameworks are something the community can work on. The BYOND staff has a lot on their plate and there's really no way for us to help. Frameworks would be projects that any user can contribute to.

7. Frameworks can drive BYOND feature requests. It's one thing to say "I'd like for BYOND to have this feature because I'd use it" and it's another thing to say "I'd like for BYOND to have this feature because it'd let us add this other feature to a framework that 100 existing projects are already using".

8. The presence of frameworks as part of the BYOND package itself gives BYOND a way to guide game developers. People who have no game development experience would have a way to get started and wouldn't be sucked into this culture where you make a base icon, then a title screen, then post on the Classified Ads forum asking for a turfer, GFXer, mapper, and coder to be part of your team. Also, with a way to literally make a playable game of good quality in under five minutes you can create actual standards for BYOND games.

The only catch is that the frameworks can't just be another resource that people may or may not ever find - they'd have to be treated as part of BYOND. It'd take some work but it'd make a huge difference. Here's all it'd take:

1. A menu that's shown when creating a new environment in Dream Maker that asks the user what type of game they'd like to make. Picking a genre creates a project and automatically includes the appropriate framework. There may also be options to include a sample game that would add a few files to the new project - this would let people compile and run a game to see what the framework provides. There'd be an option to create a blank environment if you don't want to use any framework.

2. Reference pages for vars and procs defined by frameworks. To the developer there shouldn't be any difference between using a proc that's part of a framework and using a proc that's part of DM.

3. Dream Maker might need a way to download content from the hub. Dream Maker could come with some version of the framework when you download and install it, but since BYOND and the frameworks may be updated independently, it would be nice to have Dream Maker able to download the latest version.

4. The staff might have to come up with the list of genres and spend some time reviewing the frameworks before including them in BYOND. If the community is developing these resources, the staff could get a lot of help from the community with this work.

There are many things you could change about BYOND that'd have a positive effect, but simply having a positive effect isn't always enough. Some things would only have a minor effect, some might take a long time to develop, and most wouldn't do much to make it easier to create games with BYOND. The Flash client for example may have a high impact but it also has a long development time and doesn't make it easier to develop games. Other features that would increase BYOND's capabilities (like adding a 3D display mode) are similar - large impact, long development time, no easier to develop games. The changes described here would have a huge impact, small development cost (by the staff), and would simplify game development more than any other feature I can think of.

Thoughts?
Not really a thought that adds to this thread, but I really enjoyed reading through this article.
Thanks for writing it! (:
My thoughts is that we need a Framework section in the Resources. Simply tagging a library with "framework" may suffice, but to new users it wont. They likely won't even know what a "framework" is. Having a start page in Dream Maker that shows some popular resources and such would be great.
In response to Albro1
Albro1 wrote:
My thoughts is that we need a Framework section in the Resources. Simply tagging a library with "framework" may suffice, but to new users it wont. They likely won't even know what a "framework" is. Having a start page in Dream Maker that shows some popular resources and such would be great.

I'd even put the frameworks on a separate level than other popular resources. Currently Your First World is the most popular resource but there's no reason to show that to everyone who opens Dream Maker - resources like that are only applicable to people who are getting started. Frameworks would be useful to all users. It'd be good to also show lists of new or popular resources in Dream Maker too, but frameworks would be a separate thing.

If you could start up Dream Maker, make a new project, select "Turn-based RPG", and have a blank project that includes your framework, people wouldn't even have to know what a framework is! If you could create reference pages so the procs defined by your library people wouldn't know there was a distinction between BYOND, DM, and the framework.

Oasiscircle wrote:
Not really a thought that adds to this thread, but I really enjoyed reading through this article.
Thanks for writing it! (:

Thanks, I'm glad you liked it! Unfortunately the staff doesn't seem to share that appreciation and hid this post from the front page. If nothing else, that means they saw it and will hopefully consider the idea! =)
I'm in agreement. By having a basis it creates more time and energy for new content and original thoughts,plots,etc. A very awesome idea and I'm glad you've been creating the rpg/ action adventure framework!
In response to Dariuc
Just going to pull a Forum_account here and advertise my new Turn-Based System Framework. ;)
In response to Albro1
Your link is broken, it currently links to: http://www.byond.com/forum/%20http://www.byond.com/ developer/Albro1/TBSFrameLib

You need to take out the space after <a href = "
Woops, that would be because I copied and pasted it via my phone.
I'd use these frameworks, but I'm a lazy, crappy programmer and if I can't get something working the way I want it to within 2 or 3 minutes I just give up and find an easier way.

I've tried to use several of your libraries, but when I add them to my project, something always goes wrong. One time, my graphics got smaller. Another time my map disappeared completely. Sometimes the game doesn't even compile.
In response to EmpirezTeam
EmpirezTeam wrote:
I'd use these frameworks, but I'm a lazy, crappy programmer and if I can't get something working the way I want it to within 2 or 3 minutes I just give up and find an easier way.

The "easier way" would be to use the framework =)

That's why the integration, documentation, and community support would be necessary. To make a game you have to learn something, whether it's learning how to implement a game from scratch in Java, how to make a game using BYOND, or how to make a game using a framework. There's no way to avoid that entirely but currently frameworks are limited because they don't have the same capabilities and support.

I've tried to use several of your libraries, but when I add them to my project, something always goes wrong. One time, my graphics got smaller. Another time my map disappeared completely. Sometimes the game doesn't even compile.

Then you should post on the library's forum. Without any user feedback it's hard to improve resources.
In response to Albro1
Albro1 wrote:
Just going to pull a Forum_account here and advertise my new Turn-Based System Framework. ;)

There here's my Board Game Framework which is based on libraries (such as Phase) which I've relied on in my own projects. Nyah ;)
When there's so many ways to do things wrong with BYOND (by designing simple systems that still drain the CPU), it's nice when a framework comes along to show what can be achieved with BYOND. There's limits to what BYOND can do (compared to many other actual programming languages), but successful frameworks help by showing the upper limit and showing off the cool things just below it.
ACWraith wrote:
Albro1 wrote:
Just going to pull a Forum_account here and advertise my new Turn-Based System Framework. ;)

There here's my Board Game Framework which is based on libraries (such as Phase) which I've relied on in my own projects. Nyah ;)

If we wanted to make 6-8 frameworks we're almost halfway there. It wouldn't take much to make a platformer framework out of the Sidescroller library. It probably wouldn't take much to make separate board game and card game frameworks using the resources you've created too.

Kaiochao wrote:
When there's so many ways to do things wrong with BYOND (by designing simple systems that still drain the CPU), it's nice when a framework comes along to show what can be achieved with BYOND. There's limits to what BYOND can do (compared to many other actual programming languages), but successful frameworks help by showing the upper limit and showing off the cool things just below it.

Frameworks can also protect you from hitting these limits. For example, it's perfectly reasonable for someone to make a 500x500 map, write a simple AI loop for enemies, place a few thousand enemies on the map, and create a game that maxes out your CPU and can't be played. The Action RPG Framework deactivates mobs that don't have players near them so it'd be able to handle that. It also uses a single loop to drive most events. If people had to set up their own loops it's pretty easy to do that in a way that's not too effective in BYOND.

As long as people do reasonable things with the framework it'll probably run just fine (even with multiple players). The problem is that it's hard for people to know how to do things "properly" within the parameters of the framework. With better documentation and community support it'd be a lot easier for people to use them and would be less likely to end up working against the resources.
Make my life easy and make a sidescroller framework. xD
In response to Akto
Akto wrote:
Make my life easy and make a sidescroller framework. xD

I'm not sure how much a sidescroller framework can provide beyond what the sidescroller library already provides. Features like health, special abilities/attacks, items, and money are all things that a game may or may not have. If you want to make a game like the original Super Mario Bros. there's not too much more you need, but if you want to make a game like Metroid there is some more it could provide.

I'd definitely add support for projectiles and moving platforms. I could also add support for some puzzle elements that might be common across games (doors, switches, keys, etc.) and some basic enemy AI (at least a proc you can override to create AI). Are there any features in particular you'd want it to have?
Well right now I am using your SS lib... works great. Only issue is I am having trouble with adding in AI.
I actually really like the idea of Frameworks. Including them in Byond's Dream Maker seems kind of weird, but that would only be because it's different and I'm used to the same ol' Dream Maker xD.

However, I think this would be a great idea since it'd cater to what Byond mostly seems to aim at which is new developers and I know I'd have been very happy to use this years ago.
In response to Akto
Akto wrote:
Well right now I am using your SS lib... works great. Only issue is I am having trouble with adding in AI.

What kind of AI are you trying to make? What kind of problems are you running into? I'd like to add better AI support so any feedback you can provide will help out. You can either post here or on the Sidescroller library's forum.

Truseeker wrote:
However, I think this would be a great idea since it'd cater to what Byond mostly seems to aim at which is new developers and I know I'd have been very happy to use this years ago.

Lots of new programmers have better results when they're given something they can play with than trying to create everything from scratch. This is often the reason why people are using BYOND in the first place. It's also the reason why there are a lot of rips - while it's not a good idea to take the complete source code to a poorly written game and use it to create your own game, the idea of building your game using an existing foundation is a good idea that inexperienced programmers are comfortable with.

The frameworks aren't just a way to cater to inexperienced game developers. While they'd certainly help them out, they'll also help more advanced users too. The frameworks implement features that you don't want to bother with even as a more experienced user. The Action RPG Framework has about 7000 lines of code (including the libraries it uses) - whether you're a newbie or not, it's nice to get the benefits from that code without having to write it.
You probably should have posted this in the feature request part of the forum as opposed to this part so we could sound off their and the BYOND staff could see it and make a decision on it based on the over all good comments we have seen here thus far! I suggest asking to have this topic moves their or making a new topic to see what becomes of it.
In response to Moussiffer
Moussiffer wrote:
You probably should have posted this in the feature request part of the forum as opposed to this part so we could sound off their and the BYOND staff could see it and make a decision on it based on the over all good comments we have seen here thus far! I suggest asking to have this topic moves their or making a new topic to see what becomes of it.

I've got a 60 day forum ban so I had to post it somewhere else. This hub entry's forum made the most sense. I'm pretty sure the staff has seen this post here and, if not, this topic has been brought up before and should already be on their minds.

The features required would be easy to add but I have a feeling the staff won't see the benefit to all of this. First, they don't use DM much at all and aren't likely to see how BYOND doesn't simplify game development as much as it could. Second, it'll be hard for them to admit that community-developed frameworks could be as beneficial to BYOND as adding features to BYOND itself.
Page: 1 2 3