Announcement

Collapse
No announcement yet.

Software Architecture and Project Workflow - Questions for Developers

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    Software Architecture and Project Workflow - Questions for Developers

    Hey guys!
    Our team consists of Indie Game Developers and recently we realized our codebase was getting ugly and unmanageable and also that our workflow wasn't going so well.
    So we're starting this initiative - We are reaching out to every developer before starting to make some decisions here;
    Also: I'd like To consult you guys on how your teams work in aspects such as workflow and software architecture.

    We believe this post will be of use for every developer dealing with these important issues in the future.
    We believe we can gather as much of the knowledge from the community as possible about these issues onto this post.

    So here we go!

    On Workflow - How do you Deal with:
    [In the context of a team of many programmers and many artists/content-creators]

    - Version Control your Code and Content Assets

    - Deal with Continuous Integration

    - Document your Software

    - Do Automated Tests


    On Architecture - How do you Deal with:

    Modifiability - The Ability for the System to Change with Ease and to Make Changes with minimum Risk and Cost.
    Performance - The Ability of the System to Perform Well even under Heavy-Load
    Testability - The Ability to produce Quality Bug-Free code with Ease
    Usability - The Ability of the System to be Easy to Use (By programmers)

    Bonus: How do you Deal with Dependency Injection?

    Interoperability - The Ability to communicate with other systems and tools
    Availability - The Ability to recover from Runtime-Crashes or Pipeline-Crashes
    Security - The Ability to resist user’s exploitations and protect the Customer from such Attacks.


    EDIT: We are not a Startup, we are Indie Developers.
    Last edited by Gbr; 10-27-2016, 10:31 AM.

    #2
    To be blunt, if you're a software startup and you don't have somebody that can answer those questions already then you don't have the right people on board.

    I would suggest finding an experienced Development Lead/Manager to help get you on the right track.

    Comment


      #3
      Hi mid_gen, my mistake, we are not a Startup. I'm going to change it in the original post.
      We are Indie Developers, with unproven and untested people.

      This is a big change of scope, but still I'd love to hear your opinion about it!

      Comment


        #4
        Hmm well you've asked a very broad question, pretty much "How do you develop software"

        - Version Control your Code and Content Assets
        Perforce, Git or similar

        - Deal with Continuous Integration
        Jenkins? I haven't used it for UE but should work fine

        - Document your Software
        Wiki for design docs. Self-documenting and commented code. Naming conventions.

        - Do Automated Tests
        Depends on your game, does it have a lot of systems? Complicated economy? Tests may be important. First person shooter? Not so much.

        On Architecture - How do you Deal with:

        Modifiability - The Ability for the System to Change with Ease and to Make Changes with minimum Risk and Cost.
        Performance - The Ability of the System to Perform Well even under Heavy-Load
        Testability - The Ability to produce Quality Bug-Free code with Ease
        Usability - The Ability of the System to be Easy to Use (By programmers)
        This is all very generic software development/engineering best practice. Not something that can be answered piecemeal on a forum really.

        Interoperability - The Ability to communicate with other systems and tools
        Largely not an issue with games, not clients anyway. If you have a back-end that needs to interop, then usual architecture best practices apply.

        Availability - The Ability to recover from Runtime-Crashes or Pipeline-Crashes
        Server only...depends on the game. If a FPS server crashes? So what, just fire it up again. Need a fault-tolerant back-end for an MMO? That's a whole profession in itself.

        Security - The Ability to resist user’s exploitations and protect the Customer from such Attacks.
        A whole profession in itself, assuming you're talking about back-end security. Cheat prevention is another, very comprehensive subject on it's own.

        Comment


          #5
          A lot of what you mentioned could simply be solved by good programming practice (and a lot of patience!). How much experience do the programmers have on your team? You could honestly almost write a small book on all of these subjects and there best practices. If you are looking to educate your team quickly, I would consider using a service like Pluralsight. They have some good content on there for both beginners and professionals a like. Plus I find the format in which the lessons are presented help you pick up concepts faster than reading a book. The important thing however is to get a good grasp on the core concepts and fundamentals of programming development. You don't necessarily need to know every advanced programming concept. get good at the basics and that will win you half the battle. That will also make picking up the more advanced topics easier.
          Programming today is a race between software engineers striving to build
          bigger and better idiot-proof programs, and the Universe trying to produce
          bigger and better idiots. So far, the Universe is winning. (Rich Cook)

          Comment

          Working...
          X