Saturday, January 25, 2014

Ultima VII Party Planner

In an effort to learn more about backbone.js I made a web application that is easily considered beautifully useless (beauty in the eye of the beholder, useless in the eye of everyone else). Really, this is probably one of the finest work of code writing I've accomplished to date and there are maybe ten people in the world who will use it.

Menion makes out like a bandit.
There is plenty of room for improvements, but I'd like to write about it anyway.

The picture is an example of a typical, eight character, all level six party. You have a list of all trainers to go visit, who to train when you get there, and about where they are on the map. It also shows how much gold to take to each trainer, and the total cost of all training.





What I thought was going to be a simple little training app for an old rpg turned out to be not so simple. I had the basics working, a model that represents a party member with attributes that can be changed. Some attributes are linked, like hit points are always equal to strength. That was easy enough. I made a simple function where you could throw in a trainer name and it will update the party member model to reflect training with them in the game (add to stats, subtract from training points). It was even easy to undo (subtract from stats, add to training points).

The wrench was the rubberband effect. Ultima VII has the three primary stats: Strength, Dexterity, and Intelligence. And two secondary stats: Combat and Magic. Dexterity is linked to Combat and Intelligence is linked to Magic. If you train Dexterity and increase it by 1, your combat increases by 1 as well. If you train to increase Combat by 1, it goes up by 1 unless you have a lot of Dexterity. Then it will go up by about half the difference of a characters Dexterity and Combat.

For example: Spark starts with 22 Dexterity and 10 Combat. If he trains with Sentri, who gives a single Dexterity, he'll have 23 Dexterity and 11 Combat. On the other hand if he trains with Markus, who gives a single Combat, he'll have 22 Dexterity and 16 combat.

This wasn't a huge problem until I realized undoing character training was impossible without knowing the order they trained in. When I first started to think about the problem I thought it was going to be hard to implement a fix. I opted to make a statHistory object in the party member model. Key 0 is the original stats, key 1 is the first trainer increase, and so on. I thought about making statHistory a regular backbone model but didn't.

This is also the first time I've tried to use right click in an app. I was befuddled at first because everything I read said to just take the button event from the mouse click. That's true, but what eluded me is to use mousedown instead of click. Also:

document.oncontextmenu = function() { return false; };

That bit removes the normal browser right click menu. I didn't look into it, but as I write this I think it would be nice if I could only turn off the normal right click menu over specific page elements and leave it in place everywhere else.

Everything up to that point was easy to do, just took time to implement and test. The training checklist took some serious trial and error. I don't think the current solution is very clever, but it's the only one I've gotten to work reliably. There is a method in the Party collection that loops through every party member and makes a list of unique trainers. That sounds good, but the method runs every time any model in the collection changes. At first I tries to make the checklist by comparing who was just clicked to the list, but that turned out to be a can of worm--especially with untraining.

I thought the map was going to be harder than it was, backbone made working with the canvas easier than the old fashion way. It made me appreciate the render() method.

I'm still working on this project from time to time, and I don't think this post will be spared from editing either.







20 comments:

Amalia Wilsn said...


You are saying maybe ten people in the world use it but I think it is so popular nowadays that more people use it. Only in my early days in college, did I take help from top assignment writing service uk but now every student abode help from this.

Shaun Michael said...

You claim that only ten people use it worldwide, but in my opinion, more people use it now than you might think. In the early years of my college career, I only sought help from powerpoint presentation help service, but now every student does.

jack henry said...

of course, you are all right you are saying well it is a good application for a website many people use it at that time such as many students use Easy Assignment Help by the I appreciate you in work

Universal Assignment said...

No 1 Assignment service, Universal Assignment has a professional team of experts to help in Engineering, Medical, IT, Computer science, Management, Arts and Humanities, Accounting and Finance, Law, Statistics, Mathematics, Web Development, Python, Java, MATLAB, Zero, MS Project, PPT(PowerPoint Presentation), Gantt Chart, Essay assignment, Report writing, Dissertation and all kind of Assignment Help. Best, reliable and Plag-free service all the time.
Assignment help taking is very easy, you can visit Universal Assignment for any kind of assignment service #Best Assignment help website worldwide. First 1000 words free, order now!

Universal Assignment said...

No 1 Assignment service, Universal Assignment has a professional team of experts to help in Engineering, Medical, IT, Computer science, Management, Arts and Humanities, Accounting and Finance, Law, Statistics, Mathematics, Web Development, Python, Java, MATLAB, Zero, MS Project, PPT(PowerPoint Presentation), Gantt Chart, Essay assignment, Report writing, Dissertation and all kind of Assignment Help. Best, reliable and Plag-free service all the time.
Assignment help taking is very easy, you can visit Universal Assignment for any kind of assignment service #1 Assignment help website worldwide. First 1000 words free, order now!

Johnson said...

If you want to play at the casino, you must choose the best. You can see link of this.

Diploma Assignment Help said...

Great Blog
Need a reliable writing service to "write my essay for me UK"? Look no further than Diploma Assignment Help UK. Our team of professional writers can handle any topic and deliver your essay on time and within budget. With our affordable prices and top-quality service, we're the best choice for all your essay writing needs. Get in touch today and let us help you excel in your studies.

Greece Assignment help said...

Nice post
Get expert Greece assignment help from industry professionals. Our dedicated team offers reliable online assignment help in Greece, ensuring top-quality solutions tailored to your academic needs. Score better grades with our comprehensive assistance and timely delivery. Trust the leading assignment help service in Greece for exceptional academic support.

Richard said...

Dwi vs Duigood site for legal services in Virginia

Abogado Violencia Doméstica Nueva Jersey said...

Abogado Violencia Doméstica Nueva JerseyIt's apparent that you have a deep understanding of the subject matter. Looking forward to reading further of your perceptive content. Keep up the excellent work!

Oliverjames said...

Abogado de Accidentes de Semi Camiones
The Ultima VII Party Planner is a user-friendly and well-coordinated event organizer tool. Its user-friendly interface and extensive features are impressive, showcasing attention to detail. The planner's customization options are standout, allowing users to tailor it to different types of events. Positive user experiences have praised the planner's value as a valuable resource for event planning. The creators are commended for developing such a handy tool, which eliminates stress and ensures seamless execution.

martin03481 said...

The Ultima VII Party Planner project has been a significant undertaking, requiring a lot of attention to detail and careful consideration of the rubberband effect and character training. The use of Backbone.js was well-suited for the project, and the right-click functionality and training checklist were tackled effectively. The map feature was a significant achievement, and Backbone made the canvas experience smoother. The project's passion and dedication to the project are evident, and the author encourages continued work and sharing updates or improvements in the future. The project showcases the importance of finding what works best for a specific application.Abogado de Accidentes de Camiones Grande

tyrionlannister said...


Accidente de Camionero Conductor The Ultima VII Party Planner is a unique project that showcases coding skills and creative ambition using Backbone.js. Despite being considered "beautifully useless," the project's beauty lies in the learning process and personal accomplishment. Creating a web application for a niche audience is a commendable way to refine coding abilities and showcase dedication to craft. This project demonstrates enthusiasm and determination to tackle new challenges, a step forward in a developer's journey and may inspire or educate others.

Robert Gandell said...

Native Assignment Help provides unparalleled Geography Assignment Help UK, aiming to assist students in their geographical studies. Our expert team offers comprehensive assistance in various sub-disciplines, including physical and human geography, GIS, cartography, and more. We ensure in-depth research and analysis, empowering students to produce high-quality assignments that demonstrate a profound understanding of geographic principles. Navigating the complexities of geography assignments in the UK becomes easier with Native Assignment Help's specialized Geography Assignment Help service. Our seasoned experts provide guidance in various geographical topics, ensuring comprehensive research, accurate data analysis, and the formulation of well-structured assignments that meet the academic requirements of students pursuing geography studies in the UK.

