Jump to content

  • Log In with Google      Sign In   
  • Create Account


Recommended tool/library setup for my project?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
10 replies to this topic

#1 Reactorcore   Members   -  Reputation: 568

Like
0Likes
Like

Posted 19 October 2011 - 11:06 AM

Hi!

I'm in the process of starting a game project to work on, but I feel lost about what tools, languages and libraries would be the most suitable for it.
I'd like to hear your recommendations on what setup of tools/libraries/language should I use based on the feature requirements of this project.
I'm starting from scratch so I'm open to any suggestions.

The project:

The game is supposed to be a sideview 2D game using sprite graphics to represent things in the game.

Gameplay wise, its a sidescrolling platformer with destructible block terrain (think Terraria or 2D minecraft). It needs parallax backgrounds and a simple lighting system.

Above all however, the game would have a very robust modding capabilities, allowing users to modify the game content or add their own.
The game would be primarily targeted for the PC platform and is singleplayer only.

Sponsor:

#2 Serapth   Crossbones+   -  Reputation: 5316

Like
1Likes
Like

Posted 19 October 2011 - 11:11 AM

Hi!

I'm in the process of starting a game project to work on, but I feel lost about what tools, languages and libraries would be the most suitable for it.
I'd like to hear your recommendations on what setup of tools/libraries/language should I use based on the feature requirements of this project.
I'm starting from scratch so I'm open to any suggestions.

The project:

The game is supposed to be a sideview 2D game using sprite graphics to represent things in the game.

Gameplay wise, its a sidescrolling platformer with destructible block terrain (think Terraria or 2D minecraft). It needs parallax backgrounds and a simple lighting system.

Above all however, the game would have a very robust modding capabilities, allowing users to modify the game content or add their own.
The game would be primarily targeted for the PC platform and is singleplayer only.


Personally, this screams to me to use C#/XNA, although your modding capabilities will make supporting the Xbox Live platform an impossibility. In the modding regards, C# is also an exceptionally good fit because the DLR (Dynamic Language Runtime) makes embedding other languages almost laughably simple. You could support (Iron)Python scripting in like, 5 lines of code, without the need to create language bindings like you would with C++. That said, that is purely my opinion, for a complete list of options my Getting Started guide should cover just about everything you need to know, minus the modding aspect.

When it comes to modding, you are most likely looking at using an embedded language, such as the earlier mentioned Python. That said, you are by no means limited to Python, nor C#, as you can (fairly)easily embed Lua, Python, Javascript, etc... in most programming languages. Another option for providing modability is to make your game around a data driven design, but that conversation is well beyond the scope of this conversation.

#3 mhagain   Crossbones+   -  Reputation: 7816

Like
0Likes
Like

Posted 19 October 2011 - 11:53 AM

Just about any technology is going to be able to deliver what you want from this project, so factors such as ease of use, familiarity, availability, ease of deployment, etc are probably more important than technical ones. The above answer is a great one, but I'd just add to it that if you want to have powerful modding capabilities then you need to design your content around this from the outset. This means designing file formats that players can easily override or extend with their own content, using common formats (such as common image formats, zip files for packaging content, etc), defining a directory structure to allow non-destructive modification, decoupling game logic from engine code, etc.

It may be old and creaky, and rather simplistic, but take a look at how Quake mods work. I wouldn't suggest that you ape it's system (there are some serious limitations in it) but it's basic enough to give you a handle on the kind of setup you need to be aiming for.

Technology alone won't give you this, it's all down to design decisions.

It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.


#4 Reactorcore   Members   -  Reputation: 568

Like
0Likes
Like

Posted 19 October 2011 - 12:22 PM

@Serapth: Thanks for the reply!

My main target platform is PC (Mac and Linux are potential port targets), so I'm not bothered about xbox live or consoles.
Modding is a very important part for this project, so its inherently designed for PCs anyway.
So if I get this right, you're saying C#/XNA is still a viable option and can allow me to make the game moddable?

Also, you mentioned data-driven design. This interests me very much and I'd like to hear more about it.

EDIT: Thanks for that link to your guide. This is very helpful!


@mhagain: I'm not familiar with Quake modding, but it sounds very much like what I'm looking for.

The idea is that everything is exposed. Sounds, sprites, code definitions and scripts would all be open for modification. There is no need for encryption or compressing the files that make up the content. Instead, you'd be able to find and modify the games content within the game's directory as folders that contain the files very openly. You could open a text editor and make changes to a script or open an image editor to edit a sprite.

If anyone is familiar with Cortex Command, it is pretty much exactly what I'm aiming for in terms of modding capabilities.

Users are able to make directories within the game's directory and load them as mods into the game. That's what I'm trying to achieve.

#5 jameszhao00   Members   -  Reputation: 271

Like
0Likes
Like

Posted 19 October 2011 - 01:06 PM

Panda3D with python might fit your bill. All the scripts are editable in any text editor, and there's no recompiling needed. Assets need to be run through their import tool.

#6 Reactorcore   Members   -  Reputation: 568

Like
0Likes
Like

Posted 19 October 2011 - 02:08 PM

Panda3D with python might fit your bill. All the scripts are editable in any text editor, and there's no recompiling needed. Assets need to be run through their import tool.


But thats 3D. I need simple 2D graphics, think pixel art.

#7 jameszhao00   Members   -  Reputation: 271

Like
0Likes
Like

Posted 19 October 2011 - 02:46 PM

Sorry forgetting to read as usual.

I tried out Love2D before and liked it. Everything's done in Lua (very easy to pick up and no syntax complexities) and there's no compilation. It supports a variety of image formats. Generally very easy to use.

But in the end, focus on the game. The game engine doesn't really matter that much (especially for 2D).

#8 Serapth   Crossbones+   -  Reputation: 5316

Like
0Likes
Like

Posted 19 October 2011 - 03:07 PM

XNA is still an option then, although it makes porting to Linux and Mac a bit tricky. For 2D projects, there are options in the pipeline, while you could also choose another library like SFML or SDL.net.


As to data driven design, think of it this way. The guts of your program are stored in data ( XML, Database, txt files, streamed from the web, whatever ) and your game code essentially "plays" that data.


That was a pretty piss poor explanation... ;)

All right, lets try with an example, say you were working on a RPG and you had an NPC class. In code it would often look something like this:

class Orc : Npc{
string Name = "Orc";
int Strength = "18/00";
int Intelligence = 8;
};

But if you were data driven, you would probably have it stored something like this:

<NPC>
<Name>Orc</Name>
<Strength>18/00</Strength>
<Intelligence>8</Intelligence>
</NPC>

So instead of your code defining what it an Orc is, it knows what an NPC is and how to read it from data.

Another approach to DD design, that many people don't think of as DD, is scripting. In essence, a script is just data.


The advantage to this approach is it pulls game specific data out of the code. This allows you first of all to more easily re-use code in the future, but more importantly it makes it a hell of a lot easier to update/tweak/playbalance/etc... your game, and makes writing tools much easier. It also allows you to offload gameplay issues to less technical people. Also, of course, it makes modding and extending your game a hell of a lot easier.

#9 Reactorcore   Members   -  Reputation: 568

Like
0Likes
Like

Posted 19 October 2011 - 06:05 PM

XNA is still an option then, although it makes porting to Linux and Mac a bit tricky. For 2D projects, there are options in the pipeline, while you could also choose another library like SFML or SDL.net.


As to data driven design, think of it this way. The guts of your program are stored in data ( XML, Database, txt files, streamed from the web, whatever ) and your game code essentially "plays" that data.


That was a pretty piss poor explanation... ;)

All right, lets try with an example, say you were working on a RPG and you had an NPC class. In code it would often look something like this:

class Orc : Npc{
string Name = "Orc";
int Strength = "18/00";
int Intelligence = 8;
};

But if you were data driven, you would probably have it stored something like this:

<NPC>
<Name>Orc</Name>
<Strength>18/00</Strength>
<Intelligence>8</Intelligence>
</NPC>

So instead of your code defining what it an Orc is, it knows what an NPC is and how to read it from data.

Another approach to DD design, that many people don't think of as DD, is scripting. In essence, a script is just data.


The advantage to this approach is it pulls game specific data out of the code. This allows you first of all to more easily re-use code in the future, but more importantly it makes it a hell of a lot easier to update/tweak/playbalance/etc... your game, and makes writing tools much easier. It also allows you to offload gameplay issues to less technical people. Also, of course, it makes modding and extending your game a hell of a lot easier.


Yes! This is exactly what I need. :lol:
I hope XNA supports this type of structure, correct?

What about Love2D, whats the catch with that?
It looks really impressive, but I get the feeling theres something funny about it... in a sense that it might not be suitable for large games with intensive features (particles, lighting, extreme amount of content, large scenes etc.). And does it support data driven design?

In either case, this data driven structure system is perfect for my game and I'd go as far to say a must have for this project.
Incase XNA and Love2D is against it, I'll probably go with C# as the language of choice and use SDL or SFML as recommended by someone from another forum.

#10 Serapth   Crossbones+   -  Reputation: 5316

Like
0Likes
Like

Posted 19 October 2011 - 06:32 PM


XNA is still an option then, although it makes porting to Linux and Mac a bit tricky. For 2D projects, there are options in the pipeline, while you could also choose another library like SFML or SDL.net.


As to data driven design, think of it this way. The guts of your program are stored in data ( XML, Database, txt files, streamed from the web, whatever ) and your game code essentially "plays" that data.


That was a pretty piss poor explanation... ;)

All right, lets try with an example, say you were working on a RPG and you had an NPC class. In code it would often look something like this:

class Orc : Npc{
string Name = "Orc";
int Strength = "18/00";
int Intelligence = 8;
};

But if you were data driven, you would probably have it stored something like this:

<NPC>
<Name>Orc</Name>
<Strength>18/00</Strength>
<Intelligence>8</Intelligence>
</NPC>

So instead of your code defining what it an Orc is, it knows what an NPC is and how to read it from data.

Another approach to DD design, that many people don't think of as DD, is scripting. In essence, a script is just data.


The advantage to this approach is it pulls game specific data out of the code. This allows you first of all to more easily re-use code in the future, but more importantly it makes it a hell of a lot easier to update/tweak/playbalance/etc... your game, and makes writing tools much easier. It also allows you to offload gameplay issues to less technical people. Also, of course, it makes modding and extending your game a hell of a lot easier.


Yes! This is exactly what I need. :lol:
I hope XNA supports this type of structure, correct?

What about Love2D, whats the catch with that?
It looks really impressive, but I get the feeling theres something funny about it... in a sense that it might not be suitable for large games with intensive features (particles, lighting, extreme amount of content, large scenes etc.). And does it support data driven design?

In either case, this data driven structure system is perfect for my game and I'd go as far to say a must have for this project.
Incase XNA and Love2D is against it, I'll probably go with C# as the language of choice and use SDL or SFML as recommended by someone from another forum.


XNA does and it doesn't. Everything in XNA is designed to come in through the XNA content pipeline, which is a right pain in the ass getting non-standard assets in, although I haven't used XNA since version 2, so it might have improved. If not, you need to write an importer, which is a bit of a pain in the ass.

That said, given that you are interested in portability, XNA probably isn't your best fit, so SDL.net or SFML.net or another 2D c# library may be a better fit.

#11 Reactorcore   Members   -  Reputation: 568

Like
0Likes
Like

Posted 20 October 2011 - 10:02 AM



-snip-

-snip-


XNA does and it doesn't. Everything in XNA is designed to come in through the XNA content pipeline, which is a right pain in the ass getting non-standard assets in, although I haven't used XNA since version 2, so it might have improved. If not, you need to write an importer, which is a bit of a pain in the ass.

That said, given that you are interested in portability, XNA probably isn't your best fit, so SDL.net or SFML.net or another 2D c# library may be a better fit.


Alright, I'll focus on that then.

Thank you very much, you guys have been a great help. Now I know where to go and what to do next. :)




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS