News:

SMF - Just Installed!

Main Menu

Knights Development Revival

Started by duke, July 15, 2018, 10:12:11 PM

Previous topic - Next topic

Which way would you prefer the most?

Stick to the original C++ code base and just bring it up to date
2 (66.7%)
Port it to MonoGame using C#, but ensure backwards compatibility
1 (33.3%)
Port it to Unity using C#, but ensure backwards compatibility
0 (0%)
Something else (Please post your idea in mind)
0 (0%)

Total Members Voted: 3

duke

Hey Guys!

Haven't been around here in quite some years. Who knows, maybe someone will remember me from back in the days. (Or from the Credits in the game.)
I'm amazed there is still a tiny community for the game!

The game itself doesn't seem to have gotten any development in the recent years either, Stephen probably has other things keeping him busy in life, which I totally understand!

I'm a software developer for a living myself and I still remember lovely game sessions with the original Amiga Knights and Stephen's remake. So I'd like to revive the project to some degree and do some work on it, probably starting with updating all the libraries being used with it.

But another idea I have in mind would be to port over the existing C++ source code to either MonoGame with C# or Unity (Although I feel Unity is a bit overkill for this.)
This would ensure cross platform compatibility and also updated libraries and even the possibility to eventually have a Android/iOS version of the game.
Of course I would stick close to the original source to have backwards compatibility in mind for existing mods.

Well then, let me know of how you feel about this idea and if you would like to contribute in any way! I'll most likely create a repository on GitHub for the project, since it features most of the project management stuff needed.

- duke

ImpassIve

Welcome back, duke!

While your idea of porting the game to C# language sounds interesting, I have some concerns about it.
Despite of similarity between C++ and C#, wouldn't that basically mean rewriting the game from the scratch (except the general architecture), because of the differences in used libraries and API?
IMHO that sounds like a pretty challenging task and that would require quite a lot of testing because of a probability to introduce more bugs...

Anyway, I'd like to provide some help, since I know both C++ and C# and I like this game, but, I'm afraid, this help would be of little use, since I have no experience neither in game development (except of writing a bunch of Flash games decade ago) nor in maintaining open source projects.




duke

Quote from: ImpassIve_rus on July 16, 2018, 12:44:44 PM
Welcome back, duke!
Thanks!

Quote from: ImpassIve_rus on July 16, 2018, 12:44:44 PM
While your idea of porting the game to C# language sounds interesting, I have some concerns about it.
Despite of similarity between C++ and C#, wouldn't that basically mean rewriting the game from the scratch (except the general architecture), because of the differences in used libraries and API?
IMHO that sounds like a pretty challenging task and that would require quite a lot of testing because of a probability to introduce more bugs...
Well, of course it is tricky and a challenging task. I'd also imagine that even just bringing all the libraries used in the original C++ version up to date will introduce some bugs, since often things change and don't work quite as expected anymore. Stephen basically wrote his own engine called "Coercri", which builds upon SDL, uses ENet for Network stuff (UDP) and guichan for the GUI. From a very quick research I saw that those aren't really greatly maintained in terms of updates.
The great thing with using MonoGame is how it is actively being developed and used by the community, while also having a lot of documentation and useable libraries available.
The existing modding capabilities can be ported over with utilizing NLua as an example.

Quote from: ImpassIve_rus on July 16, 2018, 12:44:44 PM
Anyway, I'd like to provide some help, since I know both C++ and C# and I like this game, but, I'm afraid, this help would be of little use, since I have no experience neither in game development (except of writing a bunch of Flash games decade ago) nor in maintaining open source projects.
No worries! I'm mainly working in web development technologies myself, with some pastime activities in game development. The most important part is to have a clear plan laid out, before really diving into the whole coding scenario. Once there is more feedback about this here, I'll probably start working on writing up a proper "battle plan" on how to tackle the revival. :]

Stephen

Welcome back duke :)

