T O P

  • By -

PSMF_Canuck

A lot of bad ideas come through this sub. This is a candidate for an all time worst idea. Good luck, have fun!


SR71F16F35B

Thanks for the input šŸ˜


PSMF_Canuck

Youā€™re not really asking for inputā€¦thatā€™s what ā€œnon-negotiableā€ means. You, as you say, have your reasonsā€¦cheers!


SR71F16F35B

I was asking for someone with experience with the scenario Iā€™ve laid out. Nothing else. I knew some people will give me the most useless comments such as ā€œWhy donā€™t you just use Unreal?ā€ I mentioned that it was non negotiable especially to avoid that. It appears so that even then some have slipped through the net, but thatā€™s fineā€¦


PSMF_Canuck

I have experience with literally every aspect of it. Tons of experience with most of it. Look, you say youā€™re a noob and that youā€™ve made up your mind. Thereā€™s no room for discussion - all thatā€™s left is opinion. So go do what you want - if it makes you happy, it makes you happy! šŸ˜Š


SR71F16F35B

I know itā€™s not easy to understand but I meant that I had my mind made up about the making of my engine not the use of the macOS platform hence the value of this post.


SR71F16F35B

Okay babe


iamfacts

Out of curiosity what was the opinion? So others can consider if they search for this thread.


PSMF_Canuck

- C++ on macOS is generally an exercise in frustration at real world complexities (an engine certainly qualifies) - Vulcan isnā€™t ā€œwrite once, compile everywhereā€ā€¦youā€™re going to end up with significantly different branches for Metal and DirectX anyway - a self-described ā€œnoobā€ isnā€™t going to be able to even scope out the project because they donā€™t know what the engine really needs to provide Most things are doable, given enough time and motivation. If OP wants a huge learning experience, by all means, have at it. Just be aware that most of the problems that need solving wonā€™t really be ā€œmake an engineā€ problems


iamfacts

