TheGameCreators / GameGuruRepo

The GameGuru Repository For Community Collaboration
http://www.game-guru.com
138 stars 56 forks source link

GameGuru MAX - Request - Plugins/Addons #4591

Open MonkeyFrogStudio opened 1 year ago

MonkeyFrogStudio commented 1 year ago

Not sure how this would work, but I think it would be great, and would greatly benefit MAX, if it had some sort of "plugin/addon" architecture that would allow 3rd party developers to create plugins/addons to extend MAX's capabilities. Let's say, for example, that someone wanted to create a more complex EBE (Building Editor), or a shader editor that could be accessible from within MAX, or develop a set of configurable grey-boxing assets, etc. Wouldn't it be great if people, outside of TGC, could develop such things and either offer them or sell them to MAX users who might be interested?

Unity, Unreal, RPG Maker MV (and it's other various versions), and many other game creation tools have a means for someone to create plugins/addons and they are often a great addition, especially if you discover that someone has created a tool that you could really use, making it even easier to create your game in MAX.

I've spent a decent part of my day scrolling through itch.io and looking at the tools being offered, many of which are addons/plugins for other game creation tools ... many that I thought to myself, "That would be awesome to have for MAX!" There's no way that the TGC team could create all of these tools, nor should they have to. Many are very niche. But someone may want to and be able to create such tools. But if MAX does not have the ability to accept and use plugins/addons, then what's the use?

Plugins/addons can really go a long way toward extending the capabilities of a tool like MAX and help to make it even more popular.

MonkeyFrogStudio commented 1 year ago

@davetgc @LeeBamberTGC

I know we're currently in bug fixes with v1 and enhancements are not on the current radar. Even so, I wanted to stress a bit how important it is to open up software like MAX to being able to be enhanced via plugins/addons. A brief "history," if you will ...

Back in the day, there were only a few 3D modeling packages - Alias (Maya), 3d Studio (later to become 3ds max), Softimage, Lightwave, and a few others. We will exclude Blender for now with it's humble beginnings in 1994. One thing that 3ds max had going for it was the ability for third-party developers to create addons/plugins. You could find a plugin for just about anything, whether you needed it for architecture or games. This helped to catapult 3ds max to the head of the pack, allowing the owners of 3ds max to eventually purchase Maya. Softimage is no longer with us (sadly) and Lightwave is barely hanging on ... if even that (despite the recent announcement of a 'revival' of the software). Later 3D packages tried to compete with 3ds max, like Modo. But Modo made it very difficult for anyone to create plugins/addons. That, coupled with it's smaller userbase, made it so that Modo, while still being developed and still having a small following, is mostly not even considered. For example, a new CAD software, Plasticity, was recently released. To make it user-friendly, it offers the ability for end-user to select from a number of pre-made key bindings. These included 3ds max, Maya, and even Blender. Modo didn't even make the list.

Blender has gained a substantial market share in recent years. A lot of that has to do with it's revamped UI starting with v2.8 (if I recall correctly). But the other thing (and possibly the main thing) is how easily upgradeable the software is via addons. Like 3ds max, the number of addons and their functionality is immense. If you feel that Blender is lacking in any way, there's probably an addon for that already. Many Modo users (like myself) transitioned to Blender as a result and, to be frank, I don't miss Modo.

Back in the day, there were many game engines for indies to use - 3D GameStudio, 3D RAD, Dark Basic (and Pro), Torque, and more. But one thing many of these lacked (or did make easy enough) was the ability to create and incorporate addons/plugins (at least not that I can recall - not all that familiar with Dark Basic, to be fair). But when Unity started to become a game engine and when Unreal was being released to the masses, this is one thing that they made fairly easy to do - create and add addons/plugins. They even made a store for them to be offered. As a result, 3D GameStudio died out almost a decade ago. Many of these others are ... there ... sort of ... but not being developed (or, if they were made open source, slowly developed by devotees). But Unity and Unreal survive. In fact, they thrive. I believe that, in part, it was due to the plugin/addon architecture that allowed for third-party developers to add features that others could utilize.

If GameGuru MAX had a fairly easy to access plugin/addon architecture, then TGC would not have to develop everything that the end-user wants. And if TGC isn't interested in MAX being able to do certain things, then others could add those things via plugins/addons. MAX already has a building editor, but it's pretty limited, imo. What if someone wanted to create a better one? What if someone wanted to create a way for something similar to FPS Creator's editor, but for MAX? What if someone wanted to create a shader editor for MAX to allow end-users to extend MAX/Wicked shaders? What if someone had ideas to enhance the MAX storyboard area? The ideas and possibilities are limitless. And having this ability for MAX would only make MAX more popular. Other tools (great tools, too) that didn't offer this or made it difficult? They've died on the vine or are in the process of dying even now. People seem to love to create these sorts of things (third-party addons). Why not give them the opportunity to do so and, as a result, make MAX an even better tool that will be even more popular as a result.

LeeBamberTGC commented 1 year ago

@MonkeyFrogStudio Sound words, thanks for the histories, it really does go to show that one of the key ingredients to the success of a tool is its ability to be customized and augmented by those that use it, and then share that improvement with everyone. Very much how I see a great community operate :)

