I have been thinking about what I can add to my servers that hasn’t been done before and things that people would enjoy, and I came up with a list of 42+ things. All of these items are going to be big coding jobs but I want these to be released as soon as possible. My issue is I guess my speed and doing stuff always on my own. I am just trying to figure out how can I get all of these big projects done in a month or 2. One of which is going to require a lot of modeling.
Might be a good idea to do the smallest/easiest ones first to get them out of the way
Also writing up a todo list for each project and constantly updating it helps a lot.
Comment your code. And keep it organized as fuck.
Depending on what it is you’re making and the amount of skill you have, most of it is just tedious hacking away at the keyboard with no real effort. For me, getting things done fast just requires me to focus (this is hard for me )
As long as I can do it within a day, I should be able to create it. Anything longer, I’ll lose focus…
I typically make the functions work by whatever means then make them efficient. Thats what i did for my 700 line project.
Once I get started on something and there’s no noisy things going on around me, I completely forget about time and just get completely into the project.
This to the great annoyance of friends, who no longer get any answers on steam simply because I don’t hear it
I’ve never had this issue of “being slow”, do you give up often or what?
Nah I never give up I just jump around a lot. Like I started coding this huge economy mod then jumped to custom plants, then i jumped to diseases, then I jumped to a mailing system and then I jumped to reworking the hud.
I have a problem of working on one project, then that one reminds me of another and I go work on that and get off track, but if I only have one project in mind I can just pump up the music and code until my stomach or bladder tells me I need to stop for a bit.
and you want to be sure you know what each file do. Make the name of each luafile relevant to what it dos, so its easier to edit or add new functions.
“sv_player.lua” = Serverside Playerstuff
“sh_moneysystem” = Shared MoneySystem
“cl_menu” = Clientside Menu
You want to be sure you can reopen that lua file and remember what it do.
I hire somebody else to do it.
Do chunks of your project. Don’t jump from one thing to another without finishing the previous.
Prioritize bugfixes over adding features.
Constantly playtest your project, preferably with other people.
Format your code properly.
Make your code re-usable. Essentially, any where you’d otherwise repeat code, make a helper-function out of it. Create “building blocks” and use those with your project.
If you want some examples, I am working on releasing a large portion of my library over time into a skeletonized developer base game-mode ( essentially an autoloader, plus helper-functions, meta-tables, enumerations, CONSTs, hot-fixes, etc… ).
I’ll be writing a proper readme soon. Until then, here’s the info on it:
If you want something to make development easier use this: https://bitbucket.org/Acecool/acecooldev_base/src/
rename the folder, the txt file, and the name at the top of the txt file in quotes. Then, drag and drop files.
You can create the folder structure by typing install in console; or download and extract this in the gm folder: https://dl.dropboxusercontent.com/u/26074909/tutoring/_redistributable/acecooldev_base_folder_struct.rar
Folder structure: https://dl.dropboxusercontent.com/u/26074909/tutoring/_redistributable/acecooldev_base/documentation/folder_structure_and_how_to_use_it.txt
File loading options: https://dl.dropboxusercontent.com/u/26074909/tutoring/_redistributable/acecooldev_base/documentation/file_recursive_inclusions.txt
Basically, client/ server/ and shared/ folders update the realm state in the recursive loading function meaning when one of those folders is opened, they will load in the relevant realm unless the filename contains information telling it to load into a different realm or not at all ( x_.lua, x.lua and _x.lua )…
maps/ folders load maps/<map_name>/* on OnReloaded and InitPostEntity so that if you spawn entities, it won’t change the EntIndex value of map entities so that a hash-map can be used to remove existing entities with this: https://dl.dropboxusercontent.com/u/26074909/tutoring/entities/entity_getid_mapping_system.lua.html
This is my game-mode and how files are loaded: https://dl.dropboxusercontent.com/u/26074909/tutoring/_file_structure/files_order.txt
Take note as to what was said above and look at files changing the realm they’re loaded in on the fly in a shared/ folder.
 = [SHARED] :: gamemode/shared/classes/elevator/_sh_elevator.lua  = [CLIENT] :: gamemode/shared/classes/elevator/cl_elevator.lua  = [SERVER] :: gamemode/shared/classes/elevator/sv_elevator.lua  = [SHARED] :: gamemode/shared/classes/jobs/_class_jobs.lua  = [SERVER] :: gamemode/shared/classes/jobs/_sv_class_jobs.lua  = [SHARED] :: gamemode/shared/classes/networking/_sh_networking.lua  = [CLIENT] :: gamemode/shared/classes/networking/cl_networking.lua  = [SERVER] :: gamemode/shared/classes/networking/sv_networking.lua  = [SHARED] :: gamemode/shared/classes/npc/_sh_npc.lua  = [CLIENT] :: gamemode/shared/classes/npc/cl_npc.lua  = [SERVER] :: gamemode/shared/classes/npc/sv_npc.lua  = [SHARED] :: gamemode/shared/classes/class_bullets.lua  = [SHARED] :: gamemode/shared/classes/class_card.lua  = [SHARED] :: gamemode/shared/classes/class_cards.lua
It just makes it easier to group like files together and load it into a specific realm.
Unlimited folder nesting is supported… It is as easy and dragging and dropping files into folders.
Also, you can disable auto-refresh with the autoloader; just type loadgm to refresh the game-mode. If you add a new file, type loadgm and save the new file once to have it detected ( with autorefresh on ). It works in Linux too, without autorefresh! I’ll be adding a lot of things to the bitbucket such as helper-functions, wrappers, metatable objects / “classes”, etc… Basically, it makes it easy to make a new game-mode by providing a lot of the building blocks, or with the simple system ( just using the auto-loader ) to make file-loading easy without having to mess with AddCSLuaFile or include functions.