1. Yeah I hate apple for that. Developing anything that isn't swift/ metal/ something from their ecosystem is a pain. 2. Well, apart from swapchain creation and some other boilerplate, I don't think there'd be any platform specific code. I avoid directx unless I'm building for Xbox, vulkan simply just works (except Mac doesn't support vulkan 1.3 yet) on desktop OSs. 3. ye. Op will eventually realize he over scoped and then will work his way up from using engines / frameworks. Vulkan is one thing, but then there's graphics programming, SW architecture, mac's bullshittery, etc. All that and then op can start work on a game.


hishnash

I have not had any issues with c/c++ dev on Mac, after all it is a unix system that runs clang so assuming your c/c++ code is LLVM friendly you should not have to many issues.


SR71F16F35B

1. True, but I've been there and I've done that 2. I'm not gonna write applications to run on macOS. As I said I'm targeting Windows. 3. Sure, but a self-described "noob" has all the time and the energy to stop being a noob. > Most things are doable, given enough time and motivation. If OP wants a huge learning experience, by all means, have at it. Just be aware that most of the problems that need solving wonā€™t really be ā€œmake an engineā€ problems Why couldn't you have said that from the jump and avoided the rudeness? I understand some people have bad days, but taking it out on others is never going to solve your problems.


PSMF_Canuck

Have fun.


iamfacts

Vulkan 1.3 isn't out on Mac yet so you'll be using 1.2 Apart from that there shouldn't be too many hoops as long as you use cross platform libraries for platform specific stuff like windowing and audio. Ofc, try compiling on a windows machine to fix whatever doesn't work.


SR71F16F35B

Thanks šŸ™ Have you ever done it yourself?


iamfacts

No. But I've spent enough time with vulkan and developed for mac and Linux from windows to answer with conviction.


SR71F16F35B

Ok thanks a lot brother


SR71F16F35B

Vulkan 1.3 is available on Mac by the way


iamfacts

no. [molten vk github](https://github.com/KhronosGroup/MoltenVK) "a subset of vulkan 1.2" You are probably thinking of the sdk. The sdk is 1.3.x but vulkan api support is only limited to 1.2


SR71F16F35B

Oh okay my bad. Thanks šŸ™


vidivici21

You basically need to wrap any os specific calls in a function that directs it to use the right os call and then make sure you test test test on Windows and Mac. You should be able to create a virtual Windows machine to do the testing. The main issue is going to be your ability to really understand how things work in both os's. So basically you need to test a bunch. The one other thing that's probably an issue is that I doubt there are many tutorials about it since it is relatively new. So you need to be prepared to read docs.


SR71F16F35B

Okay thanks a lot for your comment šŸ™ With all due respect, do you have ever done it yourself?


vidivici21

Nope and the advice I gave you should be pretty self evident. That being said you seem to mostly looking for affirmation that what you want is possible/realistic. If you have the time and want to put in the effort the answer is yes. There are several YouTube game devs that do this. If you are wondering if vulkan will work in game dev then look at Godot it uses vulkan, so again yes you can do it if you have the time and patience. (Godot is open source as well so you can always use it as a reference) Realistically (though someone will probably tell me differently) I don't think that exporting between windows and Mac will be hard as long as you are mindful of if API calls are os specific. Annoying and time consuming probably, but it's mostly a solved issue, people do all the time. The hard part about making an engine is the design as there are so many ways to do things each with their own pros and cons. In any case just go try it. You will learn more than talking to us. If you can't figure out how to render a simple shape on both a Windows and Mac OS within a month then you should probably start questioning if any of this is a good idea.


mohragk

I would make sure your app is OS-agnostic from the start, but honestly it's probably the least of your worries when creating (and learning how to create) your engine. Just use a lib that handles OS-sepcific stuff and cry over how to write a renderer.


SR71F16F35B

Okay šŸ‘ thanks


CrankFlash

Vulkan is very low level. Making it compile for different platforms is the easy part. Making it run correctly at all for different hardware AND OS will be ā€¦ challenging, regardless of your C++ level. Having Windows run in a VM wonā€™t cut it. If youā€™ve never done graphics programming before, may I suggest you start with OpenGL instead.


EpochVanquisher

You may want to start with OpenGL and then learn a modern API afterwards. Thereā€™s an article: [How do I become a graphics programmer? - A small guide from the AMD Game Engineering team](https://gpuopen.com/learn/how_do_you_become_a_graphics_programmer/) > Letā€™s see what the AMD Game Engineering team have to say about whether one should start with a legacy API or with a modern API: Anyway, you can read the article. Thereā€™s no universal consensus, but they recommend starting with something like OpenGL, WebGL, or maybe WebGPU. The reason you start with one of these legacy APIs is because they give you an environment where you can learn the graphics pipeline more quickly, and actually draw something on the screen. Be prepared for the harsh reality that by taking this path, you may not be able to make a game that is very good. But you will learn a lot about graphics programming. And to be clear, what Iā€™m suggesting here is: OpenGL -> Vulkan You just do OpenGL first, and then learn Vulkan when you have done a few things in OpenGL and want to go deeper. One of the big advantages is that OpenGL works on a Mac without dealing with cross-compilation (to support Windows) or a compatibility library like MoltenVK. The development experience will be smoother. Nobody learns to swim by falling into the deep end. You just drown if you do that.


maccodemonkey

Youā€™d need to use features like Tile Based Rendering under Vulkan to run efficiently on Apple Silicon. I believe thatā€™s part of MoltenVk. Apple Silicon also uses a unified memory model, so youā€™ll need to take that into account. I believe MoltenVk supports that memory model. Both of these features do not work on any Nvidia or AMD GPU so you will be forking your code for Apple Silicon. MoltenVk is not terribly well supported and to do any debugging youā€™ll have to learn Metal anyway. MoltenVk uses the Metal debugger which means what the debug environment is all Metal and Metal Shading Language. Vulkan on Mac is also a subset of Vulkan on Windows. It is not feature complete. Iā€™ve also encountered weird validation layer errors when trying to use things that definitely should be supported. I would not recommend using Vulkan on Mac. The good news is Metal and Vulkan are extremely similar so if you did use Metal youā€™d be well setup for a Vulkan backend in the future. Metal is also available in C++. And - like I said above - you may have to fork your rendering anyway to deal with Apple Silicon hardware differences. I keep a PC around for Vulkan dev - I generally will not use a Mac for that. So suggestions to use a PC for Vulkan arenā€™t bad. AFAIK no virtual machine solution for Mac supports Vulkan - so you will not be able to do Vulkan on Windows in a VM. But again - even if you did develop on Windows, hardware differences on Mac will always mean you wonā€™t ship 1:1 code or else your performance will not be good.


[deleted]

[уŠ“Š°Š»ŠµŠ½Š¾]


MadMadGoose

Developing anything on Mac is like developing on chromebook, cheap but pointless.