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.







27 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...
This comment has been removed by the author.
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

rahamathjohn said...

Thank you for taking the time to comment on our blog. Your feedback is greatly appreciated and helps us improve our content. We look forward to hearing more from you in the future! healthcare in crypto

Rubyrise said...

"Ultima VII: The Black Gate" is a 1992 role-playing game with a unique party system. Players control a single Avatar character who can recruit companions to join them on their journey. To plan your party, understand your Avatar's skills, recruit companions with unique strengths and weaknesses, balance your party with a variety of roles, manage resources, explore the vast open world, and make role-playing choices. The game offers a high degree of freedom and flexibility, allowing players to approach challenges in their own way. Enjoy exploring Britannia and creating your own unique adventure criminal lawyer manassas.

divorce lawyer in arlington va said...

divorce lawyer in arlington vaThe 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

jakerise said...

"Ultima VII: The Black Gate," a 1992 RPG by Origin Systems, emphasizes the importance of effective party management. The party can consist of up to eight members, with each having unique skills and attributes. Proper equipment and inventory management are crucial, with the Orb of the Moons for teleportation and the Key of Three Parts for accessing special areas. Combat strategies include formation, using spells strategically, and employing hit-and-run tactics. Character development involves leveling up, training, and participating in battles. Quest management involves following the main storyline, engaging in side quests, and paying attention to dialogue arlington criminal lawyer.

Jacob Smith said...

At GKM IT, we offer Virtual CTO Services to provide businesses with top-tier technical leadership without the need to hire a full-time Chief Technology Officer. Our CTO-as-a-service solution is designed for companies that require specialized technical guidance to scale their operations, streamline processes, or set a clear technological direction based on their current needs. Our Virtual CTO Services connect you with highly experienced technology experts who are ready to share their expertise and insight with your teams. Whether you're a startup looking to establish a strong technical foundation or an established company aiming to innovate, GKM IT ensures that you receive customized technical strategies tailored to your unique business goals. With a focus on cost efficiency and flexibility, our CTO-as-a-service model allows businesses of all sizes to benefit from expert-level leadership in areas like technology architecture, system integrations, software development, and digital transformation. From strategic planning to hands-on guidance, our virtual CTOs work closely with your teams to ensure your technological roadmap aligns with your long-term business objectives. Choosing GKM IT's Virtual CTO Services gives you access to seasoned professionals who understand the latest industry trends and technological advancements, helping you stay competitive in today's fast-paced digital world. Let us help you unlock your company's full potential with tailored technical solutions and expert guidance, without the commitment of a full-time executive hire.

adamjonesaj said...

Requesting additional information on a full page article, including synopsis, review remarks, or other relevant details, to assist in understanding the topic.custody lawyer falls church va They value prompt responses, successful case outcomes, emotional support, adept negotiation,
clear explanations of expenses, and a strong defense ability in court.

hannsimmer said...

virginia prenuptial agreement "Premarital agreement" means an agreement between prospective spouses made in contemplation of marriage and to be effective upon marriage. A premarital agreement is defined in Virginia as an agreement made between prospective spouse, in contemplation of marriage. Under Virginia law, a prenuptial agreement will become effective upon marriage, and must be in writing and signed by both parties.A prenup generally contains a listing of each partner's individual assets, some indication of which individual assets will remain the property of each spouse in the event of a divorce, guidelines on how property acquired during the marriage will be divided in a divorce, language on responsibility for debts acquired