With the completing of class abilities and skills, Krees and I turned our attention to Alliances. In the original version of Conquest!, a player could only ally with one other person (some classes couldn't form alliances at all). While this was fine I recently expanded the concept of alliances to include multiple players and members receive troops each battle (the percentage is based on the size of the alliance). I thought this would only take us 3-4 days; it ended up consuming over a week! There were lots of subtleties, including a list of alliances, searching for an alliance, member rosters, and leader administration. Krees also suggested a new feature, alliance events, which display a running list of events affected the members. We used a similar background for class commands and divided it into two halves: Members and alliance maintenance are similar. Clicking on an alliance (or member) reveals more information: We also started some UX cleanup, based on feedback from users. Notably, we increased the font sizes throughout the UI, fixed some scroll issues when opening pop-ups, and centered the map on your location (more on that below). Since I use my PC for testing and an Android tablet for verification, it is sometimes difficult to remember that on smaller devices the font size might be incredibly tiny (and illegible).
Not completely understanding some core Unity concepts, such as world position, I used a "magic number" to approximate the position. I tested it using a variety of screen resolutions and it works out OK but naturally it isn't good to use something without fully comprehending how it is working. If there are any Unity gurus out there who have time to explain to me what is happening I would really appreciate it! My usual source of help, Google, was surprisingly silent on the matter... On the server side I spent 2 days rewriting major sections of the battle code. Originally I had used some global pointers and static variables and I wanted to remove those constructs. There is no net effect on the outcomes of battles but the old code was "bugging" me and had to be replaced. Just one of those things. Krees and I are coming to the end of the development cycle. We have just one section remaining, Town Ownership, before moving fully to UX cleanup/prep for launch. I missed the Core Labs session last week due to a conflict and I have yet to watch the video. It covers building a budget, something I do need help with (although with just a team of two its easy to manage!). Two weeks ago we heard from Oscar Clark from Unity, who gave a really good session on scope creep. Follow the journey on Facebook or Twitter. Until next time, I hope to see you in the game.
0 Comments
Conquest! is a client/server application. The client uses Unity and has been the subject of most of my blogs the past 10 months. I would like to spend most of this post discussing the enhancements to the game server but first let's get the new stuff for the client out of the way. The big news was completing the new pop-up images and starting on support for player classes. In Conquest!, there are 6 playable classes: Fighter, Barbarian, Mage, Cleric, Ranger, and Vampire. Each class has its own strengths, weaknesses, and playstyle. Classes are an important and large area of the game and are one of the last remaining sections to complete. The design calls for a large tome, which players will page through to view their class abilities and skills. The graphics aren't complete yet but here are the general information and abilities pages: The skills for each class will follow a similar pattern. I really like this design and am excited to see it 100% complete.
The Conquest! server is written in C and was first created in 1998. It has evolved quite a bit since version 1.0, including enhancements to the communication protocols, game features, and stability. As part of taking Conquest! mobile I have gone back and cleaned up some poorly written code. Part of this cleanup involves the use of a lint program, namely Splint. I recently ran split for each of the source files in Conquest!. While I took comfort in the fact that Splint only identified a few minor bugs it did uncover some less than optimal code. For example, the use of snprintf instead of sprintf and strlcat instead of strncat. Note the former required the install of the libbsd library but this is readily available. Also new this week was the storing of chat and world event history. When a client connects this information is sent, timestamped to the local timezone. This allows conversations to continue in the event of a disconnect or simply the passage of time. It also allows players to instantly see the last 20 world events without having to visit the web site. The server saves these to a file when it exists so they are persisted between reboots. These features enhance the user experience and help persist the Conquest! world. All told, the code cleanups and chat storage took approximately 8 hours of development over many long nights. Grueling, but worth it. This week during the Core Labs Accelerator lecture we heard from Jeff Burton, one of the founders of Electronic Arts, who coached us on networking skills. Jeff is one of those people you want to go out to dinner with to hear his stories and I hope to meet him during demo day in Silicon Valley later in the summer. Follow the journey on Facebook or Twitter. Until next time, I hope to see you in the game. |
AuthorJames has been working on Conquest! since 1993. Archives
June 2024
Categories |