{"id":1,"date":"2024-09-30T17:08:41","date_gmt":"2024-09-30T17:08:41","guid":{"rendered":"https:\/\/blogs.oregonstate.edu\/blaytons\/?p=1"},"modified":"2025-03-05T19:54:16","modified_gmt":"2025-03-05T19:54:16","slug":"hello-world","status":"publish","type":"post","link":"https:\/\/blogs.oregonstate.edu\/blaytons\/2024\/09\/30\/hello-world\/","title":{"rendered":"Project Blog-1"},"content":{"rendered":"<h2 style=\"text-align: center\"><strong>Reflections on My Project Journey<\/strong><\/h2>\n<p><span style=\"font-weight: 400\">As I near the completion of my capstone project, I\u2019ve had the opportunity to reflect on the challenges, successes, and lessons learned throughout the development process. This journey has been both demanding and rewarding, pushing me to expand my technical skills, problem-solving abilities, and teamwork strategies.<\/span><\/p>\n<p><strong>The Most Difficult Challenge and How I Solved It<\/strong><\/p>\n<p><span style=\"font-weight: 400\">One of the biggest challenges I faced was implementing a functional turn-based system and game logic for our GameForge-Gameplay project. Designing a system that could handle player turns, dice rolls, and movement mechanics while maintaining synchronization in a multiplayer environment required a well-thought-out approach. Initially, I struggled with ensuring smooth transitions between player turns without introducing delays or conflicts. To solve this, I broke the system into modular components, focusing on a structured state-driven approach in JavaScript. I leveraged event-driven programming and WebSockets to ensure real-time updates and communication between players. Debugging multiplayer interactions was a time-consuming process, but methodically testing different scenarios helped me refine the logic.<\/span><\/p>\n<p><strong>Why I Chose This Project and Has It Met My Expectations?<\/strong><\/p>\n<p><span style=\"font-weight: 400\">I chose this project because I have always been passionate about board games and game development. The idea of creating a digital platform where players could design and play their own board games fascinated me. So far, the project has met my expectations in terms of technical challenges and creative fulfillment. However, I underestimated the complexity of integrating real-time interactions and UI\/UX considerations. Still, seeing our game system come together has been incredibly satisfying.<\/span><\/p>\n<p><strong>What Would I Do Differently?<\/strong><\/p>\n<p><span style=\"font-weight: 400\">If I could start over, I would spend more time planning the architecture and setting up clear milestones. Early on, we spent a lot of time experimenting with different frameworks before finalizing our approach. A more structured development plan would have saved us time and reduced unnecessary refactoring. Additionally, I would establish clearer communication protocols within the team to streamline collaboration.<\/span><\/p>\n<p><strong>Project Management: Well or Poorly Managed?<\/strong><\/p>\n<p><span style=\"font-weight: 400\">I believe our project was managed fairly well, but there was definitely room for improvement. Early in the project, we did not set clear deadlines for certain features, which led to some delays. Once we implemented a structured task management system using Trello and held regular check-ins, productivity improved significantly. In hindsight, adopting these strategies earlier would have helped maintain a smoother workflow.<\/span><\/p>\n<p><strong>Doubts and Confidence Over Time<\/strong><\/p>\n<p><span style=\"font-weight: 400\">At the start, I had doubts about whether we could implement all the features we envisioned. The scope of the project was ambitious, and balancing it with other coursework was a challenge. However, as we made progress and solved problems one by one, my confidence grew. Now, I feel much more assured in my ability to complete the project successfully.<\/span><\/p>\n<p><strong>Who Will Use This Project and How Will It Benefit Them?<\/strong><\/p>\n<p><span style=\"font-weight: 400\">Our project is designed for tabletop gaming enthusiasts who want a digital platform to create, share, and play board games. It benefits users by providing a customizable experience, enabling them to craft unique gameplay mechanics without needing advanced programming knowledge. The platform also promotes social interaction through multiplayer functionality, allowing players to engage in turn-based games with friends remotely.<\/span><\/p>\n<p><strong>Five Key Takeaways from This Project<\/strong><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Planning is crucial<\/strong> \u2013 A well-defined roadmap prevents unnecessary rework.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Break problems into smaller tasks<\/strong> \u2013 Tackling one challenge at a time keeps development manageable.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Communication matters<\/strong> \u2013 Regular check-ins ensure team alignment and efficiency.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Debugging in multiplayer environments is complex<\/strong> \u2013 Extensive testing is needed to maintain consistency.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Adaptability is key<\/strong> \u2013 Being open to pivoting strategies leads to better solutions.<\/span><\/li>\n<\/ol>\n<p><strong>Lessons on Teamwork<\/strong><\/p>\n<p><span style=\"font-weight: 400\">Working in a team reinforced the importance of clear communication, division of responsibilities, and trust. We encountered moments of misalignment, but by discussing issues openly and adjusting our workflow, we improved our collaboration. Learning to navigate different working styles was a valuable experience.<\/span><\/p>\n<p><strong>Handling \u2018Stuck\u2019 Moments<\/strong><\/p>\n<p><span style=\"font-weight: 400\">Whenever I got stuck, I followed a few key strategies:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Step away and revisit later<\/strong> \u2013 A fresh perspective often leads to solutions.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Seek help from teammates<\/strong> \u2013 Explaining the issue to someone else can bring clarity.<\/span><\/li>\n<\/ul>\n<p><strong>Life Hacks for Managing School and Projects<\/strong><\/p>\n<p><span style=\"font-weight: 400\">Balancing school, work, and projects is challenging, but a few habits have helped me stay on top of things:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Use a planner<\/strong> \u2013 Tracking deadlines and tasks prevents last-minute panic.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Time blocking<\/strong> \u2013 Setting dedicated time slots for coursework ensures steady progress.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Stay organized with version control<\/strong> \u2013 GitHub and commit logs help track changes and avoid major setbacks.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\"><strong>Prioritize self-care<\/strong> \u2013 Taking breaks and getting enough rest prevents burnout.<\/span><\/li>\n<\/ul>\n<p><strong>Final Thoughts<\/strong><\/p>\n<p><span style=\"font-weight: 400\">This project has been a major learning experience, challenging me to apply both technical and soft skills. While there were obstacles along the way, the progress we&#8217;ve made is incredibly rewarding. As we finalize the last steps, I\u2019m excited to see the finished product and how it can be further developed in the future.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Looking back, I\u2019ve grown significantly as a developer, and this experience has reinforced my passion for game development. I\u2019m grateful for the opportunity to work on such a unique and ambitious project, and I look forward to applying these lessons in my future career.<\/span><\/p>\n<h2 style=\"text-align: center\">MERN Chat App<\/h2>\n<p>For my team&#8217;s test app, we created the MERN Chat App, which gave me a hands-on experience with several technologies. My favorite part of the process was working with React. Its component-based architecture and state management made building the UI seamless and reusable. For instance, implementing AuthContext simplified user authentication and ensured consistency across the app.<\/p>\n<p>The most challenging technology we used was MongoDB. Setting up both a local environment and MongoDB Atlas required a lot of trial and error, particularly when managing connection strings and .env files. However, overcoming these challenges helped me appreciate MongoDB\u2019s flexibility with schema-less data.<\/p>\n<p>One key takeaway from this test app is what I\u2019d do differently for our board game project. I\u2019d love to explore Socket.IO for real-time updates, as it\u2019s far more efficient than HTTP polling and would enhance the user experience by providing instant feedback during gameplay.<\/p>\n<h2 style=\"text-align: center\">Clean Code Practices<\/h2>\n<p>One area I want to improve in is using meaningful names for variables and functions. From Robert C. Martin&#8217;s Clean Code, I learned that clear, names make code easier to read and maintain. Martin writes, &#8220;You should name a variable using the same care with which you name a firstborn child,&#8221; emphasizing the importance of thoughtful naming.<br \/>\nBad Example: def c(a, b):<br \/>\nreturn a * b<\/p>\n<p>Good Example: def calculate_area(width, height):<br \/>\nreturn width * height<\/p>\n<p>Naming things well eliminates confusion and helps other developers understand the purpose of the code at a glance.<\/p>\n<p>A practice that I will be trying to avoid in the future is redundant comments. Comments should explain the &#8220;why&#8221; behind the code, not restate the obvious. As Martin notes, &#8220;Comments are always failures. We must have them because we cannot always figure out how to make our code expressive enough,&#8221; reinforcing that comments should supplement, not substitute for, clarity in code. The following code is a good example of code that shouldn&#8217;t have a comment added to it, since it is self-explanatory.<\/p>\n<p>def calculate_area(width, height):<br \/>\nreturn width * height<\/p>\n<p>By focusing on meaningful naming and avoiding redundant comments, I aim to write cleaner, more professional code, These small changes will help my work&#8217;s readability and maintainability in the future.<\/p>\n<p>Source:<\/p>\n<p data-pm-slice=\"1 1 []\">Martin, Robert C. <em>Clean Code: A Handbook of Agile Software Craftsmanship<\/em>. 1st edition, Pearson, 2008, Chapter 1.<\/p>\n<h2 style=\"text-align: center\">Expanding My Skills Over Winter Break<\/h2>\n<p>As I continue to work on the project &#8220;Create and Play Board Game&#8221;, I\u2019m diving deeper into learning the tools and concepts that will bring this project to life. One of my main focuses right now is improving my knowledge of C# for scripting in Unity. While I\u2019ve worked with other programming languages before, C# has its own quirks and best practices, especially when it comes to game development. Learning to write efficient, clean, and reusable code is critical for managing the complex game mechanics.<\/p>\n<p>In addition to C#, I\u2019m also learning how to use Unity itself. Unity is a powerful game development platform, but it has a steep learning curve for beginners. Understanding how to navigate the editor, utilize its many features, and integrate them with my code is a challenge I\u2019m excited to tackle. From setting up the game environment to managing assets and animations, there\u2019s so much to explore.<\/p>\n<p>Most of this learning will take place over winter break. I plan to dedicate time to learning more about these tools, while also studying concepts like resource management for our board game. Resource management is a core mechanic in many board games, and understanding how to balance and implement it effectively will be essential to our project\u2019s success.<\/p>\n<p>This winter break will be a busy but rewarding time as I work to sharpen my skills and bring the project\u00a0closer to completion. I\u2019m looking forward to sharing my progress in future posts!<\/p>\n<h2>Learning Turn-Based Logic<\/h2>\n<p>A lot has happened since I first joined the senior capstone project team. Our project, Create and Play Board Games, is a digital platform that combines elements of Euro-style and Dungeon-Crawler games to create an immersive experience for the player. My primary responsibility for this assignment is to implement the turn-based system. This controls how players and AI interact and take actions within each round. To achieve this we&#8217;ve decided to leverage Unity&#8217;s Turn-Based Toolkit, along with some C# scripting, to implement game logic.<\/p>\n<p>The challenges I have faced with this is mostly about learning how to implement turn-based logic. Here are some of the challenges I&#8217;m going to face in the future of this project: Unity&#8217;s Turn-Based Toolkit, C# Scripting for Game Logic, GameState Management and Action Economy, Unity&#8217;s Event-Driven System, Synchronization in Multiplayer Mode, Debugging and Testing Complex Game Logic, Player Feedback and User Interface Design, and much more. Hopefully in my next post, I&#8217;ll be able to share more about the progress I&#8217;ve made and some of the specific challenges I&#8217;ve encountered while learning these new skills. Developing this board game been a learning experience, and I&#8217;m excited to see how it all comes together.<\/p>\n<h2>About Me<\/h2>\n<p><span style=\"font-weight: 400\">I live in Houston, Texas, and spend most of my time in the central time zone. Currently for work I am a manager at a Target. I bought my first house with my wife and cat, Leo. In my spare time I enjoy gaming and hanging out with friends and family, which keeps me balanced between school, work, and fun.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">I\u2019ve been interested in computers for as long as I can remember. It all started when I was a kid and got into gaming on my parents laptop. My fascination with games soon expanded into wanting to understand how software works, which eventually led me to pursue computer science at OSU. <\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">At this point, I\u2019m working on sharpening my skills and preparing for future opportunities, possibly an internship in the tech field. My favorite technologies revolve around web development, but I want to start learning more of the software engineering side.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Although I don\u2019t have my career plans set in stone, I\u2019m excited to keep learning and see where my experiences take me. This project is another stepping stone that will help me define my path. <\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reflections on My Project Journey As I near the completion of my capstone project, I\u2019ve had the opportunity to reflect on the challenges, successes, and lessons learned throughout the development process. This journey has been both demanding and rewarding, pushing me to expand my technical skills, problem-solving abilities, and teamwork strategies. The Most Difficult Challenge [&hellip;]<\/p>\n","protected":false},"author":14441,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/posts\/1","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/users\/14441"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/comments?post=1"}],"version-history":[{"count":8,"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/posts\/1\/revisions"}],"predecessor-version":[{"id":18,"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/posts\/1\/revisions\/18"}],"wp:attachment":[{"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/media?parent=1"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/categories?post=1"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/blaytons\/wp-json\/wp\/v2\/tags?post=1"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}