Page 1 of 1

Looking to start a new project

PostPosted: 05 Jan 2019, 09:57
by xahodo
Hello,

I'm looking to start a new space 4X game. It will be turn based. The starmap will be in full 3D.

These are the libraries I already set my mind on:
  • Graphics: Ogre3D;
  • UI: CEGui;
  • Input: OIS (on top of CEGui);
  • Sound: SoLoud;
  • AI/Modding (for lack of a better word): Squirrel;
  • Networking: ENet.

Now, I'm still having some issues:
  1. Strings: how do I best deal with internationalization (possibly even Arabic, which is a left-to-right language)?
  2. Is input going to be handled properly by OIS (i.e. will I get the appropriate language characters, or do I need to do some processing in order to get those)?

I'm starting with research, so I don't have to do all of this later.
Now, I'd prefer to avoid complicated beasts like boost, I'd like a nice solution I can actually use. Any suggestions?

Re: Looking to start a new project

PostPosted: 05 Jan 2019, 11:47
by Julius
Somewhat OT, but Star Ruler 2 would be a much better project to contribute to in regards to 4X space games: https://github.com/BlindMindStudios/StarRuler2-Source

Re: Looking to start a new project

PostPosted: 05 Jan 2019, 16:10
by xahodo
Enet Seems easy and elegant enough to deal with for networking. By the way: I'm going for a client/server approach (if that wasn't obvious already).

EDIT: Yikes! Seems like there hasn't been any activity on OIS for 5 years and no release for more than 7 years. Does this mean I can better look for something else?

Re: Looking to start a new project

PostPosted: 05 Jan 2019, 23:41
by Danimal
My god, that framework you are proposing is ancient, do yourself a favor and grab "Godot" for the task; you will save yourself hours of just melding everything into working order, hours that you can use into making an actual game.

Re: Looking to start a new project

PostPosted: 06 Jan 2019, 10:43
by Lyberta
Deleted.

Re: Looking to start a new project

PostPosted: 06 Jan 2019, 20:55
by xahodo
Last releases of these libraries:
Ogre3d - December 20th, 2018.
CEGui - April 28th, 2016 (community is active). Usable right on top of Ogre.
wgOIS - December 2nd, 2018
SoLoud - Novermber 19th, 2018
squirrel - March 27th, 2016 (there's recent activity in the community and in git they're active).
enet - unknown (v1.3.13 being last release, 4 months ago last activity in git).
So, they're not so ancient. Squirrel might be the only one considered "ancient", however openttd uses it and that game seems to compile quite happily.

I find learning quite fun. :) So, if I spend months figuring out how I could connect the dots, it doesn't matter. I'm doing it because I than have something constructive and fun to spend my time on. However, I'm not all-knowing.

Regarding Godot... I feel it shoves a particular way of working down my throat; An API should not do that.

Re: Looking to start a new project

PostPosted: 06 Jan 2019, 21:09
by Julius
Anything that is more integrated will probably make this a much more enjoyable experience. The Ogre3D setup (due to having to juggle so many parts) has IMHO resulted in a lot of failed open source games as maintainers lost the drive to update it due to that complexity.

Maybe have a look at: https://www.panda3d.org/ if Godot isn't your thing.

Re: Looking to start a new project

PostPosted: 06 Jan 2019, 22:19
by Andrettin
Danimal {l Wrote}:My god, that framework you are proposing is ancient, do yourself a favor and grab "Godot" for the task; you will save yourself hours of just melding everything into working order, hours that you can use into making an actual game.


Indeed, Godot is a marvelous engine. Learning stuff is fun, but reinventing the wheel and then end up having put a lot of work into something for which there is a better, already-existing solution out there can end in a lot of frustration.

Re: Looking to start a new project

PostPosted: 16 Jan 2019, 10:40
by charlie
xahodo {l Wrote}:I find learning quite fun. :) So, if I spend months figuring out how I could connect the dots, it doesn't matter. I'm doing it because I than have something constructive and fun to spend my time on. However, I'm not all-knowing.

That's a good attitude and I try to get that across to people when they ask "what's the point" [of somebody doing something they think is futile].

Re: Looking to start a new project

PostPosted: 26 Jan 2019, 04:17
by domtron
@xahodo I don't know about strings/internationalization, sorry. But I'd like to point to the Sol2 library as a possible replacement for scripting. It is a LuaJit/C++ bridge and seems to be really nice to work with. I was able to get it working without much trouble because of the really nice documentation and examples. LuaJit is also really fast so your mods won't slow the core C++ code down too much.

Link: https://github.com/ThePhD/sol2

Re: Looking to start a new project

PostPosted: 27 Jan 2019, 14:22
by Wuzzy
I can't say much, but there is one basic thing …
Decide now whether you want to make a game or a game engine.

I've seen so many projects fail because the devs got lost in engine development and just “happened to” “totally forget” that they actually wanted to make a game, and the end result is a weird mess. :D

I don't want to discourage anyone from developing whatever (even engines), but it's better if you know what you actually want before. ;)

Re: Looking to start a new project

PostPosted: 30 Jan 2019, 07:03
by Jastiv
I second, (or third or fourth or fifth) that. I highly recommend that you do games unless you have a special interest in gaming engines. Actually, my game is a fork of a another (more or less complete game, but ultimately I did not enjoy the graphics or game play of the original very much, I'm likeing it a lot more now however and zombies now drop cabbages like Ultima 9.) So, yes, game development.

I suppose the other option is to learn how to become a vampire and live forever so you have time to do both. (No, I'm not really serious.)

Re: Looking to start a new project

PostPosted: 01 Feb 2019, 20:20
by GunChleoc
Regarding Internationalization, use a system that supports plural forms, like gettext. Also, never hard-code word order or serve up incomplete sentences - use placeholders instead. And add comments for the translators to give them some context, especially on short strings.

For Arabic, the tough part isn't reversing the gui, but that the script links up the letters. Have a look at the harfbuzz library.

You could also have a look at the ICU library, which is very useful e.g. for character segmentation in Unicode strings.

You will also need font support for languages that use non-Latin script.

Re: Looking to start a new project

PostPosted: 27 Feb 2019, 16:55
by lm
Most applications I see that use a standardized method for internationalizing text end up using GNU gettext. Even the musl C library added basic support for reading the file format created by gettext utilities so the library could show internationalized error messages. I personally use a BSD licensed version of gettext that was a fork of what's now the BSD Citrus project ( http://citrus.bsdclub.org/ ). Am hoping to add basic support to read files in apk and other zipped formats using zlib and libminizip to it. The musl library is under MIT license, so you could use their code or code from the Citrus project as a replacement for GNU gettext if you want a different license besides GPL.

Not that familiar with the libraries you're using, but I know SDL 2.x has support for UTF-8 input using the SDL_TEXTINPUT event. Would think most newer graphics/GUI libraries should be able to offer similar support for UTF-8 input or you can always look into what SDL 2.x does.

I really haven't seen any solutions I like for dealing with languages that use a different direction such as rendering right to left. I'm thinking of adding some code to guess if rendering should be left to right or right to left based on the LANG or LANGUAGE environment variable settings. gettext is using those already, so it might be useful extension to gettext. I'm using a UTF-8 TrueType font for rendering text. So, one would need to draw the letters on the screen starting at the right instead of the left for languages that needed it. The information as to which letters to draw is supplied by gettext or by utf-8 user input. Users that want to add new language support to a game can volunteer to create a utf-8 file in .po format with the relevant translations.

That's the easiest method I could find for adding some internationalization support to applications. Would be interested to hear if others have easier alternatives that don't require a lot of extraneous libraries.