landgreen / n-gon

2-d physics rogue-lite platformer shooter
https://landgreen.github.io/n-gon/
GNU General Public License v3.0
151 stars 222 forks source link

(Major Suggestion) Custom Tech in Experiment Mode #206

Closed 3xionDev closed 5 months ago

3xionDev commented 5 months ago

Since Experiment Mode is kind of just "play around with random tech" mode, I wanted to figure out a way to make things more interesting. I think that a custom tech creator menu could be added to experiment mode; in fact, with help, this could be relatively simple to implement. The idea is that the user would be given a menu in which they can create temporary custom tech, where they could also export the code for that tech. They'd be given the basic template for a tech, and some simple customization options like name and some barebones upgrade material such as fire rate/damage/defense effects, and they would also be given the option to make advanced customizations by writing new code for the tech.

This might be a bit far-fetched, but It's a feature I'd be willing to help with and that I'd really like to see.

AnnonymousNerd87 commented 5 months ago

a better way to implement this would be to give them access to some of the source code for tech with some template and a few more code comments because n-gon is open source anyway but most players never use the github

Masbirb commented 5 months ago

A needed suggestion but easier access to tech code would be nice as well

corneeme commented 5 months ago

this would be so much fun! I love the idea

3xionDev commented 5 months ago

@AnnonymousNerd87 The point here is to implement a custom tech user interface for those among us who are less programming-inclined. The tool would generate the tech's code for the user to export and use again/suggest as a feature. It also allows the developers among us to program tech more easily so that we don't have to make a local copy and all of that stuff just to make a new upgrade.

AnnonymousNerd87 commented 5 months ago

while I admit that coding can seem intimidating at first, just giving people blocks to drag around doesn't help teach coding. that's one of the things I hate about scratch. what I feel would be helpful is to give examples and code comments and point starters in the right direction, then let them teach themselves the rest. The hardest part of coding is learning the core syntax inherent in all languages and the similarities between them, and too much custom ui and simplification just makes it worse. I am learning TI-BASIC as a hobby in my free time just to have about 5-10 min a day in math at most with the school calculators to make stuff, but I still do just because it's fun. If you provide a easy to reach box with some examples and comments then anyone with a (excuse the pun) basic understanding of js can make all the tech they want, and if that box can have an easy import image slot that would be even better. an oversimplified custom ui would be more work for landgreen, and less useful as a whole.

corneeme commented 5 months ago

that... makes a lot of sense. I started out using Scratch when I was younger and I always felt that Scratch had so much more potential than what they were giving it, but then I got into HTML and javascript coding and I felt free of the limitations that Scratch has, so I feel that having something like you suggested is SO much better than having a simplified UI

AnnonymousNerd87 commented 5 months ago

another problem I have with scratch is a lack of a good IF statement, so you have to use the ungodly broadcast system to communicate between sprites and it is just so unoptimized, it took me hours to code some basic collision that is still full of bugs. and its meant for kids to learn easily.

3xionDev commented 5 months ago

@AnnonymousNerd87 correct, however the point of this suggestion is not to teach people how to code. it's for people who want to contribute to the game without learning how to code. giving them the generated code would simply be to include in the suggestion.

AnnonymousNerd87 commented 5 months ago

well if it isn't coding how would it work? would it be a full custom ui that would take landgreen weeks to make for one random suggestion? or would it be so limiting that just asking landgreen to add tech to his Todo list would be faster?

3xionDev commented 5 months ago

@AnnonymousNerd87 first of all, it wouldn't take weeks even if that was the case. second, it would be a small UI in the experiment menu that allows players to set some custom upgrade specs, test them, and then export the code. then, it would give the option to input custom code for more advanced upgrade editing, or to make smaller tweaks. simple, efficient, and fulfills its purpose.

AnnonymousNerd87 commented 5 months ago

it would have to have an advanced menu even for simple upgrades like MIRV, because it isn't just code it's also the projectile id and sprite, and the system in place would have to be completely redesigned even for simple stuff like a projectile menu

3xionDev commented 5 months ago

@AnnonymousNerd87 extensively complicated upgrades like MIRV would not be possible because they require serious development and time. using the simple menu, one would not be able to add new things to the game, just affects stats such as damage.

AnnonymousNerd87 commented 5 months ago

so you could do stat changes and nothing else?

AnnonymousNerd87 commented 5 months ago

at that point you might as well just give a script box with code comments on which variables are stats and which aren't

AnnonymousNerd87 commented 5 months ago

MIRV isn't complicated, it just makes you shoot one extra missile/grenade per shot, 0.88x explosion damage/radius

AnnonymousNerd87 commented 5 months ago

even I could code that given 20 mins to browse the files

AnnonymousNerd87 commented 5 months ago

heck if I wanted to I could steal the fps lock code and make a tech that causes the game to be locked at 10 fps as a junk tech

landgreen commented 5 months ago

I agree with the general idea that in game tech creation would be limited to stat changes. I don't have plans to add this feature.