The difficulty lies in finding willing souls who want to create an entire Structure Editor or Shader Creator. These could be considered products in themselves by the time they have been built up enough to be useful. It was to this end that we opened up the entire source code to both GameGuru Classic and MAX so that contributors could add to the tool, and it's an activity I am hoping to encourage in the years to come. The building editor source code will be opened up soon and I will be curious who will take up the baton to improve and add features to it. GameGuru may already contain the seed of its own demise, in that we have a product that does not require coding to make a game, but coding is absolutely required to create plugins and enhancements for it. Compare that to the old DarkBASIC Pro, created for coders, and as a result, spawned over 30 third-party plugins created by the very community that used the programming language :)

All is not lost however, there are already early and strong indications that addons are to play an important role in GameGuru MAX, not least the explosion of game logic behaviors from our very own Necrym59, who single-handedly created the bulk of RPG and PUZZLE scripts now part of the main product. By creating an easy-to-navigate behavior library and enough flexibility between a game object and its script, anyone in the community can create their own game logic and share it without needing to know too much about the internals of the game engine. Similarly, the third-party DLC you have seen so far for MAX show the proficiency of technical artists in bringing new options to all MAX users, even adding functionality in support of their game assets where none existed previously.

One area I feel is currently undernourished is the ability to create add-on scripts that affect the UI and editing capabilities of GameGuru MAX. We have talked of additions to the game logic, but equally important is the ability to enhance the tool itself, and to be able to do so without learning C++ and compiling a vast game engine to see your results. Much akin to the way 3D modeling tools host plugins in script form, executing a series of commands to expand what the tool itself can do has much to recommend it. I would personally be interested in hearing from anyone who wants to collaborate in this area, and I would be happy to assist in providing additional LUA commands that run in parallel to the MAX UI. These do not need to be massive efforts but could range from entire Weapon and Creature Makers all the way down to an extra button in the toolbar for grid-aligning level objects. If the commands allowed the creation of UI elements, interaction detection, and access to all the data held in the currently edited level, I imagine quite a lot of plugins would suddenly appear. Make no mistake, there is a lot of work here to add this ability to MAX, but once added, the community should be able to take it the rest of the way :)

I will keep an eye on this thread and look forward to learning what everyone else thinks. Fear not, bugs must always come first, but the concept of teaching someone to fish as opposed to feeding them a fish has always appealed as it fosters a community of creators rather than a community of consumers.

mav3r1ck198-1 commented 1 year ago

potential plugins that would be a dream would:

  1. be a spline creator/editor for roads/pathways/waterways etc
  2. A Procedural generation tool-for example @MonkeyFrogStudio fantastic spacestation pack, could be used with a procedural generator and could in effect create unlimited layouts using segments from the kit. Dungeon architect for UE4 is a great example https://www.youtube.com/watch?v=mbkolwDbOQo This could potentially work for Biome kits as well as indoor
  3. Volumetric environmental effect generator
  4. Pathfinding for Flying AI

Just my tuppence worth......

neotracer075 commented 1 year ago

This sounds like it could be very cool if implemented!

MonkeyFrogStudio commented 1 year ago

@LeeBamberTGC

The difficulty lies in finding willing souls who want to create ...