tyrionlannister said...

buen abogado para accidente de cocheThe author introduces their web application, "beautifully useless," to learn about backbone.js. The self-deprecating tone and humorous description add personality and relatability. The author acknowledges the project's limited user base. However, the post could benefit from more context and information about the app's purpose and functionality. Offering insights into challenges and lessons learned during the project could make it more informative. Including code snippets, screenshots, or a link to the application could enhance the post and make it more relatable for those interested in backbone.js or similar projects.

Lee said...

"Ultima VII" is a role-playing video game from the early 1990s, part of the Ultima series by Origin Systems. The game offers a detailed and immersive fantasy world, allowing players to assemble a party of characters to explore and engage in adventures. The term "party planner" is not commonly associated with the game, but players often strategize and plan their party composition, selecting characters with different skills and abilities to complement each other. For information on party planning in the game, fans can visit dedicated websites, forums, or online communities. As of January 2022, new fan tools or resources may have emerged, so players can search online or visit Ultima fan communities for the latest information.abogado de nueva jersey flsa

SarahLillian said...

It is very useful for us.sex crime attorney||divorce law in new jersey.

dean said...

In Ultima VII, party planning is essential for a successful experience. To optimize your party, consider having a diverse set of skills, including combat, magic, and non-combat abilities. Balanced attributes, such as strength, dexterity, and intelligence, are crucial for different character roles. Equip your party members with appropriate gear and regularly check for upgrades. Choose spells that complement each other, allowing your party to handle various situations. Designate specific roles for each character, such as ranged combat, healing, and magic, to ensure efficiency in different scenarios. Manage your inventory wisely, carrying enough supplies for long journeys and challenging encounters. Train your party members to improve their skills, seeking trainers in different towns to enhance combat abilities or magic proficiency. Explore the game world thoroughly, discovering hidden locations, treasures, and meeting various characters. Be mindful of your choices during quests, as they can impact character development and the storyline. Communication is key to understanding the game world. Talk to NPCs (Non-Player Characters) to gather information, receive quests, and unlock additional options. Remember that Ultima VII is a complex and open-ended game, so adapt your party's strategy based on your preferences and challenges. If you're looking for a tool or resource, check fan forums, websites, or modding communities dedicated to Ultima VII for user-created tools or guides.northern virginia personal injury lawyers

Marry Smith said...

This Ultima VII Party Planner app shows impressive coding ability in tackling complex stat calculations and interactions. As a fellow developer, I understand the frustration of getting stuck on hard programming logic. In those cases, it pays to reach out to a computer science assignment help writing expert who can unblock you with expert advice on assignments or projects.

romanr03481 said...

The Ultima VII Party Planner project has faced challenges, but it has been well-designed and functional. Some suggestions include implementing an undo feature, enabling right-click functionality based on training order, optimizing the training checklist, and gathering feedback from potential users. Clear and concise documentation is essential for a wider audience, and refining and iterating based on feedback can lead to more users appreciating the tool. Investing in user interface design, responsive design, keyboard shortcuts, localization support, testing and bug fixes, accessibility, code comments and documentation, community engagement, security, performance optimization, and version control can help improve the user experience. Additionally, consider implementing a statHistory object to track changes and enable undo functionality based on training order. Optimize the training checklist by debouncing the method to delay execution until a certain period of inactivity. Additionally, consider localization support for users from different regions, regular testing across various browsers, and ensuring accessibility for users with disabilities. Maintain clear code comments and documentation, engage with a dedicated community, and follow security best practices. Continuously optimize the application's performance through refining algorithms, reducing computations, or using caching mechanisms. Implement version control for better collaboration and tracking of changes. abogado inmobiliario