I like the idea of having a Knights development revival (especially if it's not me doing the work, lol). In fact I was kind of secretly hoping that someone would come along and suggest this :) as I haven't had any time to work on Knights myself for a long time.

The idea of rewriting in C# is interesting. I agree with Impassive though, it would be a huge amount of work. The core game logic (I think it's called "KnightsEngine" in the code) would probably port across quite easily, but all the UI code is going to need a complete rewrite because you won't have Guichan available, you'll need to rewrite it to use something else instead. (Unless you want to port Guichan itself, but that won't be easy either.) I think it could take several years if you go down this route.

That being said, there would clearly be advantages to doing this, like having a more up to date codebase, and possibly being able to port to other platforms as you suggest. Just make sure you know what you are getting into :)

Improving the C++ version might be an easier route. Do you have any specific changes you would like to make, or is it just that you want to bring the codebase up to date to use more modern libraries etc?

ImpassIve

#4
Speaking of specific changes, I have some propositions:
1) That would be nice to support multiple languages (even if there is not so much text to read in the game and most players know English anyway)
2) Some chat-related improvements would be appreciated too. As far as I remember, it doesn't support Unicode set of characters now (e.g. cyrillic symbols or kanji) and it doesn't allow to copy anything from the ingame chat, hence sharing links through it is a pain :)
3) Of course, mods. Looks like it is necessary to review some basic Knights classes if one wants to grant more freedom in modding. For example, to be able to:
- Use some spells effects (such as invisibility) on non-knight actors
- Control monster's behaviour through lua scripts
- Dynamically change sprites, used by an actor




duke

Quote from: Stephen on July 22, 2018, 05:52:48 PM
Welcome back duke :)

I like the idea of having a Knights development revival (especially if it's not me doing the work, lol). In fact I was kind of secretly hoping that someone would come along and suggest this :) as I haven't had any time to work on Knights myself for a long time.

The idea of rewriting in C# is interesting. I agree with Impassive though, it would be a huge amount of work. The core game logic (I think it's called "KnightsEngine" in the code) would probably port across quite easily, but all the UI code is going to need a complete rewrite because you won't have Guichan available, you'll need to rewrite it to use something else instead. (Unless you want to port Guichan itself, but that won't be easy either.) I think it could take several years if you go down this route.

That being said, there would clearly be advantages to doing this, like having a more up to date codebase, and possibly being able to port to other platforms as you suggest. Just make sure you know what you are getting into :)

Improving the C++ version might be an easier route. Do you have any specific changes you would like to make, or is it just that you want to bring the codebase up to date to use more modern libraries etc?

Uh, rewriting the UI shouldn't really be that much work, I'd imagine. MonoGame has a bunch of great libraries for that.
Instead of using MonoGame we could also go the Unity Engine route, since it also comes with all the needed functionality on board. There are quite a lot of 2D games being developed with Unity, although it primarily focusing on 3D stuff.

Then there would also be the Godot Engine, one engine that gained heavy popularity in the recent years after going open source.

In terms of my plans with the development revival for now I'd focus on bringing the codebase up to date, maybe making a few modifications and enhancements here and there. I'll create an Organization on GitHub in a bit and everyone who's interested in contributing is welcome to join. Feel free to post your GitHub Username or the E-Mail  address you use for GitHub here and I'll send you an invitation to the Organization. (Or send me a private message with your E-Mail address, if you rather prefer not to publicly post it.)

Over on the GitHub repository I will create we can then use the Wiki and Issue Tracker to plan more detailed!
The Organization with a still empty repository is over at https://github.com/KnightsGameRevived

ImpassIve

Quote from: duke on August 08, 2018, 01:11:05 PM
Feel free to post your GitHub Username or the E-Mail  address you use for GitHub here and I'll send you an invitation to the Organization.

impassive-nik




Ushiri

Hi there! I just  wanted to say that I?m looking forward to try new revived version of knights and hope it will be done even thought it hasnt been posted in this topic since 120 days back  :)   I played several games here over the years and played it offline with friends aswell. Just logged on to write this post sou you probably know that even though people dont do the same I think more people read it than actually post...anyhow...just wanted to say I?m backing :)