I don't think so. If TGC implements a plugin/addon architecture for MAX, then promoted it, I bet people would get excited. TGC gets a lot of angst due to past issues. As a result, some are carrying that angst over to MAX (even if they've never even tried the program). However, MAX Is also changing some people's minds who have given it a fair try. Look at the reviews of MAX done by Games From Scratch. Many times, when people in the comments would say bad things about MAX, he would speak up and defend it (at least to a degree). This is a positive change. If MAX were to get a plugin/addon architecture so that 3rd parties could extend MAX capabilities, I bet Games From Scratch would be all over that! An easy game maker that is also able to be extended via plugins? Wow!

It was to this end that we opened up the entire source code to both GameGuru Classic and MAX ...

Isn't opening up the source code a bit different than implementing a plugin/addon architecture? With actual plugins, no code needs to be added to MAX nor changed (nor approved). It's all third-party. This opens other markets (people could sell their addons or offer them for free), too.

All is not lost however, there are already early and strong indications that addons are to play an important role in GameGuru MAX, not least the explosion of game logic behaviors from our very own Necrym59 ...

But Behaviors aren't technically addons/plugins. They're lua scripts. I mean, a Behavior can control an object in MAX when the game is running, for example, but what about changing the UI? What about adding functionality like the things that mav3r1ck198-1 brought up above?

Blender has an addon called UV Packmaster. It's essential if you're serious about 3D modeling objects for games. Python is used to create the UI stuff in Blender, but it's also used to connect Blender to external code - the algorithm that runs UV Packmaster, allowing it to calculate and pack UVs efficiently and quickly. That external code is a compiled EXE that is called upon from within Blender. But it all works seamlessly from within Blender.

Although, maybe you can go the route of Blender where they use Python to link between Blender and, in some cases, actual coded stuff (as pointed out above). But, in this case, lua instead of Python? That may be what you were referring to in paragraph 4. :)

In any case, ultimately, I see a plugin/addon architecture as something more than a Behavior and something more than a link to an external program (like the Particle Editor or Building Editor) that simply saves to the appropriate folder area. Instead, these could be, if so desired by a third-party developer, things that alter MAX functionality (ease-of-use types of things, for example), add additional functions like different AI, or like some of the examples that mav3r1ck198-1 brought up, etc.

fearlesswee commented 1 year ago

