###### tags: `Guide To Contibuting` # Introduction So it seems from talking to people that the byond guide and git guides aren't very easy to read and understand.. either that, or people are too scared to read them. Regardless, we're going to compile some of our knowledge about this stuff into a hopefully not too hard to read crash course guide... ## Spriters? Mappers? Your sections are at the bottom of the list. That said, I **highly** recommend you read the code sections too, because you **cannot always avoid code while doing this.** Code and sprites/maps work together. ## IMPORTANT <https://secure.byond.com/docs/ref/index.html> This is the BYOND ref. Somewhere in the middle of reading this, perhaps after the first sections, you should take a parse at it. There's a lot of useful things. Now. This guide can't possibly cover everything. If you need help, ask around in the dev channel, *experiment.* We all were new once. We all broke the server horribly at one point. The maintainers break the servers weekly. Get used to it, don't be afraid to break things. No one expects perfection, only that you give an earnest attempt (and test your code locally!) ## WARNING - This guide is written by 1-2 people - The opinions in this aren't absolute. You'll maybe find better ways to do things. IF you can justify why, by all means, do what you want. - Even by codebase, this is far more impacted by /tg/station than, say, baystation. - The rest of BYOND continues to think that SS13 coders are universally deranged. The reality is that they don't need to structure to this level *because their games are not as complex in interaction as ours.* There is a reason we do everything we do, so follow along. - The guide isn't necessarily 100% accurate in the more advanced sections. BYOND constantly changes and this is from the perspective of a single coder. - **THIS GUIDE ACTIVELY RECOMMENDS GOING AGAINST GENERAL PROGRAMMING PRACTICE.** - BYOND is not a normal language. - Normally, you want things like, say, new Stack(), new Queue(), etc. We explicitly go against overly doing object-oriented-programming at lower levels because **BYOND has insane performance overhead for certain things.** - If you go on to code another language, **remember that this guide only applies to this language, for /tg/code like servers.** We sacrifice a lot of structure for raw performance. - I said /tg/code for a reason, as non /tg/-like codebases tend to operate very differently! ## Sections - Split into a few sections: - **Getting Started** - Read everything if you're new, it contains setup instructions. - **Coding** - Basics of the BYOND language, crash course to programming in general. - **Citadel Development** - More intermediate concepts, and getting you up to speed to start making PRs. BYOND's builtin stuff are sometimes awful and a lot of code concepts you see around other BYOND games are verboten here because of how terrible they are, so we include a few sections on how to code *right*, rather than just how to make it compile and "work". - **BYOND Internals** - Advanced concepts. **Give it a read.** It's not that hard. - BYOND is an antiquated and slow engine. - You won't need the concepts in these for most things, but if you start coding complicated things, you absolutely should read this. It'll help you write optimized code and hopefully be able to pull off insane pipe dreams. - **Spriting** - Spriters, go here. - **Mapping** - MAppers, go here.