Technologies of Capstone


The A-Life challenge has several technologies that we use, although not as many as some other more technical projects, we do still get the chance to be creative and find innovative ways to accomplish our tasks.

My favorite technology that we are using has to be Python. I have learned many coding languages over the last few years of earning my degree, however none have been as exciting to use as Python. It allows for easy interpretation and readability of the code and it is the most intuitive language that I have ever used. Even for my Job, I primarily use Python which has helped me to develop even more skill and familiarity with the language.

My least favorite technology has got to be, ironically, the downfalls of Python. Speed, and implementation of threading is frustrating when trying to make something as fast as C++. As we have been developing the project, we have created two applications which will open and be used together, however one is in C++ and the other is in Python. C++ can parse data, concatenate a string, and send it over a socket much faster than python can read that message, parse the full message into instructions and execute them all while listening to an environment for use input leads to some timing issues.

Technologies that I had a hard time learning are different encoding methods and how to decode them all quickly and efficiently. I was at first frustrated by them because they are not easy to just look at and infer what they are, however it has quickly become a more appreciated option because of how much time it can save when sending messages through a socket. When sending a smaller amount of data, it can get through quicker. I will take that over readability as long as there is good documentation.

I think I would change my initial implementation of the python application and restructure things a little bit better. I had set up each of the files as standalone applications for the three pages that are needed for the UI of the application. I would have changed it to be one main file that will call different setters to create these pages, and even have them as canvas’s that can be displayed one on top of the other. This is easier for references, global variables, sharing data, etc.

The most difficult learning curve for me was with sockets. It took me a while to figure out setting up sockets, connecting, listening for data and going into the processing of the data, while also maintaining a game loop. It really was hard to work with at first and making sure the order and loop was all correct. The easiest learning curve was actually the UI. While it took a little while to find the right library, I was able to find one that worked for me and was easy enough to maneuver and setup.

If I was to end up starting over, I would likely scratch the idea of having things so far removed from each other. It was nice at first to have things separated and “easier to find” this way instead of searching through a massive 3000 line file, but some of the functions that I wish I could reference in certain scopes aren’t available, and other functions are now programmed and depending on that function. While I could copy it, I don’t want to create a project that has the same function implemented several times just because it is possibly easier to work with in another context.

One technology I wish that we could have put into our tech stack was something a little bit more GUI and Speed friendly. Python has been great for displaying the GUI, however when it really comes down to it, it would be nice to have something that is a little bit more reliable for speed. While the implementation really hasn’t suffered much, it would be nice to know that what we are doing is not at the mercy of what ever speed Python is able to go.

Overall, the favorite technology has been python and just exploring more about it, and this is just a programming language that I am sure most people are familiar with. So what I will do instead is explain how the A-life Challenge project is set up.

There are two applications, one written in C++, the other in Python. The C++ application acts as the server and Python the client. The server is responsible for managing all of the organisms, the main grid, the interactions between organisms, the environment, pretty much anything that you don’t actually see. The client side is just receiving messages, updating the environment grid, allowing users to change settings, displaying information, and looping through commands that it receives from the server.

We have loved working on this project and creating something new, but have had to scale back our implementation of it based on the amount of time that we have available and what we can actually get done. We are excited for the Alpha assignment where we get to show off more of the project and how far things have come from the end of the first term.

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *