Some interesting info. Or at least, I thought it was very interesting. I'm actually quite excited by it, I love these kinds of fundamental improvements that save time and just make everything work better.
[url=https://cityoftitans.com/forum/developers-workshop-put-plugin-it]Read the Developer's Workshop post here[/url]
[center]--------------------------[/center]
[center][color=#ff0000]Interior Map Lead and UI Designer[/color][/center]
Sounds cool to me. When you say it's self-maintaining, does this mean that UE4 handles all the synching of variables between modules, or am I thinking too old-school when I think of modules?
Still, I can imagine what future headaches this bit of time invested will avoid, and I appreciate MWM's forward thinking. I think it's well worth the delay in seeing more chargen details to know the foundation is more secure and more adaptable.
Spurn all ye kindle.
This sounds like a very good improvement to the developing architecture. Less chance of developing bugs in a vacuum if there is no vacuum.
"A sad spectacle. If they be inhabited, what a scope for misery and folly. If they be not inhabited, what a waste of space." ~ Thomas Carlyle
Nice. Was this something you could have moved to post-release, or is it lucky you were able to do it while still in pre-production development?
I'm no developer, but that certainly sounds more efficient, and I prefer things to be efficient. Good stuff.
Alright so I am trying to learn how to code but on the unity engine... so I think this means that development will be slow at first due to this change, but then after it will go really quick... is that what this means?
not my video just one I lke ===> https://www.youtube.com/watch?v=U6-SdIN0hsM
[CENTER][URL=http://www.nodiatis.com/personality.htm][IMG]http://www.nodiatis.com/pub/24.jpg[/IMG][/URL][/CENTER]
I know from experience that the real trial begins with integration. It seems like this will allow you to move a significant portion of your integration efforts to the left. That can only be good as it reduces the cost of failure/rework in both cost and schedule. I'm glad you guys are capitalizing on it and I hope this bodes well for the future.
[hr]I like to take your ideas and supersize them. This isn't criticism, it is flattery. I come with nothing but good will and a spirit of team-building. If you take what I write any other way, that is probably just because I wasn't very clear.
What if one plugin breaks, that is linking other plugins? Totally possible this is way too simple of a scenario, but:
Plugin 1 here -> Plugin 2 here -> Plugin 3 here
Plugin 2 breaks. What happens? Whole game breaks? Since it's all plugin on plugin on plugin?
[img]https://i.imgur.com/6UMbkE9.png[/img]
I hope this works lots of software that i worked with in various jobs all had limitations that did not consider unusual functions of other programs.
Considering all the imagination that is available there m,may be syncing as mentioned d before that must be careful of. Remember the rouge tree from earlier.
Best of luck i hjave been waiting years to play this game. But if it works well then I can assume that the projects mifght find themselves easier to complete.
[CENTER][URL=http://www.nodiatis.com/personality.htm][IMG]http://www.nodiatis.com/pub/18.jpg[/IMG][/URL][/CENTER]
[URL=http://1.bp.blogspot.com/-knhgv6lgbrs/UA_riCKAHNI/AAAAAAAATxE/u-sgh23bZhc/s640/wonder_women_by_penichet-d47up0l.jpg [/IMG][/URL]
As the guy who came up with the system I'm probably the best one to answer it.
Naturally any system with dependencies will break if any of those components are also broken.
What we have now is a method of creating, testing, and debugging any part of such a chain [i]before[/i] it gets handed up the line.
The procedure is to create the plugin in it's own project. That project is fully functional and uses the plugin its being used to test and develop. Part of that testing is to actually package that project. If that project successfully packages and runs then any other project dependent on that same plugin is more than likely to work right too.
Oftentimes the plugins earlier in the chain are nothing more than asset plugins, i.e., fonts, icons, music & sounds, etc. And of course the 3rd party plugins we get from the marketplace that have already been tested and approved by Epic Games. An example of a plugin we developed inhouse is the sliders you see in the avatar builder. It creates the sliders based on a datatable and spits out a set of values any time any slider changes which any project that uses can read.
No system is absolutely bulletproof, but steps can be taken to try to mitigate issues before they occur.
Anyways this has had interesting results. The game project can now pretty much exist as a folder that contains certain settings files and a file that tells the engine that it's a project file and what it's name is. What happens when any of the time pulls the main project, or any of the plugin projects, from our file server it automatically pulls what plugins it depends on at the same time. So if you were to look at such a project in the raw as it exists on the server you might see this file folder structure:
Config
Content
Source
CityOfTitans.uproject
When some pulls it from the server the software that manages the request looks at a internal list of what that project needs from other places and the result looks like this on the requesting person's computer:
Config
Content
Plugins
Source
CityOfTitans.uproject
Of course this sample was for the main project. For a project that is handling plugin creation, testing, etc. (which I call "Modules" because they are more than just the plugin being developed) things will look more like this both on the file server and on the developer's machine:
Config
Content
Plugins
Source
P[i]plugin name[/i].uproject
(I prefix plugin project names with the letter "P" because the plugin has to have a different name than the containing project).
And in the Plugins folder on the file server you will see:
[i]plugin name[/i]
and in the [i]plugin name[/i] folder you will see:
Config
Content
Resources
Source
[i]plugin name[/i].uplugin
When someone pulls this project they will get all of the above, but the Plugins folder may also contain [i]other[/i] plugins necessary for the one being developed to work (like fonts, and icons).
After they do work on the project they have to package and run it to show that it functions [i]before[/i] they submit it back to the file server (which leaves out any external dependencies when it restores it).
By the way the minimal content of one of those .uproject files is just this simple text:
{
"FileVersion": 3,
"EngineAssociation": "4.19"
}
Technically you can leave of the "EngineAssociation" line to and it will prompt you to select from a list (and then it will modify the file to reflect it).
.uplugin files a little bit more complex usually - but not by much.
I hope this helps clarify things better.
-----------
[color=#FF0000]Senior Developer/Project Manager/Co-Founder... and then some.[/color]
Sometimes I'm amazed at how fast coding evolves. I'm old enough to have started out using punch cards, so seeing tools to manage this kind of stuff my co-workers and I used to have to do by hand is fantastic.
And it bodes well for future developments to CoT. Seems this will be a big help in avoiding the difficult-to-maintain/almost-impossible-to-change state into which the code of the old game had become mired.
Spurn all ye kindle.
Say plugin again. Say plugin again... and I dare you, I double dare you mother#%&߀$. Say plugin one. more. goddamn. time! =P
[url=https://www.youtube.com/watch?v=W_HUdf89hI8]Send out your signal, call in your hero
I kidnapped his lady, now his power's are zero.
[/url]
If you have verbose error reporting, you can easily identify where the breakdown occurred. Then walk it back to see who/what was behaving badly.
"Just, well, update your kickstarter email addresses, okay? Make sure they're current?" - warcabbit
If this even slightly helps cut down on unnecessary patch sizes - ignoring the other benefits for the moment - you'll be popular with all of us getting trampled under the boot of rural US connection speeds...
As a (once-upon-a-time) developer, I am all in favor of modular design that is easily testable at every level of packaging.
I hadn't thought of the patch size angle but that is a good point.
-----------
[color=#FF0000]Senior Developer/Project Manager/Co-Founder... and then some.[/color]
I will admit I am a touch wary of any cascading effect that might occur should one plugin fail somehow, but I am excited to hear that this greatly benefits the modular design of the game.
Thanks for the update!
I do a DnD Podcast, which can be listened to here.
Additionally, I write up my sessions of a Teen Heroes game here.
Trust me, everything cascades in software. What we are doing let's us intercept it better.
-----------
[color=#FF0000]Senior Developer/Project Manager/Co-Founder... and then some.[/color]
In my field, efficiency is paramount (all part of TQM). After reading this, it sure sounds like it increases efficiency across the board. I like the fact that everyone is working in the same 'environment' that this new build brings. Which will probably help in eliminating bugs found by players while playing too.
That was my thought. Better and easier to find and fix one plug-in quickly than have to take the entire thing apart to (hopefully) find the problem.
- - - - -
[font=Pristina][size=18][b]Hail Beard![/b][/size][/font]
Support [url=http://cityoftitans.com/comment/52149#comment-52149]trap clowns[/url] for CoT!
I would hope it either removes or reduces one of the biggest flaws with UE4: The requirement to redownload the [i]entire[/i] game after a major or minor patch. Not too big an issue for smaller (~4-10GB) games but it gets frustrating with much larger ones.
[B]Revenge is motivation enough. At least it's honest...[/B]
Roleplayer; Esteemed Villain
[img]http://www.nodiatis.com/pub/5.jpg[/img]
Yo dawg, I heard you like plugins, so we put plugins in your plugins so you can plug in while you plug in.
<==========)===O|TtDd|O===(==========>
[url=http://cityoftitans.com/forum/toon-profiles-nnekonnin-llabanttselel-aalbusuumbra-aagimundr-sstaalsol-and-doctor]My original character profiles![/url]
[img]http://www.nodiatis.com/pub/26.jpg[/img]
Yo dawg, I heard you like memes about plugins...
[img]https://i.imgur.com/G8zc6hG.jpg[/img]
Charles Logan
www.cloganart.com
[img]https://img.memecdn.com/marvelous_o_7175790.jpg[/img]
"Let the past die. Kill it if you have to."
Anything that makes putting the game together easier in the long run sounds like a great investment to me! Hopefully it will pay out in the future!
I'm entirely fine with a few months worth of delayed progress if it means the game will be overall better. We've waited this long; I see no reason to rush it now.
An infinite number of tries doesn't mean that any one of those tries will succeed. I could flip an infinite number of pennies an infinite number of times and, barring genuine randomness, they will never come up "Waffles".
I feel you, rural Germany ain't better. First world country my a...donkey.
[url=https://www.youtube.com/watch?v=W_HUdf89hI8]Send out your signal, call in your hero
I kidnapped his lady, now his power's are zero.
[/url]
I started looking into the patching process to see if this really provides a benefit. I suspect it does:
https://docs.unrealengine.com/en-us/Engine/Deployment/Patching
-----------
[color=#FF0000]Senior Developer/Project Manager/Co-Founder... and then some.[/color]
Next question. Which I think has been answered to some degree already. Will custom plugins be allowed. IE I'm not a fan of the auction house plugin. Can I substitute my own? Perhaps a better question would be what sort things are a single plugin and would those be user editable, or would I have to create a plugin that attaches to the side of a particular module rather than substituting it directly.
Second Chance: https://store.missingworldsmedia.com/CityOfTitans/SecondChance/
Dev Tracker: http://cityoftitans.com/forum/fixing-dev-digest
Dev Comments: https://cityoftitans.com/forum/dev-comments
Plugins are on the developer side. You'd have to have the source code. We are trying to consider a way to provide for user mods though.
https://docs.unrealengine.com/en-us/Programming/Plugins
For us we see each plugin as another folder in the editor. I'd share a screenshot but I just discovered my image hosting is on the fritz.
-----------
[color=#FF0000]Senior Developer/Project Manager/Co-Founder... and then some.[/color]
Would it be too much of an "ask" to require EVERY Plugin used to be coded in such a way as to document up front (in programmer friendly language) inside the plugin what variables are needed for the Plugin to function correctly, and what function calls it makes for resources outside the Plugin's confines? That way, any time you've got a breakdown failure, you have an easy set of documentation to begin your regression tracing to figure out [b]What Went Wrong[/b].
Integration of elements is one of the trickiest things to manage once "everything's become spaghetti code" after a few years of maintenance. Furthermore, I'd sincerely hope that there would be something akin to a "permanent team" of devs devoted to [url=https://en.wikipedia.org/wiki/Code_refactoring]REFACTORING[/url] of the game's code so as to maintain it in a way that inhibits the evolution of code base instabilities in which the code functionally "gets away from" the people who are supposed to be working on it and maintaining it. Without guarding against future possibilities like this, it is all too easy to wind up in a place like where City of Heroes wound up, in which the Devs became AFRAID of touching the code base for fear of breaking any of an unknowable collection of interdependencies that were all undocumented. The way the Paragon Studios people described it, it was like trying to play [url=https://userscontent2.emaze.com/images/548cbfb1-119c-48ab-9387-737ceff65b3d/8bb66fdd31366e32aa15aa3820c8c4d0.jpg]Jenga[/url] with a stack that was [b]ON FIRE[/b] such that not only could any wrong move collapse the stack, but there was an instinctive reaction to flinch(!) any time you had to touch the (on fire!) stack, ruining any attempts at fine motor control.
Yes, doing this sort of "document everything in the Plugin" coding habit will cost more time and effort on the front end of development, but the Easy To Modify Perk (+10) that will result from it will save [i]way more time and effort[/i] in the future over the long haul, I'm thinking ... which is an important consideration for a game that you want to sustain and maintain for a decade (or more). Don't mortgage tomorrow in order to pay today's bills, and all that.
So ... would this sort of thing be a reasonable "ask" to implement as a standard coding (best) practice for implementation of your Plugin plans? Basically an "anything to declare?" documentation built into the Plugins themselves ...?
[center][img=44x100]https://i.imgur.com/sMUQ928.gif[/img]
[i]Verbogeny is one of many pleasurettes afforded a creatific thinkerizer.[/i][/center]
https://imgur.com/
[center][img=44x100]https://i.imgur.com/sMUQ928.gif[/img]
[i]Verbogeny is one of many pleasurettes afforded a creatific thinkerizer.[/i][/center]
Simple enough. We just add a document to the plugin folder. And all comments in Blueprints and Unreal C++ are a built in feature. Plugins that are shared by other plugins are usually just containers for common items like icons, sounds, images, etc. There will be some code ones but usually of a simple nature if we can help it. Just a collection of reusable components.
-----------
[color=#FF0000]Senior Developer/Project Manager/Co-Founder... and then some.[/color]
I'm my own image host. I accidentally forgot to renew my domain and I had to wait for a few hours before it propagated. Managed to wrangle out some discounts with my ISP (Google) and my web hosting company (Hosting 24) over it. I didn't ask for them but they gave them to me anyways. Doing my own hosting is much less of a headache and I usually buy subs for years at at time.
-----------
[color=#FF0000]Senior Developer/Project Manager/Co-Founder... and then some.[/color]
That's a lot of sandwiches man, jk! lol
"A sad spectacle. If they be inhabited, what a scope for misery and folly. If they be not inhabited, what a waste of space." ~ Thomas Carlyle
From a standpoint of eventual game quality, this sounds good.
From a fan standpoint, I have to tell you I read this update as "This is why we're going to delay the rollout of the game/chargen for like another 6 months or more in a future update." For the record, I never expected ANY of the soft deadlines to be met and am willing to wait for a GOOD game to be made, so please don't take that as a "HURRY UUUUUP!" comment, I just wanted it to be known that I took this update to mean that.
R.S.O. of Phoenix Rising
Interesting... I hadn't looked at it like that. I looked at it as "this is why it's taking so long guys, we area trying to do the best we can at every turn and when something that will help in longevity comes along you can bet its a delay, as we want all the longevity we can give you..."
But I may have read too deeply (or just flatly wrong) into it...
I hope it means this will help to speed up the entire process overall while possibly setting us back a lil bit at the beginning, which I too can handle... Though I am getting itchy to play again...
Lol again, as if it'll be the same game what am I thinking, this is gonna be so much more when it's up and running! yeah not at first but with updates and such, yeah for sure over time!
"A sad spectacle. If they be inhabited, what a scope for misery and folly. If they be not inhabited, what a waste of space." ~ Thomas Carlyle
We are hoping that it actually [i]speeds up[/i] the process. The setup takes a bit longer but it's time well spent.
-----------
[color=#FF0000]Senior Developer/Project Manager/Co-Founder... and then some.[/color]
Yes, in this case, the invested time should pay off in spades and, if anything, shorten delivery dates.
[center]--------------------------[/center]
[center][color=#ff0000]Interior Map Lead and UI Designer[/color][/center]
We spent 40 years building the ultimate AI that can now build the game...
I tease.
This reminds me of a cartoon where a coder automates a task and spends time troubleshooting the code where as the "idiot" manually does all the work. In the end the coder and the manual laborer accomplish the task in the same amount of time. Obviously there is a longer term benefit to figuring out how to automate the process the first time that isn't documented in the cartoon. The second time the task has to be completed it's done comparatively instantly.
Second Chance: https://store.missingworldsmedia.com/CityOfTitans/SecondChance/
Dev Tracker: http://cityoftitans.com/forum/fixing-dev-digest
Dev Comments: https://cityoftitans.com/forum/dev-comments
Note to self: remove Skynet from mailing list for updates ...
[center][img=44x100]https://i.imgur.com/sMUQ928.gif[/img]
[i]Verbogeny is one of many pleasurettes afforded a creatific thinkerizer.[/i][/center]
Got a weird spam email this morning, something about a highway planned to go in, title was "Really Important But Why Bother", then about a minute later a text message that just said "brign towull 2 launch".
Maybe check in case the server needs to be relocated...
Down in the basement, in an unused lavatory, with a sign marked, "Beware of the leopard"?
BTW, I think the last word in that text is spelled correctly.
Foradain, Mage of Phoenix Rising.
[url=https://cityoftitans.com/forum/foradains-character-conclave]Foradain's Character Conclave[/url]
.
Avatar courtesy of [s]Satellite9[/s] [url=https://www.instagram.com/irezoomie/]Irezoomie[/url]
I miss Douglas Adams
-----------
[color=#FF0000]Senior Developer/Project Manager/Co-Founder... and then some.[/color]
May his soul have a long, dark tea time.
Skynet is the name of the VPN server at my work place....
"Skynet" is also the name that Chinese Social Credit engineers have used for a portion of their upcoming systems and for years the British have been using a system they call Skynet as part of their homeland defense monitoring system.
Basically we're already screwed...
CoH player from April 25, 2004 to November 30, 2012
[IMG=400x225]https://i.imgur.com/NHUthWM.jpeg[/IMG]