GoodSign2017 / mochadoom

A pure Java Doom source port
GNU General Public License v3.0
0 stars 1 forks source link

Achievements, level system, tracking of progress #7

Open GoodSign2017 opened 7 years ago

GoodSign2017 commented 7 years ago

@Fabrice-leterme you are welcome to discuss your ideas about these enhancements.

Fabrice-leterme commented 7 years ago

@AXDOOMER already listed quite a bunch of the things that could be added to this.

And you're right about the options part, I never liked the command line options. Why not make that graphical on startup and have it save selected options, so you can just click start or choose to enable extra features?

GoodSign2017 commented 7 years ago

It can be done as a separate configuring utility. But the main executable itself should not, by default (without cfg tweaks, or arguments), expose anything non-vanilla to user at the maximum possible extent.

Also, even if the external utility will be present to configure these settings, the command-line arguments should be still available because for the external multiplayer connection utility it would be easier to interact with main executable by command-line arguments, then by configuration utility.

If you do not want to add command-line arguments yourself, I can add them for your options, after they are implemented somehow.

Fabrice-leterme commented 7 years ago

Commandline can always be used. as for multiplayer, why not create a launcher like they're doing on Doomsday at the moment? (still my favourite port to-date)

GoodSign2017 commented 7 years ago

As I've never seen Doomsday's launcher, you will need to clarify this for me :-)

Fabrice-leterme commented 7 years ago

home_ui

Fast picture from their site

Fabrice-leterme commented 7 years ago

basicly gives you the opportunity to do all configs/play all games/see all multiplayer games.

Basicly anything you can think of

GoodSign2017 commented 7 years ago

Is their launcher compatible with other source ports? Is it free, libre and open source?

Fabrice-leterme commented 7 years ago

https://github.com/skyjake/Doomsday-Engine

I haven't checked on that tbh. but the link above might help, it sure is opensource

GoodSign2017 commented 7 years ago

Is it called Snowberry launcher? If so, it would be probably better to use it or adapt slightly (either pull-requesting to their project or forking, does not matter too much) to use with Mocha Doom once we will have everything set up for it, than reinventing a wheel (and even that shiny and complex wheel, surely made using gold and diamonds)

Fabrice-leterme commented 7 years ago

When it comes to creating a launcher, I'm pretty sure I could handle that. It's not that much work in java

Fabrice-leterme commented 7 years ago

And snowberry is the old launcher

GoodSign2017 commented 7 years ago

Where is the new one's source then?

Fabrice-leterme commented 7 years ago

should be inthere aswell, I know it's the latest build

GoodSign2017 commented 7 years ago

It is not guarranteed. They may have used free, libre and opensource project as base for their old launcher, yet developed new, without obligation to share source.

When I looked for it, I didn't find metions of their new launcher's source. If you find it somewhere, please give me a link.

Fabrice-leterme commented 7 years ago

looking at classnames I'm pretty sure this must be it: https://github.com/skyjake/Doomsday-Engine/tree/master/doomsday/apps/libdoomsday/src

GoodSign2017 commented 7 years ago

Yeah, it is GPLv2+. Good. Maybe it is a bit too monolithic, it terms that it is not just launcher, but something bigger. I should look at it closer in future.

Fabrice-leterme commented 7 years ago

I'll write a fast implementation on the achievements and such just as proof of concept and share the results here if you want :-)

Fabrice-leterme commented 7 years ago

won't be writing an actual server implementation yet, just hardcoding some stuff inthere that emulates the same process

GoodSign2017 commented 7 years ago

It is up to you if you want to write them. For me there is only question of accepting the code.

Fabrice-leterme commented 7 years ago

True, but in order to accept code you'll need proof of it actually working and not interfering with vanilla

GoodSign2017 commented 7 years ago

If I understand the code, I can determine whether it is compatible. So you can just write clean, self-explanatory, well-styled code.

Either, if Alexandre-Xavier Labonté-Lamoureux would think the code is compatible, I will accept it too.

AXDOOMER commented 7 years ago

If you want to know if I'd accept your feature requests as vanilla compatible or if it fits in the project, then it's better to do an exact description of what you want to do for me. This way you wouldn't waste any time coding things for Mocha that wouldn't be accepted.

Achievements, level system, tracking of progress

