What does a person need to code a complete co source?

03/24/2017 20:40 Anubis~#1
I've been studying the CCNA Routing and Switching for networks for two months now and I think I have a good knowledge around the connectivity between devices, servers and clients, packets and networking protocols.
And thanks to my academic studies 'Computer Science major' I have some knowledge with basic programming "well, not experienced with it but just basics" and I also have a web, hybrid mobile applications design and development experience using HTML5/CSS3/JQuery/AngularJS/Generally Javascript.
So I was just wondering if these skills might help me develop my own Conquer Online source from the very beginning starting with the architecture and analysis to the implementation and testing. And if they might not, what do I lack? What should I learn in order for me to gain the ability to design such systems?

Regards
03/24/2017 21:02 pro4never#2
A good understanding of program design, database and network management, threading/asynchronous code and that's about it.

If you're confident writing medium sized systems from scratch that can handle many users at once across a network connection then you're good to go really. The main hurdle is not some mystical subset of complex programming but rather your competence at designing larger scale systems to work together. How will logic flow through your program and how will players be effected by your decisions.



That being said, you didnt mention any programming languages... while you could theoretically write an entire conquer server in PHP, it would be a hideous mess to try to manage. I'd strongly recommend a good understanding of whatever language you want to use and to choose a language that fits the task. C#, C++, Java are all very common and good example languages to use. Go, D# and a few others have been used in the community with good success as well. You're mostly describing web and front end scripting languages though which could cause a bit of a learning hurdle for you but nothing crazy.


The thing that will probably trip you up is needing to understand the conquer 'protocol' at a relatively deep level. How does the client expect the server to act, how do all the client files link together, how does each game system work (from a programmers standpoint), etc.