2003ರ ಪೂರ್ಣ ಪ್ರಮಾಣದ ರಿಯಲ್-ಟೈಮ್ ಸ್ಟ್ರಾಟಜಿ ಗೇಮ್ ಅನ್ನು iPhone ನಲ್ಲಿ ನೇರವಾಗಿ (natively) ಚಲಿಸುವುದನ್ನು ನೋಡುವುದು ಅತ್ಯಂತ ಉತ್ತಮವಾದ ರೀತಿಯಲ್ಲಿ ಸ್ವಲ್ಪ ವಿಚಿತ್ರವೆನಿಸುತ್ತದೆ. ಮರುಭೂಮಿ ನಕ್ಷೆಗಳ ಮೇಲೆ ಟ್ಯಾಂಕ್ಗಳು ಚಲಿಸುತ್ತವೆ. ಜನರಲ್ಗಳು ಆದೇಶಗಳನ್ನು ನೀಡುತ್ತಾರೆ. ಮೂಲ ಕೋಡ್ ಬರೆಯಲ್ಪಟ್ಟಾಗ ಅಸ್ತಿತ್ವದಲ್ಲೇ ಇಲ್ಲದ ಟಚ್ಸ್ಕ್ರೀನ್ಗಳ ಮೇಲೆ ಸಪ್ಲೈ ಲೈನ್ಗಳು ವಿಸ್ತರಿಸುತ್ತವೆ. ಆದರೂ ನಾವು ಇಲ್ಲಿದ್ದೇವೆ. Google AI Studio ನಲ್ಲಿ ಪ್ರಾಡಕ್ಟ್ ಮತ್ತು ಡಿಸೈನ್ ತಂಡವನ್ನು ಮುನ್ನಡೆಸುವ Ammaar Reshi, ಇತ್ತೀಚೆಗೆ Command & Conquer: Generals Zero Hour ಅನ್ನು ತೆಗೆದುಕೊಂಡು, ಒಂದು ಟೆಲಿವಿಷನ್ ಸೀಸನ್ ನೋಡಲು ತೆಗೆದುಕೊಳ್ಳುವ ಅಷ್ಟೇ ಸಮಯದಲ್ಲಿ ಅದರ ನೇರ iOS ಆವೃತ್ತಿಯನ್ನು ನಿರ್ಮಿಸಿದ್ದಾರೆ. ಈ ಯೋಜನೆಯು ಎಮ್ಯುಲೇಶನ್ (emulation) ತಂತ್ರಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿಲ್ಲ. ಇದು Apple silicon ಮೇಲೆ ಚಲಿಸುತ್ತದೆ, Metal ಅನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಎಷ್ಟು ಹಳೆಯ ಸಾಫ್ಟ್ವೇರ್ಗಳು ಇದೇ ಹಾದಿಯನ್ನು ಅನುಸರಿಸಬಹುದು ಎಂಬ ಗಂಭೀರ ಪ್ರಶ್ನೆಗಳನ್ನು ಎತ್ತುತ್ತದೆ.
ವಾಸ್ತವವಾಗಿ ಏನನ್ನು ನಿರ್ಮಿಸಲಾಗಿದೆ
ಇದು ಕೇವಲ ಒಂದು 'wrapper' ಅಲ್ಲ. ಇದು ಇಪ್ಪತ್ತು ವರ್ಷಗಳ ಹಿಂದಿನ Windows PC ನಂತೆ ನಟಿಸುವ ಎಮ್ಯುಲೇಟರ್ನೊಳಗೆ ಚಲಿಸುತ್ತಿಲ್ಲ. ಈ ಗೇಮ್ ARM64 ಗಾಗಿ ಕಾಂಪೈಲ್ ಆಗುತ್ತದೆ ಮತ್ತು ನೇರವಾಗಿ Apple ನ Metal graphics API ಜೊತೆಗೆ ಸಂವಹನ ನಡೆಸುತ್ತದೆ. ಆ ವ್ಯತ್ಯಾಸವು ಬಹಳ ಮುಖ್ಯವಾದುದು. ಎಮ್ಯುಲೇಶನ್ ಫ್ರೇಮ್ಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಇದು ಬ್ಯಾಟರಿಯನ್ನು ಹೆಚ್ಚು ಬಳಸುತ್ತದೆ. ಸ್ಫೋಟಗಳನ್ನು ಬಿಡಿಸುವ ಬದಲು, ಮೊಬೈಲ್ ಚಿಪ್ ತನ್ನ ಹೆಚ್ಚಿನ ಶಕ್ತಿಯನ್ನು ಹಳೆಯ ಸೂಚನೆಗಳನ್ನು ಅನುವಾದಿಸಲು ಬಳಸುವವರೆಗೆ ಇದು ಅಬ್ಸ್ಟ್ರಾಕ್ಷನ್ (abstraction) ಮೇಲೆ ಅಬ್ಸ್ಟ್ರಾಕ್ಷನ್ ಅನ್ನು ಪದೇ ಪದೇ ಸೇರಿಸುತ್ತಾ ಹೋಗುತ್ತದೆ. Reshi ಅವರ ಈ ಪೋರ್ಟ್ ಇವೆಲ್ಲವನ್ನೂ ತಪ್ಪಿಸುತ್ತದೆ.
ಮೂಲ ಗೇಮ್ DirectX 8 ಮೇಲೆ ಬಿಡುಗಡೆಯಾಗಿತ್ತು, ಇದು iPhone ಬರುವ ಕೆಲವು ವರ್ಷಗಳ ಹಿಂದೆಯೇ ಇದ್ದ Microsoft graphics pipeline ಆಗಿದೆ. ಆ ರೆಂಡರಿಂಗ್ ಕಮಾಂಡ್ಗಳನ್ನು Metal ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವಂತೆ ಮಾಡುವುದು ಕೇವಲ 'search-and-replace' ಕೆಲಸವಲ್ಲ. DirectX 8 ಮತ್ತು Metal ಮೆಮೊರಿಯನ್ನು ವಿಭಿನ್ನವಾಗಿ ಸಂಘಟಿಸುತ್ತವೆ. ಅವು ಶೇಡರ್ಗಳನ್ನು (shaders) ವಿಭಿನ್ನವಾಗಿ ನಿರ್ವಹಿಸುತ್ತವೆ. ಅವು ವಿಭಿನ್ನ ಹಾರ್ಡ್ವೇರ್ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಗೇಮ್ನ ದೃಶ್ಯ ತರ್ಕವನ್ನು (visual logic) ಹಾಳು ಮಾಡದೆಯೇ, ಹಳೆಯ DirectX ಕರೆಗಳನ್ನು Metal ಗೆ ಅರ್ಥವಾಗುವ ರೀತಿಯಲ್ಲಿ ಪರಿವರ್ತಿಸಲು Reshi ಮಧ್ಯಂತರ ಅನುವಾದಗಳ ಸರಪಳಿಯ ಮೂಲಕ ಗೇಮ್ನ ಗ್ರಾಫಿಕ್ಸ್ ಅನ್ನು ಹಾದುಹೋಗುವಂತೆ ಮಾಡಬೇಕಾಯಿತು. ಇದರ ಪರಿಣಾಮವಾಗಿ, ಇಂಟರ್ಫೇಸ್ಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಕಸ್ಟಮ್ ಟಚ್ ಕಂಟ್ರೋಲ್ಗಳೊಂದಿಗೆ ಪೂರ್ಣ Campaign, Skirmish ಮತ್ತು Generals Challenge ಮೋಡ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ. ನೀವು ನಿಮ್ಮ ಹೆಬ್ಬೆಂಗುಲಿಯಿಂದ ಬೇಸ್ಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು ಮತ್ತು scud storms ಅನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು.
ಕೆಲವು ಮಿತಿಗಳಿವೆ. ಮೆಮೊರಿ ಒತ್ತಡ ಹೆಚ್ಚಾದಾಗ iPad ನಲ್ಲಿ ದೀರ್ಘಕಾಲದ ಆಟವು ಆಪ್ ಅನ್ನು ಕ್ರ್ಯಾಶ್ ಮಾಡಬಹುದು. ಆರಂಭಿಕ ನೇರ ಪೋರ್ಟ್ಗಳು ಹೆಚ್ಚಾಗಿ ಇಂತಹ ಸಮಸ್ಯೆಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ, ಮತ್ತು ಕೆಲವು ಗಂಟೆಗಳ AI-ಸಹಾಯದ ಡಿಬಗ್ಗಿಂಗ್ (debugging) ದಶಕಗಳ ಆಸ್ತಿ ಲೋಡಿಂಗ್ ಮಾದರಿಗಳನ್ನು (asset loading patterns) ಸಂಪೂರ್ಣವಾಗಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಎಂಬುದಕ್ಕೆ ಇದು ಒಂದು ಪ್ರಾಮಾಣಿಕ ನೆನಪೋರಿಸುತ್ತದೆ. ಆದರೂ, ಇದರ ಕೋರ್ ಇಂಜಿನ್ ಸ್ವತಂತ್ರವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಕಾರ್ಯವಿಧಾನ: Claude Code, Fable 5, ಮತ್ತು ನಲವತ್ತು ನಿಮಿಷಗಳು
ವೇಗವು ಇಲ್ಲಿ ಮುಖ್ಯ ವಿಷಯವಾಗಿದೆ, ಆದರೆ ಅದರ ಹಿಂದಿರುವ ಕಾರ್ಯವಿಧಾನವು ಪ್ರತಿಯೊಬ್ಬ ಕೆಲಸ ಮಾಡುವ ಡೆವಲಪರ್ನ ಗಮನ ಸೆಳೆಯಬೇಕು. Reshi, Anthropic ನ Claude Code ಅನ್ನು Fable 5 ಎಂಬ ಸಾಧನದೊಂದಿಗೆ ಬಳಸಿದರು. ಆರಂಭಿಕ ಬಿಲ್ಡ್ ಸುಮಾರು ನಲವತ್ತು ನಿಮಿಷಗಳನ್ನು ತೆಗೆದುಕೊಂಡಿತು. ಡಿಬಗ್ಗಿಂಗ್ ಮತ್ತು ಸುಧಾರಣೆಗೆ ಇನ್ನೂ ಕೆಲವು ಗಂಟೆಗಳು ಬೇಕಾದವು. ಇಡೀ ಯೋಜನೆಯ ಅವಧಿ ಅಷ್ಟೇ.
ಇದು ಯಾವುದನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಯೋಚಿಸಿ. ಇಷ್ಟು ದೊಡ್ಡ ಮಟ್ಟದ ಮ್ಯಾನುಯಲ್ ಪೋರ್ಟ್ ಸಾಮಾನ್ಯವಾಗಿ ಒಬ್ಬ ಪ್ರೋಗ್ರಾಮರ್ ಮೂಲ ಬಿಲ್ಡ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಮ್ಯಾಪಿಂಗ್ ಮಾಡಲು ದಿನಗಟ್ಟಲೆ ಕಳೆಯುವುದರೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನಂತರ ರೆಂಡರರ್ ಬರೆಯುವುದು (renderer rewrite), ನಂತರ ಶೇಡರ್ ಅನುವಾದ (shader translation), ನಂತರ ARM64 ಗಾಗಿ ಆರ್ಕಿಟೆಕ್ಚರ್ ಹೊಂದಾಣಿಕೆಗಳು. ನಂತರ ಇನ್ಪುಟ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್, ಆಡಿಯೋ, ಮೆಮೊರಿ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ ಮತ್ತು ಹಳೆಯ ಕೋಡ್ ಅನ್ನು ಹೊಸ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗೆ ಅಷ್ಟು ಕಷ್ಟಕರವಾಗಿಸುವ ಸಾವಿರಾರು ಸಣ್ಣಪುಟ್ಟ ಸಮಸ್ಯೆಗಳು. ಆ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ತಿಂಗಳುಗಳು ಕಳೆದುಹೋಗುತ್ತವೆ. Reshi ತಾನು ಮಾರ್ಗದರ್ಶನ ನೀಡುವಾಗ, ಒಂದು ಏಜೆಂಟಿಕ್ AI ಸಾಧನವು ಕಠಿಣವಾದ ಅನುವಾದದ ಕೆಲಸವನ್ನು ನಿರ್ವಹಿಸಲು ಬಿಡುವ ಮೂಲಕ ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಒಂದು ಮಧ್ಯಾಹ್ನಕ್ಕೆ ಸೀಮಿತಗೊಳಿಸಿದರು.
ಈ ತೀವ್ರತೆಯು ಬಿಲ್ಲಿಂಗ್ನಲ್ಲಿ ಕಂಡುಬಂದಿತು. Reshi ಎರಡು ದಿನಗಳ ಕೆಲಸದಲ್ಲಿ ತನ್ನ ಸಂಪೂರ್ಣ Claude Max ಕೋಟಾವನ್ನು ಬಳಸಿದರು. ದೀರ್ಘ ಕೋಡಿಂಗ್ ಸೆಷನ್ ಸಮಯದಲ್ಲಿ ತಮ್ಮ API ಕ್ರೆಡಿಟ್ಗಳು ಮಾಯವಾಗುವುದನ್ನು ನೋಡಿದ ಯಾರಿಗಾದರೂ ಆ ಅನುಭವ ತಿಳಿದಿರುತ್ತದೆ. ಇಲ್ಲಿನ ವ್ಯತ್ಯಾಸವೆಂದರೆ, ಈ ಬಳಕೆ ಕೇವಲ ಕೆಲವು ಪ್ರಯೋಗಾತ್ಮಕ ಸ್ಕ್ರಿಪ್ಟ್ಗಳ ಬದಲಿಗೆ, ಬಿಡುಗಡೆ ಮಾಡಲು ಯೋಗ್ಯವಾದ ಗುಣಮಟ್ಟದ ನೇರ ಪೋರ್ಟ್ ಅನ್ನು ನೀಡಿತು.
ಗಮನಿಸಬೇಕಾದ ಒಂದು ವೃತ್ತಿಪರ ವಿಷಯವೂ ಇದೆ. Reshi, Google DeepMind ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಾರೆ. ಅವರು Google ನ ಸ್ವಂತ ಮಾಡೆಲ್ಗಳನ್ನು ಬಳಸಬಹುದಿತ್ತು. ಆದರೆ ಅವರು ಹಾಗೆ ಮಾಡಲಿಲ್ಲ. ಕೆಲಸಕ್ಕೆ ಸೂಕ್ತವೆಂದು ಕಂಡಿದ್ದರಿಂದ ಅವರು Anthropic ನ Claude ಅನ್ನು ಆರಿಸಿಕೊಂಡರು. ಯೋಜನೆಯ ಬಗ್ಗೆ ಅವರು ನೀಡಿದ ತಮ್ಮ ಸ್ವಂತ ಕಾಮೆಂಟ್ಗಳಲ್ಲಿ, ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವನ್ನು ನಿರ್ಮಿಸುವತ್ತ ಗಮನಹರಿಸುವಾಗ ಸ್ಪರ್ಧೆಯನ್ನು ಗೌರವಿಸಬಹುದು ಎಂದು ಅವರು ಸ್ಪಷ್ಟಪಡಿಸಿದ್ದಾರೆ. ಅಂತಹ ಮನೋಭಾವವು ಹರಡುತ್ತಿದೆ. ಈ ಕ್ಷೇತ್ರದ ಉನ್ನತ ಮಟ್ಟದ ಎಂಜಿನಿಯರ್ಗಳು 'model agnostic' ಆಗುತ್ತಿದ್ದಾರೆ. ಅವರು AI ಸಾಧನಗಳನ್ನು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ಅಥವಾ ಕ್ಲೌಡ್ ಪ್ರೊವೈಡರ್ಗಳಂತೆ ಪರಿಗಣಿಸುತ್ತಾರೆ: ಕೆಲಸಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವದ್ದನ್ನು ಆರಿಸಿ, ನಿಮ್ಮ ಕಂಪನಿಯ ಬ್ಯಾಡ್ಜ್ನಲ್ಲಿರುವದ್ದನ್ನಲ್ಲ.