-
Notifications
You must be signed in to change notification settings - Fork 48
Roadmap for Wesnoth 2.0 Alpha #5
Comments
Perhaps i18n should be looked into too. Translation infrastructure is important aspect of wesnoth too. |
Added i18n to the list. |
Also, to 6. we could use Godot's signals for an event system. Setting up a global .gd file with signals like "turn end", "turn begin", "move to" and alike. Within the script for a scenario, we could then connect to the signal and they get called whenever the signal gets emitted in the code. |
For (3): I'd say we don't need working networked MP for the prototype, since I can't imagine an engine like Godot wouldn't be able to support that, but it would be good to at least know if we'd be able to re-use any of the current campaignd(add-ons server)/wesnothd(MP server) code or whether Godot would require something completely from scratch for that as well. IIRC there's a There should also be a save/reload feature, which IIRC it was said that JSON would be used for that. For (5): I'd add animated terrains as well. Visually it's one of the things I like the most about Wesnoth 1, and is one of the places that Godot should be able to really show improved performance over Wesnoth 1's software rendering. For (6): One thing that would need to be decided for this is whether to try to re-use any of the current lua API from Wesnoth 1 or not, since I know that has been mentioned. IPFs are another thing that should be considered, and perhaps it would be possible to re-use the current C++ implementation of them as a Module/GDNative. Something else to consider would be how to implement a full API versioning scheme to allow multiple versions of the API implementation to exist and be usable. A question I have as well would be whether to have any pre-processor sort of functionality. It woudn't need to be as flexible as Wesnoth's pre-processor, especially since it wouldn't be needed in the lua scripting, but a simple text replace ability for things like ability/weapon special macros would still be useful. For (9): The one thing I would caution against would be commissioning any sort of improved graphics during the prototype, unless they would also be able to be used for Wesnoth 1. I don't know anything about how much money Wesnoth Inc has available from the iOS port, but I don't think it makes sense to pay to create new things that would be Wesnoth 2-only before we know that Wesnoth 2 is even possible. I mostly mention this because I know @Vultraz has already said that Lord Bob would be interested in creating some HD terrains for Wesnoth 2. |
Godot right now does not support SQL, but there is a GDNative addon that could be used for SQLite.
Ah, right, that indeed is important. I'll add it to the list.
That, too. I know two ways for that from the top of my head. Either with an AnimationPlayer node or with a shader script, so it definitely is possible. I'm not sure though how accessible it would be for UMC creators. But I guess there is a way for that, too. |
The problem with that being that Wesnoth's forum database is MySQL. Additionally, SQLite is an embedded type of database, so while it could perhaps be used to store statistics locally across multiple games/campaigns/etc, it can't be a replacement for the forum ban verification/forum accounts requirement that currently is done. |
I see. Maybe this module does what you need then. |
That looks closer to what would be needed, yeah. Only being able to select 1 row would be somewhat limiting, though not a deal breaker. It doesn't look like it supports query parameters though, which is... odd to say the least in 2018, and is a deal breaker just in terms of basic security. |
Well, it's two years old. Also, I think we have some devs who are fairly good in working with C++ and could extend upon this module as basis. |
SQL injection is quite an old vulnerability though. But in any case, it looks like MySQL support would definitely need to be a module and probably one that we support ourselves. |
But I think it's save to say that it's possible, then. Also, on tile animation again, I found this tutorial that might be useful, on how to animate tiles with shaders. |
Maybe it is an stupid idea... but... how about an an REST API to solve the issue related to mySQL support? |
What's a REST API? I'm not sure if the SQL issue needs to be solved for the prototype. We do know that it's possible to write what we need as module, thus there is no need for proof. Also: I updated the original post, added Wiki and extended the Scripting point. |
A REST API is overkill. There is no need to add a web server to the mix. What you're trying to say is that the MySQL interface should be refactored to a standardized interface (if it's not already, it's been a few months since I last looked at it). That way, if someone wants to swap out the MySQL interface to something else (say, a flat-file reader) it's a simple matter of replacing a few source files, or swapping one library for another. (And, yes, one of those replacement modules could use a RESTful API if you really feel you need to check the box to assure upper management you're using all the latest buzzwords.) Just realized this is the prototype project.
|
So, I probably misunderstood this... 'Cause the idea to have some Rest API is only valid if there's some integration with user's forum or something like this for the MP. |
At present, the integration is at the MySQL level. The Forums and Wesnothd both reach directly into the SQL database. Yes, there should be an API. But it should be at the library-call level at compile/link time and not at the network level. That way the MySQL database could be replaced with PostgreSQL, Oracle, MS SQL Server or anything else simply by changing the runtime used. And, if dynamic linking is used, the decision could be made at config/startup instead. Or multiple schemes could be even be used. All those are implementation details which don't need to be done simply to prove the concept. Adding a web server and a HTTP conversation, simply to use a RESTful API to hide the MySQL transaction (which might, or might not, also be a network transaction) is overkill. |
Right, it doesn't need to be the full implementation, but given some of the issues that have happened when the MP server didn't check the forum ban status, being able to do this in Godot is a "must have" feature from my perspective. |
As I mentioned on Discord, the mySQL integration for Series 2 should be written as a self-contained Godot module that others could use as well. |
I updated the first post and made some points a bit more concrete by adding can-do's and to-do's. |
@Byteron you can use checkboxes for the list so we can even better keep track of what is still open to do.
|
@LawnCable thanks, updated. |
Updated initial post. |
The Units item should have Dunefolk underneath it, I would think. |
@Pentarctagon added Dunefolk. |
I know nothing about this 2.0 prototype (just found it on by going down the ol' google rabbit hole) but something I think is sorely missing from wesnoth as it stands and will only hurt it as more time goes on is the lack of a dynamic GUI scale. Wesnoth 2.0 shouldn't use a mobile GUI spritesheet and a separate desktop GUI spritesheet but instead include a slider that allows the visual scale of the GUI to be made larger or smaller with dynamic graphics that let the user play easily on anything from mobile to future 8k displays without the user having to change out of their native resolution. |
I'd also add German or maybe Spanish under the i18n - you can't really prove translations work if there's only English.
And finally, there should be some mention of MySQL, or at least implementing moderation tools for MP. @spartanatreyu 4K maybe, but it's probably more than a decade away until 8K is relevant. |
Updated. |
Also, while it's kind of implicit, AI would be another thing to add to the list. I assume mattsc would be the person to talk to once that becomes necessary to implement. |
I mention 8K not as a modern requirement but for the purposes of future-proofing. 8K would likely be a standardised target size to prove a scaling GUI's implementation works correctly at larger resolutions. Non-16:9 ratio displays would also be useful to playtest too.
I actually deal with translations as a web/app dev amound other things as part of my profession. We've found that the four best languages to test/build GUI elements against/for are English, Russian, Japanese and Arabic. (buttons, menus, tooltips, description text, etc...) If your GUI works in these four languages, it will likely work with every translation you're likely to include without having to cut out and reimplement something in the future. English is useful as a standard size. Russian requires roughly 150% the amount of characters as English to carry the same meaning. This makes it a good language to stress-test the maximum size your buttons will support. (in my own experience, it has helped me to force all buttons to support multiple lines from the start of development). Japanese can sometimes convey meaning in around 30% the same characters as English, sometimes as few as 2-4 characters. This is because regularly used words can be represented as a single character, like Support for Arabic is very useful to build in from the get go to ensure you can support RTL (right to left) languages. Nothing is more painful than trying to bolt on RTL support for your GUI elements and layout after you've already made a GUI. Build it in from the start and control it with a simple boolean/flag/enum. Supporting these four languages will ensure you have no issues with variable content sizes, RTL layouts, unicode and CJK fonts. If I were you I would add them to your I18N proof of concept checklist. Spanish and German aren't that useful for testing as they both mainly use the same Latin character set with German only being about 130% as many characters as English. |
that's some pretty good insight, thanks! My guess is that Pent mentioned German because he knows that I did some German translation on 1.x, thus it's a language we already have a translator for. :P |
Haha, all right then. Wesnoth alreadly has translation files for Russian and Japanese so they can be used right off the bat. Unfortunately the Arabic translation is in practical terms not started. I would still highly recommend trying to build in Arabic support from the start. The assumtion that characters and menu items should be aligned to the left seems like it would be a simple thing to add into afterwards but it always takes so much longer than anticipated. When it's tacked on afterwards, there ends up being a doubling of constants, messy offset code, untidy conditionals everywhere all pulling from spaghetti code globals, not to mention the unforseen bugs that will keep popping back up seemingly completely seperated from the layout code but caused by an assumption. Spending the little extra time putting that planning that proper headroom at the start will prevent a lot of frustration. |
RTL is easiest part of arabic support. Hardest part is choosing right letter form to make text properly connected, because even printed arabic works basically like handwriting. This requires direct or indirect use of a text shaper library such as HarfBuzz. Current state of godot's i18n support is tracked here: godotengine/godot#3081 . Harbuzz support seems to be absent but there's issue for it. |
@spartanatreyu @loonycyborg There is a gdnative module that can add proper Arabic support withOut recompiling the engine. |
@Pentarctagon @Byteron Regarding animated tiles, I've used AnimatedTexture with tilesets to great effect in order to create animating water tiles for example. See the water in this example jam game for animated tiles that are also auto-tiled and auto-randomized at content creation, so I had to do nothing more than use use the brush and area fill tools. However as noted in the docs all frames need to be of the same size, meaning animated tiles would likely have to be exported in separate texture files from the static ones or else if they're bundled in the same texture then you'd risk some redundancy in storing assets (potentially adding unnecessary megabytes). I hope I explained clearly, I can show a screenshot from one of my projects' tile editor to explain how it looks like, but I think the easiest way would be to try it out. I still think this is the best way to handle animated tiles for several reasons (other than that the docs recommend it).
|
AnimatedTexture indeed is what I thought to use for Water and the like. I'm guessing that this a bug and will hopefully be fixed sooner or later. |
@Byteron Is there an open issue about it? The contributors for 2D tiles are pretty active and it should get things going. |
Yes there is. Multiple actually. :D |
Wesnoth 2.0 Alpha
Gameplay
Classic
New Mechanics
Terrain
Map Editor
Interface
WDK (Wesnoth Development Kit)
We should set this up and use it for core content as well.
Networking
Content
Units
Campaigns
I18N
It may not be fully translated, but it should at least use it to proof concept
The text was updated successfully, but these errors were encountered: