# So... I'm a Molecular Biologist....

This topic is 1291 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I'm going to have to admit this is my first post here.  I am an educator interested in Serious Educational Games (SEGs) and the last time I had any involvement in coding was over 10 years ago during a Computer Programming summer camp I went to as a highschool student.  (Wow, that tells you a lot about me...)  I'm coming to this forum because I have no idea where to even start learning / reaching out to experts and I was hoping someone here could point me in the right direction.

I have an idea for a puzzle game that would be similiar to a physics puzzle game (Angry Birds, Crayon Physics Deluxe, The Incredible Machine, etc.) but instead of being based on physics principles, it would be based more on biochemistry principles.  (e.g. Foldit  http://fold.it ).  Except it wouldn't be a biochemistry puzzle game like Foldit is, but rather a Molecular Biology Puzzle Game.  For want of a better metaphor, Foldit is to me as a molecular biologist what Brownian motion is to a Physics game engine.  Extremely important but a logistical nightmare.

In the process of creating this game, I am ALSO interested in creating a piece of programing that would allow future programers to plug the piece of programing into future programs, like a Physics Engine, only for Molecular Biology.  That way, future SEG programmers could simply reuse the Molecular Biology aspect in other contexts.  However, I'm beginning to think that, as I read, creating a library that could be integrated into (is compatable with?) a Physics Engine that is already out there might be more appropriate.  Thoughts?  Suggestions of questions I should be asking myself?

The other thing that I need a little direction on is what sort of information is needed for the programming process.  Accurate protein folding / protein-protein interaction based on realistic calculations requires massive amounts of computing power ( hence things like http://folding.stanford.edu/ ).  Obviously this will not work for a simple puzzle game designed for your iphone.  Therefore, these calculations either need to be made much more simple, or converted into a rule based system of interaction (for instance, if X bumps into Y, Y is activated).  An example of the sorts of interactions I'm talking about:

( skip to :20 )  Any suggestions on the sorts of questions that I need to be asking myself regarding this conversion of 'molecular movie' into code would also be greatly appreciated.

Thanks!

Edited by SGC

##### Share on other sites

Thanks Lactose, I had not run across that game.  Mention of any other educational games along these lines would be welcome.  I'm having a hard time finding anything that is nearly all text based.

Edited by SGC

##### Share on other sites

edit*

Edited by Misantes

##### Share on other sites

Hi; I'm also an educator interested in SEGs (although my SEGs aren't videogames and my videogames aren't S and only tangentially E.)  As some good news for you, it's easier than ever to code a game; there are lots of engines and libraries and many are free.  (I don't know the gamut so I'll refrain from recommending one.)

My advice is to concentrate on producing a minimal viable product before branching out further.  Save the thoughts of libraries and future work for once you've figured out whether anyone cares.  (I'm not saying that to be harsh; I mean that your first job is to set up an experiment that asks questions like "Is the core gameplay loop actually fun?" and "Is there an audience for this?")  I'd recommend starting out making a 2d game, with basic graphics and a simplified simulation.  If it's fun when simple, it'll probably be fun when complex.  If it's not fun, fix this first before worrying about (for example) accurate biochemistry, 3d, etc.

I'm not sure whether you're asking about Design as well.  If you're new to game design, too, there are a lot of questions to be asking yourself.  (Get a copy of The Art of Game Design by Jesse Schnell; there are hundreds of questions in there that you can/should ask about your game design.)  I can discuss more about educational game design but this might not be the forum for it.

##### Share on other sites

Question 1: I want to make a game, what do I do?

Well, someone needs to know how to program on your team. Right now, your team is...You. You have some 10 year old programming knowledge which is better than nothing, but that's a far way off from a game developer. So either start learning how to program, or find a programmer to join your team.

If you're going to learn to program yourself, you'll have to pick a language. I'll suggest C# since you can get Visual Studio Express (a compiler and integrated development environment) for free and C# seems to be a popular starting language these days. Find some C# tutorials and start working your way through them. Once you get the basics down, you're ready to move on to a framework that makes drawing things to the screen and moving them around way easier. I'll suggest Unity or MonoGame since they also have a free option and start learning how to use them.

If you're going to add a programmer to your team, you're probably going to have to pay him on a milestone basis. You might be able to convince this hypothetical programmer to do this work for a cut of the profits, but probably not. Ideas are cheap, and most programmers have other things they can be doing for money. :)

Question 2: I want to make a game about folding proteins, any suggestions?

1. It's too early to worry about this just yet, so don't. Don't try to jump into your dream 3d protein folding awesomeness as your first project. You will get overwhelmed and likely get very demotivated. Instead, make some other simple practice games. Here is a great article that tells you which games you should work on and why:

http://www.gamedev.net/page/resources/_/technical/game-programming/your-first-step-to-game-development-starts-here-r2976

2. I watched the video and even though I just told you it's too early to worry about this, I wanted to tell you about my ideas. :) I saw 3d blobby shapes, twisting, folding, and rotating. How are your 3d modelling skills? What about your 3d math skills? Even if you have both of those skills where they need to be, what would the player be doing during all this? If they have to manipulate or build their own proteins, this would be pretty complex. You'd have to design and code some kind of intuitive UI almost like a 3d modeler for that task. And I would guess that many people wouldn't be able to "play" the game from this 3d complexity. Plus, you said the formulas for this were crazy complex on top of  all that.

If this is an educational game, I think the concepts are more important than the specific details. So I would abstract these concepts out to 2d and come up with game play elements based on them. I'm picturing Tetris like blocks connected with hinges. Players could design their own proteins, or receptors, or blockers by connecting pieces together. The UI for this would be much simpler, and I think players would have a much easier time predicting what will happen to these simpler 2d shapes bending on hinge points.

But that is a long way off. :) To summarize a rough plan, with VERY rough time estimates.

1. Learn to program. (1-2 months)

2. Learn a framework  (1-2 months)

3. Write some simple games (3-6 months)

4. Make your protein folding game (6-12 months)

5. Sell your game to the masses for a blue-gillion dollars!

Good luck,

- Eck

##### Share on other sites

I guess I need to clear a few things up: I'm not planning on the initial version being complex, 3D or anything like that. Neither am I trying to code it myself.

What I'm trying to be able to do is communicate what I want to a programmer using the correct terminology.

I guess what I am looking for is a general survey of technical terms and what they are capable of doing, I.e. The pros and cons. Wikipedia is a little too tech speak heavy for me when I try to read about game engines and I'm getting overwhelmed with options.

I figure I would try to get the game coded in C++ and for mobile devices, but I want it to be as cross platform compatible as possible and the code to be as open source as possible. I'm not sure what my options are in that regard.

I'm also not sure what my options are in regards to actually coding the information. I guess they can be math based or rule based (if/then type stuff)? Is there any other way to encode the information?

I understand that there is underlying game mechanics and then there is a user interface on top of that (generally), but I am unsure how to say that in technical terms and what my options are in that regard.

Etc, etc.

##### Share on other sites

There is a difference between making a game that is based on molecular chemistry mechanics and creating a library that can be used by multiple platforms to simulate molecular chemistry mechanics, even if you intend for that library to be something that impliments a simplified model of those mechanics. As it sounds that you don't have a significant background in programming, the recomendation that people have been making is to focus on making the game. Personally, I see nothing wrong with focusing on making a library for people to use but if that's at the heart of what you want to accomplish then you should only be focusing on it and put the thought of making a game aside.

Further, regardless of the idea for a game, it can be difficult to recruit programmers to work on your idea as they tend to have their own ideas that they want to work on. Unless of course you're looking to hire programmers to do the work in. If hiring programmers is an option, you might want to consider looking for people that have some sort of background in the field so that you can effectively communicate with each other. (Recruiting programmers here is something you would do in the Classifieds forum, but I suspect you won't find many people with a molecular chemistry background around here).

Putting those things aside, your third option for discussing your idea is to come up with an explination of the game that you have in mind that is simple enough for most people to understand. Speak about your game in terms of mechanics and elements that you see in other games. Get the high level design worked out first so that people can at least envision what you have planned. If you can't communicate that to people then you're going to have an even tougher time when it comes to discussing the technical and scientific elements of your project.

Edited by kseh

##### Share on other sites

I figure I would try to get the game coded in C++ and for mobile devices, but I want it to be as cross platform compatible as possible and the code to be as open source as possible. I'm not sure what my options are in that regard.

Why is it "C++ and mobile devices"? Does that mean you do not expect the mobile devices to use C++? Why do you care if the game is in C++, if you're not programming it?

What do you think it means to be "as open source as possible"? Do you mean you want to make your source code public? Do you want to let volunteers contribute to your source code?

Honestly, as a programmer, one thing that somewhat bothers me is when someone who does not know what he or she is doing with software still wants to make all the high level technical decisions, and then force the actual programmers doing the work to use the programming languages, libraries and tools of their choice, based on some light Internet research, instead of letting the people who may have actually written games in several different languages and environments decide which ones to use. But that's just me.

##### Share on other sites

What I'm trying to be able to do is communicate what I want to a programmer using the correct terminology. [...] I figure I would try to get the game coded in C++ and for mobile devices,
Hm... So you're basically saying, you want a programmer to code up your game idea?

##### Share on other sites

As for other games: Probably off, but look for Atomix: http://en.wikipedia.org/wiki/Atomix_(video_game)

It's basically a tile based puzzle game where you assemble molecules.

##### Share on other sites

Some introductory stuff you will want to keep in mind when trying to plan this out:

http://www.sitepoint.com/12-tips-for-better-developer-communication/

http://www.smashingmagazine.com/2009/08/14/how-to-effectively-communicate-with-developers/

http://www.informit.com/articles/article.aspx?p=2044336

You don't necessarily need programmers to understand your domain completely. It does help a ton, but if you can communicate the specific needs properly you can pretty much have anything made. It's probably not going to be easy, but you are an educator!

Just be aware that if you don't intend to design the game yourself, then you will need a programmer with some heavy experience. Actually, I think it's best if you just design it as best you can, and test it yourself as the project goes on. Through the project you will have opportunities to see what things look like, and later how they work. If you can afford it, you may be able to get something that is decidedly better than what you had originally envisioned.

I've worked on projects with educators before, and they always had a positive presence in the development process. It made things easier because we could discuss the complex domain-specific parts of the projects face-to-face, as well as have some user-testing. In my case the project was made FOR the educator though. The educators would come by weekly to check on progress and explain differences in what we understood and what they really meant. It's all part of the process, so don't be too discouraged if you feel you aren't understood properly.

Anyways, good luck with your project. And keep in mind that \$ makes things happen.

Edited by Kaptein

##### Share on other sites

I figure I would try to get the game coded in C++ and for mobile devices, but I want it to be as cross platform compatible as possible and the code to be as open source as possible. I'm not sure what my options are in that regard.

I'm also not sure what my options are in regards to actually coding the information. I guess they can be math based or rule based (if/then type stuff)? Is there any other way to encode the information?

I understand that there is underlying game mechanics and then there is a user interface on top of that (generally), but I am unsure how to say that in technical terms and what my options are in that regard.

Pink Horror is right. Unless there's another technical requirement, the language shouldn't concern you. "Open source" just means sharing your source code so that doesn't limit your options at all. Cross-platform makes things a bit tougher, but you aren't restricted to just C++. That may have been true at one time, but languages, engines, and frameworks have come a long way. C# and Unity are still a good choice. Heck, you could even do it in GameMaker technically.

And Kaptein is correct too. Being the non-programmer idea guy, you don't have to be too technical with your requirements. Professional programmers frequently interact with non-technical people and work together to figure out exactly what the client is asking for. You're already starting to talk to us through forums and we're starting to get an idea of what you want. If this were an in-person discussion with a whiteboard, we'd be able to start roughing out some general ideas.

If you want to start figuring out the game mechanics, you can start on this yourself with no technical skill whatsoever. Cut out some construction paper shapes for your molecules and move them around, or use blocks, or some other kind of manipulative. Figure out "what" you want the user to do and this will be the game's mechanics. Since you are the SME (Subject Matter Expert) you'd be in charge of that with guidance from the programmer. Figuring out "how" to allow the user to do this will be the user interface, and will be both your responsibilities. Figuring out the low level details of the specifics of the coding is the programmer's responsibility.

Re: Encoding the information - It sounds like data-driving (detailing out specifics via data files) the game mechanics is what you're asking about and it should be doable. It adds some up-front complexity to the task, but I find that doing so usually opens up so many more possibilities. It makes your game "mod-able" (able to be modified by the end user) and sometimes in ways the original programmer never even thought about.

I have to cut this short since I have plans this Sat. Sounds like an interesting project. :)

Honestly, as a programmer, one thing that somewhat bothers me is when someone who does not know what he or she is doing with software still wants to make all the high level technical decisions, and then force the actual programmers doing the work to use the programming languages, libraries and tools of their choice, based on some light Internet research, instead of letting the people who may have actually written games in several different languages and environments decide which ones to use. But that's just me.

But that's just you...And me... And damn near every other developer... :)

- Eck

##### Share on other sites

What I'm trying to be able to do is communicate what I want to a programmer using the correct terminology.

Okay. Moving this to Production/Management.

##### Share on other sites

Kseh, thank you for your comments.  I came to this board because I wanted to talk to programmers so that I could start learning to talk to them with what would come across as a modicum of understanding.  For instance, Eck gave me the term 'framework' which I had not heard before and am currently investigating.

Phase I:  Is a game. The game itself would essentially be like The incredible machine, but with proteins instead of gears / levers etc.  Within this context, I want a sandbox level where users can build their own 'biomachines'.

Phase II:  Is a more technical tool that is essentially just the sandbox level with more options.  These are probably two entirely different programs, but it would be nice if some of the coding produced for the first could be reused in the second and I'm trying to investigate the possibility.  I would like this code to be accessable enough that, as science progresses, more advanced users could add more protein options to model current scientific understanding of molecular processes.  I.e. there are over 4,000 DUFs (Domains of Unknown Function) out there, and it would be nice if there was a way for these to be added by future users.  I was thinking something like a window within the program that would allow the user to access the code directly and input directions for the function of the protein.  It would be nice for this to be doable without it being a complete cluster you know what to the code itself.

Pink Horror, thank you for your questions, I obviously didn't explain myself well enough:

"Why is it "C++ and mobile devices"? Does that mean you do not expect the mobile devices to use C++? Why do you care if the game is in C++, if you're not programming it?"

I am currently thinking it would be nice if it were in C++ because it is one of the most long standing languages.  Right now a lot of scientific programs are in more obscure languages like FORTRAN, and I want to make sure this program doesn't fall into that category.  I have spoken to some programmers about this, and I think it would be appropriate, because I would like the program to be cross-platform compatible eventually.  It is not essential that it be in this language, it’s just one that has been recommended to me and it sounds like an intelligent suggestion.  As I understand things, there are also several decent C++ converters that would allow programmers to move the program into web-based languages like Java.

"What do you think it means to be "as open source as possible"? Do you mean you want to make your source code public? Do you want to let volunteers contribute to your source code?"

I want future scientists / programmers to be able to add to it and reuse it in other programs.  See the Phase II description.

"Honestly, as a programmer, one thing that somewhat bothers me is when someone who does not know what he or she is doing with software still wants to make all the high level technical decisions, and then force the actual programmers doing the work to use the programming languages, libraries and tools of their choice, based on some light Internet research, instead of letting the people who may have actually written games in several different languages and environments decide which ones to use. But that's just me."

I understand that concern and that is why I am trying to go beyond "light internet research" and have multiple discussions with programmers about what I'm interested in doing.

Kaptein,

Thank you for the links.  I believe the point in my design that I am at is something along these lines:

"Completeness
Completeness goes hand in hand with correctness.  Have you found all those boundary cases?  Have you considered what will happen in two years when your requirements change but this code is still in use?  Have you thought about all those little details that seem to pop up later, or are you going to have to engage in a game of whack-a-bug to keep the system running?  How complete is your conceptual coverage?  Learn from those that have come before you, who have found the cracks and gaps, and found proper ways to avoid or fill them.  By utilizing design patterns, other developers can have increased trust in your solution's completeness and correctness."  - informit.com

I want to make sure I have considered all of my options and made an intelligent decision based on my needs.  I want this program to be accessible and revisable by people who may not be the strongest of coders.  Bioinformaticists are in relatively high demand right now, and many of my students cannot apply for these jobs because the job descriptions are for people who know both molecular biology and a relatively obscure language that is not taught within our CS B.S. programs.  Hence my desire for it to be in something highly accessible to an entry-level coder that will last into the foreseeable future.  I'm trying to get a few different opinions on what this might entail.

Eck,
"Re: Encoding the information - It sounds like data-driving (detailing out specifics via data files) the game mechanics is what you're asking about and it should be doable. It adds some up-front complexity to the task, but I find that doing so usually opens up so many more possibilities. It makes your game "mod-able" (able to be modified by the end user) and sometimes in ways the original programmer never even thought about."
Awesome comment, thank you.  Would this necessitate a language like Perl, or could it be coordinated with C++?  I've been discussing the development of course that taught Perl with my colleagues, and it sounds like Perl might be something that is more accessible to a general user than C++.  Am I crazy to say that?  Also, is the language itself perhaps why many bioinformatics programs are developed in FORTRAN? I understood that it was mostly for historical reasons, but I would appreciate alternative opinions on that thought.

##### Share on other sites

On the subject of building machines, it might be worth your while to check out Factorio as well.

Eck,
"Re: Encoding the information - It sounds like data-driving (detailing out specifics via data files) the game mechanics is what you're asking about and it should be doable. It adds some up-front complexity to the task, but I find that doing so usually opens up so many more possibilities. It makes your game "mod-able" (able to be modified by the end user) and sometimes in ways the original programmer never even thought about."
Awesome comment, thank you.  Would this necessitate a language like Perl, or could it be coordinated with C++?  I've been discussing the development of course that taught Perl with my colleagues, and it sounds like Perl might be something that is more accessible to a general user than C++.  Am I crazy to say that?  Also, is the language itself perhaps why many bioinformatics programs are developed in FORTRAN? I understood that it was mostly for historical reasons, but I would appreciate alternative opinions on that thought.

Short answer: Perl's probably not the appropriate tool for this task.  I'll spare you a long answer :)

But in any case, the other posters are right: these are decisions for your programmer, and they can't be made at this altitude.  What you need to communicate with your programmer is a detailed game design document (GDD) that's specific about *everything* except implementation.  (Look online for a tutorial if you don't know what goes in a GDD.)  Don't worry whether each idea is possible; what you can describe in detail in text, a programmer can probably implement.  And if there's something specific they can't implement, they'll point it out and suggest what can be implemented in its place.

Don't worry about knowing the programmer's lingo, but know the game designer's lingo.  Read a few books on game design.  You can (and should) get away from the programming details, but there will be important design decisions that will have to be yours, regardless of who else you hire.

##### Share on other sites

I guess I need to clear a few things up: I'm not planning on the initial version being complex, 3D or anything like that. Neither am I trying to code it myself.

What I'm trying to be able to do is communicate what I want to a programmer using the correct terminology.

I guess what I am looking for is a general survey of technical terms and what they are capable of doing, I.e. The pros and cons. Wikipedia is a little too tech speak heavy for me when I try to read about game engines and I'm getting overwhelmed with options.

I figure I would try to get the game coded in C++ and for mobile devices, but I want it to be as cross platform compatible as possible and the code to be as open source as possible. I'm not sure what my options are in that regard.

I'm also not sure what my options are in regards to actually coding the information. I guess they can be math based or rule based (if/then type stuff)? Is there any other way to encode the information?

I understand that there is underlying game mechanics and then there is a user interface on top of that (generally), but I am unsure how to say that in technical terms and what my options are in that regard.

Etc, etc.

If you get a decent programmer he will not want you to know the right names for things, he would just want you to be clear in describing what you want him to do. I personally rather hear a designer say ow I want this feature to work like this one in that game, because that means I am free in planning how to do this. When artists, designers or producers start to use buzz words, they are unable to actually convey what they would like me to create.

##### Share on other sites
First off, I just want to say that I appreciate everyone’s desire to spare me the effort of learning, however, for my own personal satisfaction and interest in the topic, I’m going to solidly ignore you.  :)  I can assure you that I am NOT the sort of person who would NOT take a programmer’s advice on his or her area of expertise.

Valrus, Thank you for your comments.  When you say “Perl's probably not the appropriate tool for this task.” I guess that it’s because Perl is more of a language to “hold things together” is that correct?

Also, I appreciate your reference to a “game design document (GDD) that's specific about *everything* except implementation.”  I will definitely keep this in mind.  I’m on a slightly different point in the development of the project, basically the part where I beg for money, and the document that I am generating WILL have to demonstrate that I have some sort of competence in at least discussing these things.  I.e. I will have to justify the creation of a library or engine.  Its difficult to justify funds for a thing that you can’t describe in technical terms.  XD

Do you recommend any books on game design in particular?  I’m currently in the middle of “Augmented Learning”, “Games Learning and Society” and a folder full of Educational Game Design primary research articles.

NightCreature83, you raise an interesting point!  “If you get a decent programmer”… How can I tell if I’m talking to a competent programmer?  Any advice?

##### Share on other sites

Oh!  and I just saw the reference to Factorio!  Awesome, thanks.

Also, while I'm here, I'll throw out this question as well:

There have been studies on SEG that suggest that one weakness of the educational aspect of games is that students often do not critically reflect upon the actual educational part of the game.  (Gee 2003)  I'm very much interested in encouraging this type of reflection without interfering with gameplay, so I'm thinking that I will have "problem based" gameplay as the primary game, and then ENCOURAGE collaborative learning and critical reflection in a separate "section" of the game, if you will.  My interest is in designing different avenues via which to encourage this transfer between gameplay and critical reflection and test which one is most effective.  One common arena of self reflection is online message boards associated with the game.  (One that has been well studied is  Civilization's "War Academy" online message board based on discussing in game tactics.) So, on the basic level, I'm trying to figure out how I can encourage users to move back and forth between gameplay and a message board without destabilizing gameplay or making it feel like a textbook or classroom.

Any suggestions on an effective way to do this?

Also, what would a message board look like / be called if it were integrated into the game itself on a mobile device?  I have seen this done in some mobile games, where you are in essentially linked into a 'chatroom' scenario with fellow game players, but the posts are often (necessarily) restricted in length.  Has anyone seen this done especially effectively in any mobile game they have played?

Otherwise, I was thinking of simply linking the game to a traditional online message board like this one and encouraging cross-platform "gaming"... although in this instance, it would be... cross-platform collaborative learning?  XD

##### Share on other sites

Valrus, Thank you for your comments.  When you say “Perl's probably not the appropriate tool for this task.” I guess that it’s because Perl is more of a language to “hold things together” is that correct?

It depends whether you were planning on programming the game itself in Perl, or doing some of the game logic in Perl (that is, the game logic that you want to put out there for easy modding).  A game will often have various levels of languages/formats -- Civilization IV, if I remember correctly, has a C++ engine, but the game logic is expressed in Python, and the game data (maps, parameters, etc.) are in XML.  So people can change the game logic without having to mess with the game engine, and people can make maps and change game variables without going into code at all.

(Side note, and apologies if this is too obvious: all structured data -- like, say, definitions of molecules and their properties -- should be in XML rather than in code; it's extremely standard and knowledge of it is widespread.  For doing things like adding new molecules, modders shouldn't need to go into the game logic; they should just plop a new XML file into whatever directory the molecule files live in, and the game will read that in whenever it starts.)

Back to Perl: I don't think there are modern game engines in Perl, and I wouldn't recommend starting from scratch and trying to write one.  (Perl shines in simple I/O tasks like text processing -- hence its usefulness in bioinformatics -- but hasn't traditionally been utilized in heavily multi-threaded applications like game engines.)  But you *could* potentially do the game logic in it.  You could, for example, call methods in a C++ engine from Perl, or conversely have your C++ engine interpret the Perl game logic.  Both of these are technically possible.  (Finding someone to do it might be a hurdle, though.  Outside of bioinformatics, interest in learning Perl has rather declined in the last 15 years.)

This goes back to the audience question.  If you intend this for student biochemists, modding via Perl is a potentially good idea.  If they don't already know it, learning it would be a valuable job skill.  If you intend this for a wider audience (and perhaps younger audience), I don't think Perl knowledge would be sufficiently common anymore.