Explain how it works. What stats do you want Mocha to record? Make a complete list. You can hardly make an achievements, level system and progress tracking system with the statistic that I named in the other thread. Doom could only record a few different statistics. See Statistics driver.

Please create a different issue for the launcher, it's a different issue. The launcher will never be merge into Mocha's repo because it's a separate project. It's yours, you can do whatever you want with it. When it will be fully mature, we can advertise it as Mocha's official launcher and include it with our releases.

Concerning vanilla compatibility and the philosophy of the project, here's a few examples of things that I wouldn't like:

Feel free to ask questions.

GoodSign2017 commented 7 years ago

@AXDOOMER to do this compatible and fitting, one need to think a little more creative, not so straight-forward, as you have imagined that far. Instead of writing menus, it is possible to add some graphics at the level of window system, like we add window controls for alt-enter and mouse grabbing which do not exist in vanilla, outside of the DoomLoop. Leveling system should be done totally outside of the port source, and it is definitely possible with statdump statistics. I cannot say much about progress tracking, though, but we should see that, not stop an attempt to do.

Anything related to network connections wouldn't be done until the net driver for Mocha Doom is written. However, if that would happen, I do not see why wouldn't be possible for net driver for Mocha Doom to accept a little customization without harm.

Launcher, of course, must be developed outside of our repos.

Overall, my position is "vanilla is the default option", not "vanilla is the only option"

Fabrice-leterme commented 7 years ago

@AXDOOMER: I have to follow @GoodSign2017 on this matter.

A list of stuff to record for single player:

Stuff to record in co-op:

Stuff to record in Deathmatch:

As for achievements, you can add anything a person can think of to this:

As for hosting a database/server and such for the statistics, I'm willing to fund that when the time comes, I remember you asking who'd pay for it.

Slight alterations to the actual source can enable hell alot of new possibilities, I like the idea of a vanilla doom, but it just won't do it. You'll have to come out with new stuff that add onto the actual gaming experience, without changing the actual game but all the stuff around it, that's something that doesn't really matter to people.

GoodSign2017 commented 7 years ago

@Fabrice-leterme you can start with stuff that doesn't need any new features from the port, and when such features will be available, you better to expect these would be Boom features. We plan to add Boom compatibility in a meanwhile.

AXDOOMER commented 7 years ago

Instead of writing menus, it is possible to add some graphics at the level of window system, like we add window controls for alt-enter and mouse grabbing which do not exist in vanilla, outside of the DoomLoop.

What would you do in those new menus? Do you mean a window that would popup before the game starts, kind of like Doom95?

In the case of statistics, it would be up to the launcher to interpret them. The launcher would have to run in the background while the game in running. Once the player quits, then it would have to read the statistics file and write them to its database. It's easy though for a user to manipulate the data and put fake information in there in a way to obtain every achievement, the maximum level, etc. It can't be reliably used to compare players and see "who's the best".

Leveling system should be done totally outside of the port source, and it is definitely possible with statdump statistics.

It's fine with me if it's outside of the port and uses the statdump format. Same for the Achievements and progress tracking.

@Fabrice-leterme: You mentioned you wanted stats for "Mobs fragged (in total & by mob)", I believe the statdump format only provides a percentage and you can't get a count for the number of monsters killed by type. Also, if the users plays a mod, you can't guarantee that a Imp is still a Imp or if the Spider Demon didn't become another monster like a Chaingun dude. In the case of things like ratios, they don't have to be saved because they can be calculated from existing data.

GoodSign2017 commented 7 years ago

It's easy though for a user to manipulate the data and put fake information in there in a way to obtain every achievement

I agree it an be easily forged. Still, if the game is modified to send this information, its requests can be forged as well. So, if to implement something like this, an approach must be taken when the game is hosted somewhere out of the client control, and only output of that instance is counted.

It is not a question of how the information was captured, only on which authority.

GoodSign2017 commented 7 years ago

What would you do in those new menus? Do you mean a window that would popup before the game starts, kind of like Doom95?

I do not know. Possibilities include something like that, but I don't see what could be displayed in such window. I've even thought about notifications in Windows 10 and how they can be spawned, again, as a possibility. Honestly, I do not mind including that myself, only thinking about what's possible using window system's source.

Another crazy idea: Mocha Doom's live tile in Win10's Start