So, on the livestream Lee asked us to weigh in, so he'd know what kind of .Lua commands he may need to add for plugin support. Well, here's a couple of plugins I'd like to see, in no real particular order!

  1. Spline Tool: This one has been requested over and over, so I'm more or less just affirming how important people consider this lol. Basically, it'd be a tool that lets you generate smooth-flowing spline-based models/geometry that can follow terrain, or whatever path you might need. This could be used to generate roads (especially if it has an option to automatically "carve" the terrain underneath to fit), fences, rivers/streams, smoother terrain paths winding around hills and such, or even something more niche; like if you had a lever that opens a door somewhere else in the level, you could make a cable that physically attaches from the door to the appropriate lever to telegraph the connection. (This spline tool may need to be added on an engine-level by TGC though, since it needs to generate new geometry on-the-fly.)
  2. Auto-populate buildings: Say you're making a medieval village in your RPG game. You may not want to have to manually fill each and every house piece-by-piece, and also don't want every house to have identical copy-pasted interiors, so it'd be nice to have some kind of tool that can automatically randomly place beds, tables, chairs, shelves with items, etc. (all of your choice) in the rooms of houses, so you would only have to go back if you wanted to add a specific item, like quest-related pickups. This may require models that are specifically set up to support this feature, however.
  3. Modular "quick-build": This one requires a bit of explanation. Basically, you know how some of the DLCs are set up with modular "hallway" type pieces? (Straight pieces, L-shaped corners, T-shaped 3-ways, etc.) Imagine a tool where you could just click and drag to draw paths, and the tool would automatically place the correct hallway entities to fit that path, and if you attached a new path to an existing one, automatically swap out the entity at the connection point to a 3 or 4-way intersection as needed. This could be immensely useful, particularly when you're trying to build an interior path to a specific location on the map; atm it's a bit tedious to manually select the necessary piece type, drag it into place, then select the next necessary piece type, drag it into place, repeat ad nauseum. It could also be used to very quickly block out interior levels using these DLCs.
  4. Terrain "stamps": Imagine if you wanted a realistic, good-looking mountain behind some hills in your level. But, as it stands, it takes a lot of time to sloooowly grow a large area of terrain to the height, use the ramp tool to create "erosion grooves" on the sides for a more realistic look, smooth it all out, paint some snow ontop, etc. And then if you wanted another mountain somewhere else, you had to do it all over again! Imagine if there was a tool where you could just select from a variety of terrain stamp features; like ponds, small lakes, hills, mountains, plateaus, etc. and just click at the desired location, and it'd quickly generate a smooth, randomly-generated terrain feature of that type at the location. Would be an absolute dream for quickly building large outdoor levels.
  5. Randomized entity sprayer: We still have the spray tool from classic, which places copies of a single asset around the area with a randomized position, size, and rotation offset. It would be a small addition, yet an immensely useful one, if we could instead select a multitude of various entities to spray at once. (For example, if we had 10-15 different shapes of rocks, we could group select them all, and then randomly spray them around to quickly detail out a rocky shoreline or desert scene or what-have-you, it'd be a lot quicker than having to spray each different shape of rock one-at-a-time with the current spray tool.) It'd also be great to have more options/rules here; for example if we were quickly spraying buildings to try and get a little village going, we would want to specify that they cannot have their size randomized, and their rotation must be restricted on a flat axis. (We don't want leaning/upside-down buildings!) We would also want to specify a minimum distance between sprayed entities, so we had room for roads between the village buildings!
  6. Flag Path Painter/Generator: Right now, setting up patrol paths using flags is a bit of a nightmare. You have to place out a path of flags, then switch to the visual logic mode, and tediously click-and-drag between each and every link of your patrol path. There really needs to be a tool where you can just click to place a flag, and then when you click to place another one, it automatically links to the last-placed flag. Or, you could just click a start location, and then an end location, and it'll use the navigation mesh between the two points to automatically place and link flags as necessary.

These are just a few off the top of my head, based off of the things that I personally feel to be "missing", or things that would save a lot of time that otherwise seems to just be wasted on tedious busywork, whilst making levels in GGM.

GraPhiX-Guru commented 1 year ago

If you would like to test a 'plugin' i am willing to add LuaPad+ to MAX so that users can edit create LUA from within MAX editor, the easiest way of achieving this would be an external call to the exe.

davetgc commented 1 year ago

@GraPhiX-Guru @LeeBamberTGC - That's a very useful tool.

synchromesh62 commented 1 year ago

What might work as a quickie and handy is an add tool function Add Tool \ Tool Name \ Browse to .exe \ So if i wanted to start an external app like Lua-pad+ or Blender in fact any third party tool from Max it just adds a shortcut in a dropdown menu. From Max i could then go to Tools then from a dropdown menu select Lua-Pad+ etc Not really a plugin feature as such but just a shortcut which does not have any effect on Max.

MonkeyFrogStudio commented 1 year ago

Just a note - This thread is not really about the kinds of plugins/addons we'd like to see developed for MAX, but about TGC adding the actual ability for plugins/addons to MAX so third-party developers could extend the tool. Things like the Particle Editor and Building Editor aren't really plugins per se. You can just open the external EXE from withing MAX via the menu, use the software, then it saves out to a directory that MAX can access. With actual plugins/addons, you can do that, too, sure - but you can do so much more, such as adding actual functionality to MAX that TGC did not develop themselves or ways of making MAX even easier to use. For those of us using Blender, we see these types of plugins/addons being created constantly. It's incredibly useful, especially for people coming from other systems who may see something is "missing" (from their point of view). They can then see if there's already a plugin that fills that gap or create one themselves if they like.

GraPhiX-Guru commented 11 months ago

Would it be possible for a user to browse for a simple EXE file and for MAX to add it as a menu item under 'Plugins' These EXE files could be checked for Digital Signatures and only approved Developers EXE would be allowed to be added, something similar to the Workshop Method.

MonkeyFrogStudio commented 11 months ago

Would it be possible for a user to browse for a simple EXE file and for MAX to add it as a menu item under 'Plugins' These EXE files could be checked for Digital Signatures and only approved Developers EXE would be allowed to be added, something similar to the Workshop Method.

That would be great, too! If MAX could do this, then I could access GraPhix tools from within MAX. For example, GraPhix excellent xLUT could be accessed without having to leave MAX, LUT created, saved, and then useable within my MAX project(s).