Rough guess on level of effort

I’ve got a game written in Universal Windows Platform (XAML/C#) that I am considering porting to Unity. The game is built on an MVVM architecture, and it’s my understanding that Unity supports an MVVM architecture. If that is true, the porting would (mostly) be a matter of replacing the XAML UI with Unity UI.

The UI is basically broken down into a hex-based 2D map and several 2D pages that are a mix of graphics and text.

Inasmuch as I could not expect an accurate estimate based on this extremely limited description, but I’m wondering if somebody might have a feel for what level of effort this sort of task might entail (for a professional Unity developer who understands MVVM architecture).

For example, the map is dynamically drawn based on data. It is 240x180 hexes in size, with each hex being a separate terrain image. I need to be able to track when the user clicks on a specific hex, hovers over a hex, clicks on icons rendered on the map, etc. What I need is to have the map raise events to the View Model so that it can process the requests, and then update the map accordingly.

I am likely not providing sufficient information, but in case I am - I’d really like to get some feedback on this.

(I have almost no Unity experience, but I do have many years of software architecture/development experience)

Thanks!

You will need to learn Unity UI system. You would rather design it from scratch in Unity.
But UI will be least of your worries.
Prior that, you of course need learn all principle of Unity, to sufficient level, which will allow you make a game.
Beyond standard C# methods and keywords etc., which knowing them helps allot, you will need get familiar with Unity APIs.
Then of course all quirks, tricks etc.

Your effort will be highly dependent on time spent on Unity and consistency. Few hours a week? 10 hours a week?. Are you determined to achieve your goals? etc.

However, there is plenty forum and external resources activity and discussion on different matters. Plus documentation. So when you don’t have access to Unity, you can read up. Watch tutorials etc., to accelerate learning process.

Other than that, from what you provided, I am unable say anything more.
Providing you not porting flappy bird, and you don’t put full time into Unity, surely it won’t be shorter than a month. :slight_smile:

3 Likes

Are you suggesting that the entire game needs to be redesigned to move it to Unity? If so, is that because Unity cannot support an MVVM architecture?

Why is the UI the least of my worries?

My original question was perhaps unclear. I’m not trying to ask how much effort goes into learning Unity. My question is, what would the level of effort be for somebody who is already a Unity developer, with a strong understanding of MVVM architecture.

Vanilla Unity UI is not 100% MVVM as in you dont have complete seperation between behaviour and view. There are databinding assets though that can do that which would make it more like a XAML application with MVVM.

edit: you are not forced in a XAML application to use strict MVVM though.

1000 EU (Exertion Units).

It’s impossible to give a useful answer to this kind of question. Monetary measurements will differ wildly. So will time, because skill varies. But skill is not cheap. And that’s before you take quality into account.

A more useful question is to ask yourself ‘how much do I value this?’ put a figure on it and try to get someone who can match it or better.

By the way, when I’m freelancing and someone asks how easy or difficult something is, I avoid the question like the plague. If you say it’s easy, they will expect it to be cheap. If you say it’s difficult, it sounds like you can’t handle it. And on top of that the question implies that the customer is already resisting the idea of doing it in the first place, which is likely to spell a rocky road ahead.

Thanks Anders. I am aware that XAML applications are required to use MVVM. Mine does though and I’d like to be able to leverage the existing VM backing for the port.

Look into the various MVVM assets then. But it will not be a automated port. Everything will have to be manually converted.

edit: and if its a mobile project make sure the solution you choose do not allocate. It can tank performance

1 Like

Thanks Billy. I am aware that skill is not cheap. I’ve got over 30 years of IT consulting experience - and I’m not cheap.

I’m not trying to get an idea of cost (although effort and cost are related items).

I’m just trying to get an idea of how much effort would go into such a task. (Using the mapping task as an example, is this days, weeks or months worth of effort.) It may be that my question has too many variables to answer. In which case, I cannot get a reasonable answer.

I guess I was hoping that I’d find somebody with a strong understanding of MVVM implementation in Unity that might be able to give me a rough idea of what the migration effort might look like.

Yes, I would never have expected this to be an automated process.

Fair enough, I think you’re better off getting some direct quotes. Maybe someone else can give a more useful answer based on the information provided.

Maybe this could be worth checking out, https://delight-dev.github.io/

disclaimer, havent tried it myself

edit: or this paid asset https://assetstore.unity.com/detail/tools/gui/xmllayout-xml-driven-ui-framework-61090

How about UIElements?

https://discussions.unity.com/t/761363

That’s my plan, but since I’m not a Unity developer, I’m hoping to get some generic idea on the level of effort. In most cases, I can judge a IT related quote from somebody because I have extensive experience in many areas - but Unity isn’t one of them.

It’s an interesting looking product. I’m not really sure how much it would help me, but it’s still an interesting looking product.

For an experienced developer who’s new to Unity, here’s an extremely rough guess, assuming about 20 hours/week:

  • 1 month to get to grips with the Unity editor and scripting API (i.e., general basic competency).
  • 1 month to develop a basic MVVM framework or adapt an existing framework. Developing your own framework will give you a deeper understanding of the way Unity works, and you don’t have to deal with parts of an existing framework that your game won’t need.
  • 1 month to do an initial port of your game.
  • 1 month to realize you misunderstood some fundamental Unity concepts (we all do this when learning Unity) and rework your implementation to actually get it working properly. (By “properly,” I mean basic game functionality, not final polish.)
  • Total: 4 months

Another extremely rough guess for a full-time professional Unity developer: 1.5 - 2 months to get the basic game up and running in Unity, including back-and-forth communication with you to fully understand the requirements. Maybe a few weeks less if you have detailed design specs.

3 Likes

Thanks Tony. If I’m giving this task to another developer, I will definitely be providing them with a complete set of specs, along with both functional and non-functional requirements.

If you’d like some recommendations on dependable Unity developers, feel free to message me.

… as soon as I figure out how to PM you, I will :wink:

If you are not Unity developer, is hard to get any reasonable estimate. You need certain level of technical expertise in the area to effectively understand a problem and give effective consultancy. Otherwise it will sound nothing more than marketing.

On other hand, you gave us really minimum details. We can keep providing and suggesting tools. But does that really matter?

Why not to try build a prototype and see what it takes? Look into files structure, compare with what you got and see if automation conversion is feasible. Or maybe better is just build by hand. Then scale up by size of the project, and you may get rough minimum effort. And that is just UI part.

Unless your game is only UI based, you want something to animate, display and interact. That where all fun and effort will come to.

Often rebuilding rather than trying port and fight with all inconsistencies and bugs is more feasible. There are also modern utilities, which may help improve performance and debugging.

From what you are saying, you could probably use your game dlls and just expose hooks for Unity to grab relevant data.

Click on @TonyLi profile / avatar, and from popup there is start conversation button.

1 Like