Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Practical Guide to the Feature Freeze of December 2014 and Contribution in General
- Well, hello there spaceman ! I hope you are enjoying our code (of course you aren't). We have decided to perform a feature freeze starting the 14th of December 2014 and spanning to the 28th of December of 2014. What does it mean ?
- - There will be no new features. As in, none !
- - This is set to two weeks, but if we don't fix shit we might end up in a permanent feature freeze. Wouldn't want that, now would we ?
- - You have a role to play. Yes, you !
- Here are the things you can do to help and not be a faggot like everyone else, in neatly organized categories
- I) Contributing and Fixing
- If you have the talent, you can simply contribute. You don't need to be a professional artist, or a talented C++ coder, or even able to use a computer beyond running .exe files and using a keyboard. You just need a bit of smart to spare and a lot of resolve !
- Now, let's see what you can do to help. It's not that hard, you'll just have to focus !
- Note : You will need the links for the rest of this guide :
- - Our Serbia's IP. You have it already. Test tends to be down, so don't rely on it
- - Our codebase. It's on Github. You're looking for https://github.com/d3athrow/vgstation13/tree/Bleeding-Edge
- - Our wiki. It has some basic coding guides and a lot of game ressources. It's over at http://ss13.nexisonline.net/wiki/Main_Page
- - Our IRC. #vgstation on Rizon. Just log in, expect inactivity. If you have a pressing question, ping coders who should be online on that timezone, but don't be a faggot we might be busy or away
- I-1) Coding
- Do you wish to play the main part in unfucking the code by actually unfucking the code ? Good. This is no easy thing to pick up, but you'll find Dreammaker, while being a horror show to any semi-competent coder, is very welcoming for people who just never learned coding
- First of all, you need to know what you're getting into. Space Station 13 is a game, born sometimes before 2003 from 'the original coder' exadev1 and then revived by the Goons from Something Awful. It's written in Dreammaker, and was made public quite a few years ago. For not too long, but long enough for the /tg/ codebase to split from Goon. Then Bay, a heavy RP server, split, and from things more or least related to Bustatime we split out codebase from Bay sometimes around 2013. And here we are !
- Dreammaker is a very simple codebase, but it has some pretty serious technicalities and some obvious limitations. It will not be this guide's role to get you on your way to coding like a pro since coding is an extremely extensive topic, but I'll steer you the right way. Just know that our code is absolutely awful, a mound of crap that has been building up for more than 10 years, and sadly soon to be 15 fucking years. Sometimes that mound of crap collapses, and that's when we rebuild solid foundations, not without a lot of pain
- All you need to know is how to code and how to publish code changes. To code, you'll need to search your BYOND installation for a tool named Dreammaker, then open our source code in Dreammaker using the Open Environement command in the menu. To publish your code and get our source code, get the link to our repository and clone it (follow the instructions on Github's website and our wiki). If you aren't vey technical, use the Github Native App (Github for Windowsg generally), otherwise use the .git prompt to look like a pro. In all cases, do your editing to Bleeding-Edge and create new branches before pushing changes. Good luck
- One more thing : As soon as you open the .dme, go into Build > Preferences and disable automatic FILE_DIR generation. Then, wait a bit and remove all .dme modifications. If you don't you'll cause problems when you actually pull your changes. You can also opt to not push your .dme, but it might be counter-productive on the long run, especially if you add files because they have to be included to compile, and the .dme tells the program just that
- I-2) Spriting
- Maybe slamming words in a huge complicated text box isn't your thing, and maybe you prefer to draw pretty pictures. Luckily for you, BYOND 'art' is also simple. It's 16p (for 16x16 pixels), so basically small-scale pixel art. Even though we have went a long way since the original Exadev1 Space Station 13 (just you dare ask about Oldstation and the 'coder art'), this whole game would be nothing without good sprites. You can improve current sprites (if it's good, you are basically guaranteed to be useful) or create new sprites (which will need a coder to be used). Either way, there's always work to be done !
- Now, you will also need Dreammaker, Github and the Bleeding-Edge branch much like coding to get anything done, but since spriting is much simpler technicalities-wise I will provide a more in-depth guide. Outside of some very badly placed sprites and WIP content (which is under WorkInProgress), all icons are under the icons superfolder. There you'll find EVERYTHING in the game. To edit, simply click on the thumbnail (clicking on the name edits the name) and get drawing. Get used to the tools and the ambivalently average color palette system !
- If you are any good, you'll then get to move onto directional sprites and animated sprites. For animation, there's no magic formula. Set frame delay and get drawing. Animated anything is always better, no exceptions, and absolutely everyone will love you for it. As for directional sprites, they are required for anything that can face in any particular directions (generally mobs, anything mobs can hold and structures, but not exclusively). Dreammaker provides in-built and surprisingly efficient swap tools that will work in a pinch, but they can't draw for you, so don't get lazy !
- I-3) Mapping
- While mapping is very often linked to coding (and rarely to spriting unless you are adding some sort of decoration prop or mass-modifying a specific sprite), it is its own little universe. Dreammaker has a rather decent map tool, but it needs a supplementary toolset to work correctly, one which I will introduce you to further below. First thing to know, you need the latest map version and only one change can happen to the same version of the map at once, no exceptions
- To start mapping, open the source code repository and open the aptly-named maptools folder. In there, two command lines will be of interest. Make sure your repository is on Bleeding-Edge and updated, and run prepare-map. Then, get mapping. Once your changes are in, save and run clean-map. As long as you follow this simple guideline, nothing bad can happen
- As for modifying the map, there's a lot of specificities you'll learn from this trade, but let's stick to the simple stuff. To remove all those pesky area icons, you'll need to go into the Layers menu and click 'Only Show Selectable Layers' to enable hiding on deselect. Then, deselect Area. You usually won't need to deselect the rest, but can try to get an idea of what atom trees are present on the map
- All your work will be done in the Objects tab. Let the map generate (you need to open tgstation.dmm, if you couldn't tell by it being the only one selected for compiling). From there, you have three modes. Adding lets you add (and remove) stuff, Select lets you move stuff and generally click around without disasters, and Fill will usually not be used but can be used to mass-replace an area quickly for any reason that might be
- Right-clicking lets you edit things more in depth, notably allowing you to make something an active object for easy placement or replacement (otherwise you'll have to use the objects tree, which is not always logical) and edit an item's variables (Be very careful. Do not ever edit step_, use pixel_ instead for displacing). In Add mode, Alt lets you automatically place items in non-grid mode (be careful with it, edit your var afterwards to make sure pixel_ is good and step_ wasn't touched), Ctrl lets you add an item without replacing (If you add something everything else of the same object tree on the tile will be dumped. Good for area/, turf/ and generally mob/, extremely bad for /obj). Shift lets you remove the top item on a tile (good to rewire and repipe long areas, but be careful on what you are doing)
- Remember to take a screenshot of your changes, you'll need it to get your pull request through !
- I-4) Wiki Editing
- Coding not for you ? Dreammaker too complicated ? Github giving you itches ? Don't worry, you can still contribute directly ! Follow the wiki link, and create an account. Then, just browse the wiki. Your job is to improve everything, create resources that don't exist and tag resources that are obsolete for removal (bug N3X15 on the IRC to delete them). All you need to have is a taste for long, meticulous work, a fairly robust knowledge of the game under the /vg/station codebase (being able to load the code, even just to read and fact-check makes the difference between a good and great wiki page) and the editing skills of at least a high-school dropout (better is better)
- We need a bit of everything around here. Know how to do something nicely but not a single reference on the wiki ? Create a guide or improve an existing one ! Icon outdated, or shitty quality or just not here ? Get your favorite Paint tool, rip the .dmi and save it as a .png (or .gif if animated, see online tools through Google), and get shit done ! Can you into English very good ? Then improve the content itself, be the Grammar-Nazi every self-respecting wikia needs
- Usually, it's nice to show the changes by dropping the page (once edited) on the IRC for a quick review (or in OOC if you want more diverse scrutiny). Some people might check the Recent Changes tab, but this way you'll be set faster
- II) Reporting and Helping
- So, you drool every time you see something not written in plain English and even remotely looking like code, you have never went beyond the step of drawing pretty houses with a big sun and a funny stick man on MS Paint art-wise, you can't add one table to the map without raping absolutely everything that is dear to the playerbase and you can't type more than 5 paragraphs in a box without getting an aneurysm ? You're a sorry sack of shit, but you can still be useful and help ! Let's get started
- II-1) Testing
- So, you've managed to load up and set up Dreammaker with our source code, but you puked all over your keyboard when you opened an actual code file and Github is acting uppity ? You've went further than 90 % of players, and you can be more useful than them. Time to test !
- First of all, go into your source code and copy-paste both admins text file from config-example to config. Add your name and a host rank. Then, compile (not clean compile) the code, then run it. That's it ! Click Yes (or if you are smart, click yes once then mash Enter). Pause for the step after moderators (should be job_something, clicking yes on it too quickly will crash your local server, you'll know from trial by error usually). Once the server starts up, you'll have admin powers for testing purposes. Click yes to two more prompts, close the changelog and let all the crap in the background process. Then, you're set. Observe (or ready up as Assistant) and go into Server > Start (in your in-game tabs). Check for shit to test at https://github.com/d3athrow/vgstation13/issues, try things to add to the wiki, or help us find issues. Anything goes ! You'll have to be used to the admin panels, but I'm sure you can manage it !
- II-2) Reporting
- Okay, so. You just can't into Dreammaker, at all ? Well then, here goes your dreams of directly contributing. However, all your dreams of helping the server's codebase grow and strengthen aren't smashed yet. Remember the https://github.com/d3athrow/vgstation13/issues link ? Well, guess what, if you find an issue in-game, the coders might not know about it. Sure, you could whine about it in OOC or the thread, but coders competent enough to fix an issue might miss it. Then, your issue has to have the basic qualities required to be treated properly. Below are all the issues you should report, by category :
- II-2A) Code Issues
- Oh noes, those damn coders messed up something again ! Maybe an item is completely broken and does nothing, maybe a type of closet is acting very oddly when opened, or maybe your sword of justice has a typo in its attack message. No matter the issue, it is always worth reporting, period. Even if 'no-one seems to be fixing it', even if it's minor or barely much more than a feature request, even if the entire server shat itself and people are screaming on the thread about it, open an issue ticket ! Here's what we'll expect :
- - The item(s)/system(s)/action(s) in question. If your dark edgy sword of death is acting oddly, make sure we know what item we're looking for. At the very least, give us the full, correct name without typo. Odds are we'll find it from the map or with a CTRL+F search in the code, don't make us waste tons of time on finding 'that thing you talk into' or 'a gun'. If you feel it is a group of items (all tools, machinery) or a system (ZAS a.k.a the atmospherics simulation or zone-based atmospherics, the powernet, etc...), precise it but remember to tell us for what items/in what circumstances the problem happened
- - What fucking happened, including any unexpected things that happened or expected things that didn't. If it dumped anything, from a weird debug/OOC string to deleting the item from your hands or exploding, this will be extremely important for us. If you can narrow down the time where the item broke, we might be able to exploit the logs to find any debug/adminpm dump
- - A quick categorization of the problem. We don't expect you to tell us if you think the problem comes from the Bump() or Attack_AI() procs, but we'd like you to do the basic thinking for us. How severe (from a quirk to game/server breaking, no need for all caps), what 'category' of glitch (missing action, glitched sprite, player crash, oddity, typo) and any precision that may help (screenshot, log copy-paste, since you aren't actually fixing it you likely won't have access to the source code, but if you do you might as well fix the code)
- - Have even a sliver of respect. I know it's 4chin and we're all edgy darklords and hating on the badmins and the coders is edgy and cool, but seeing a huge screen full of nonsensical all-caps rambling, face-biting irony and caustic insults because said problem crashed the server 'one too many times' or raped you in the face during your antag roll or validhunting round makes us much more likely to ignore your poor excuse of a report if it's not important, or throw you off to the side and handle things ourselves if it seems important. Shitting up the thread is equivalent, no need to have twenty people screaming at us to fix shit, open an issue report and be patient
- II-2B) Sprites Issues
- If you have taken notice of the notes above, you already about know how to make a proper issue. Sprites Issues tend to be similar. Just know a few things : Broken sprites are never as urgent as broken code (see coder art), good spriters are rarer than good coder, and generally your issue will be postponed. If you want a new kick ass sprite, expect to wait for a long time, if not forever (having actual suggestions to give helps things). If the sprite is absolute garbage, a spriter will likely beam down from heaven in a few days' time to fix this shit
- II-2C) Map Issues
- Map issues follow the same basic rules, again, but have a lot more particularities. You don't handle a map problem the same way as a code problem, and as thus the information we need is not the same :
- - Tell us what map is broken. Odds are it's Boxstation (tgstation.dmm). If you are talking about Defficiency or Metaclub and you just tell us 'The Bar needs more lights', we'll check Boxstation and tell you 'There's enough lights, close the issue'. Precising that the map is Box is usually not needed, and adding a Defficiency or Metaclub tag in the issue title is common practice
- - Make damn sure it's a map issue, and not a code issue, and be absolutely sure the map wasn't altered during the round. A common way to make sure this isn't the case is to Observe in the Lobby or run a Test Server. Asking the admins may help too, they ought to know if shit is broken or if it was messed with
- - Suggestions alone are a feature request, period. If shit is broken, you are welcome to suggest a fix, but don't expect much celerity if you open an issue saying 'It'd be nice if there were X !'
- - Screenshots help. If it's structural (some weird shit like a missing floor or wall, a unconnected pipe or wire, missing objects or clearly overriden tiles, badly positioned objects, etc...), just take a still. If it's technical (broken pipe loop, access level problem), take multiple screenshots or take a good screenshot and get writing to describe the problem
- - Mapping issues take time to fix because pulling mapping changes can often be uppity, but if you don't report issues, they will never be fixed. Period. The map doesn't fail to compile, ever, even if it's turned into garbage
- II-2D) Wiki Issues
- If the wiki has a serious problem (broken pages and template, downtime, high-scale vandalism), ping N3X15 or D3athrow on the IRC to get it fixed (or whine really loudly in the thread). If the issue is with the contents of the pages themselves, create an account and hit that fucking edit button, get writing. If you find typing on a keyboard abhorrent or you don't have any more knowledge on the subject than the wiki article gives you, start up a calm, civil discussion on the thread to gather info or possibly woe a concerned and bored player into doing the editing for you
- II-3) Playing
- Good job, this is the consolation prize. By playing and not being a massive, whiny shitler like every other player either, you are making this server live and give a sense to all the effort we put into coding, mapping, spriting, editing the wiki and administrating ! Now, give yourself a pat in the back, and get doing -quality- playing, or re-read and find something even more worthwhile to do
- We are counting on you ! Good luck
Advertisement
Add Comment
Please, Sign In to add comment