ਸਭ ਤੋਂ ਵਧੀਆ ਰੋਗਲਾਈਕ (roguelikes) ਤੁਹਾਨੂੰ ਸਿਰਫ਼ ਮਾਰਦੇ ਹੀ ਨਹੀਂ। ਉਹ ਤੁਹਾਨੂੰ ਮਰਨ ਦੀ ਇੱਛਾ ਕਰਨ ਲਗਦੇ ਹਨ।
ਇਹ ਸੁਣਨ ਵਿੱਚ ਅਜੀਬ ਲੱਗ ਸਕਦਾ ਹੈ, ਪਰ ਜਿਸ ਕਿਸੇ ਨੇ ਵੀ ਅੱਧੀ ਰਾਤ ਨੂੰ ਆਪਣੀ ਇੱਕ ਰਨ (run) ਹਾਰ ਦਿੱਤੀ ਹੋਵੇ ਅਤੇ 12:03 'ਤੇ ਦੂਜੀ ਸ਼ੁਰੂ ਕੀਤੀ ਹੋਵੇ, ਉਹ ਇਸ ਅਹਿਸਾਸ ਨੂੰ ਜਾਣਦਾ ਹੈ। ਮੌਤ ਦੁੱਖ ਦਿੰਦੀ ਹੈ। ਤੁਹਾਡੀ ਸਿਹਤ (health) ਜ਼ੀਰੋ ਹੋ ਜਾਂਦੀ ਹੈ। ਸਕ੍ਰੀਨ ਅਸਫਲਤਾ ਨਾਲ ਭਰ ਜਾਂਦੀ ਹੈ। ਫਿਰ ਵੀ ਤੁਹਾਡੀ ਉਂਗਲ ਪਹਿਲਾਂ ਹੀ 'play' ਬਟਨ ਦੇ ਉੱਪਰ ਹੋਵੇ ਹੁੰਦੀ ਹੈ। ਪਿਛਲੇ ਵੀਹ ਮਿੰਟਾਂ ਵਿੱਚ ਕੁਝ ਅਜਿਹਾ ਸੀ ਜੋ ਇੰਨਾ ਮਹੱਤਵਪੂਰਨ ਸੀ ਕਿ ਤੁਸੀਂ ਗੇਮ ਨੂੰ ਉੱਥੇ ਨਹੀਂ ਛੱਡ ਸਕਦੇ ਜਿੱਥੇ ਇਹ ਖਤਮ ਹੋਈ ਸੀ।
ਇਹ "ਇੱਕ ਹੋਰ ਰਨ" (one more run) ਲੂਪ ਹੈ, ਅਤੇ ਇਹ ਇਤਫ਼ਾਕ ਨਹੀਂ ਹੈ। ਇਹ ਜਾਣਬੁੱਝ ਕੇ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਕੋਈ ਰੋਗਲਾਈਕ ਜਾਂ 'permadeath' ਵਾਲੀ ਕੋਈ ਵੀ ਗੇਮ ਬਣਾ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਹਾਡਾ ਪੂਰਾ ਕੰਮ ਦੋ ਵਿਰੋਧੀ ਸ਼ਕਤੀਆਂ ਵਿੱਚ ਸੰਤੁਲਨ ਬਣਾਉਣਾ ਹੈ। ਖਿਡਾਰੀ ਨੂੰ ਤਣਾਅ ਮਹਿਸੂਸ ਕਰਨ ਲਈ ਕਾਫ਼ੀ ਹਾਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਉਨ੍ਹਾਂ ਨੂੰ ਉਮੀਦ ਬਣਾਈ ਰੱਖਣ ਲਈ ਕਾਫ਼ੀ ਕੁਝ ਮਿਲਣਾ ਚਾਹੀਦਾ ਹੈ।
ਅਸਫਲਤਾ ਦੀ ਕਰੰਸੀ (The Currency of Failure)
ਮੇਰੇ ਤਾਜ਼ਾ ਪ੍ਰੋਜੈਕਟ, Neon Survivor ਵਿੱਚ, ਮੈਂ ਬਿਲਕੁਲ ਉਹੀ ਤਣਾਅ ਚਾਹੁੰਦਾ ਸੀ। ਜਦੋਂ ਖਿਡਾਰੀ ਮਰਦਾ ਹੈ, ਤਾਂ ਰਨ ਦੌਰਾਨ ਇਕੱਠਾ ਕੀਤਾ ਗਿਆ ਸਭ ਕੁਝ ਗਾਇਬ ਹੋ ਜਾਂਦਾ ਹੈ ਸਿਵਾਏ ਇੱਕ ਚੀਜ਼ ਦੇ: ਸੋਨਾ (gold)। ਉਹ ਸੋਨਾ ਆਪਣੇ ਆਪ ਬੈਂਕ ਵਿੱਚ ਜਮ੍ਹਾਂ ਹੋ ਜਾਂਦਾ ਹੈ। ਮੀਨੂ ਵਿੱਚ ਵਾਪਸ ਆ ਕੇ, ਉਹ ਇਸਨੂੰ ਪੱਕੇ ਅੱਪਗ੍ਰੇਡਾਂ (permanent upgrades) 'ਤੇ ਖਰਚਦੇ ਹਨ। ਫਿਰ ਉਹ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹਨ, ਪਹਿਲਾਂ ਨਾਲੋਂ ਥੋੜ੍ਹੇ ਜ਼ਿਆਦਾ ਮਜ਼ਬੂਤ।
ਇਹ ਸਧਾਰਨ ਲੂਪ ਪੂਰੀ ਗੇਮ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਇਸ ਤੋਂ ਬਿਨਾਂ, ਮੌਤ ਇੱਕ ਪੂਰਾ ਵਿਰਾਮ (full stop) ਹੈ। ਖਿਡਾਰੀ ਚਲਿਆ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਪਿਛਲੀ ਰਨ ਤੋਂ ਉਸਨੂੰ ਕੁਝ ਨਹੀਂ ਮਿਲਿਆ। ਇਸ ਦੇ ਨਾਲ, ਮੌਤ ਇੱਕ ਅੰਗੂਲ (comma) ਹੈ। ਰਨ ਇੱਕ ਫਾਰਮਿੰਗ ਟ੍ਰਿਪ ਬਣ ਗਈ। ਹਾਰ ਦੁੱਖ ਦਿੰਦੀ ਹੈ, ਪਰ ਇਹ ਆਉਣ ਵਾਲੇ ਕੱਲ੍ਹ ਲਈ ਭੁਗਤਾਨ ਵੀ ਕਰਦੀ ਹੈ।
ਤਰੀਕਾ ਸਧਾਰਨ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਬਾਕੀ ਸਭ ਕੁਝ ਹਾਰ ਜਾਂਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਕੁਝ ਨਾ ਕੁਝ ਆਪਣੇ ਕੋਲ ਰੱਖਦੇ ਹੋ। ਮੁਸ਼ਕਲ ਇਹ ਹੈ ਕਿ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਜੋ ਚੀਜ਼ ਤੁਸੀਂ ਰੱਖਦੇ ਹੋ ਉਹ ਚੁਣੌਤੀ ਨੂੰ ਖਤਮ ਕੀਤੇ ਬਿਨਾਂ ਮਹੱਤਵਪੂਰਨ ਹੋਵੇ। ਜੇਕਰ ਅੱਪਗ੍ਰੇਡ ਬਹੁਤ ਕਮਜ਼ੋਰ ਹਨ, ਤਾਂ ਖਿਡਾਰੀ ਪਰਵਾਹ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦਾ ਹੈ। ਜੇਕਰ ਉਹ ਬਹੁਤ ਮਜ਼ਬੂਤ ਹਨ, ਤਾਂ ਗੇਮ ਆਪਣੇ ਆਪ ਖੇਡੀ ਜਾਣ ਲੱਗਦੀ ਹੈ। ਦੋਵਾਂ ਹੀ ਮਾਮਲਿਆਂ ਵਿੱਚ ਲੂਪ ਟੁੱਟ ਜਾਂਦਾ ਹੈ।
ਦੋ ਘੜੀਆਂ, ਜ਼ੀਰੋ ਉਲਝਣ (Two Clocks, Zero Confusion)
ਇਸ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਬਣਾਉਣ ਲਈ, ਮੈਨੂੰ ਦੋ ਵੱਖ-ਵੱਖ ਟਾਈਮਲਾਈਨਾਂ ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰਨਾ ਪਿਆ।
Run Clock ਹਰ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ play ਕਰਦੇ ਹੋ, ਰੀਸੈੱਟ ਹੋ ਜਾਂਦੀ ਹੈ। ਇਹ ਸਿਹਤ (health), ਮੌਜੂਦਾ ਸਕੋਰ, ਦੁਸ਼ਮਣ ਦੀਆਂ ਲਹਿਰਾਂ (enemy wave count), ਅਤੇ ਸੈਸ਼ਨ ਦੌਰਾਨ ਲਏ ਗਏ ਕਿਸੇ ਵੀ ਅਸਥਾਈ ਪਾਵਰ-ਅੱਪਸ ਨੂੰ ਟ੍ਰੈਕ ਕਰਦੀ ਹੈ। ਜਦੋਂ ਕਿਰਦਾਰ ਮਰਦਾ ਹੈ, ਇਹ ਘੜੀ ਜ਼ੀਰੋ 'ਤੇ ਵਾਪਸ ਆ ਜਾਂਦੀ ਹੈ।
Meta Clock ਕਦੇ ਰੀਸੈੱਟ ਨਹੀਂ ਹੁੰਦੀ। ਇਹ ਹਰ ਕੋਸ਼ਿਸ਼ ਦੌਰਾਨ ਕਮਾਇਆ ਗਿਆ ਕੁੱਲ ਸੋਨਾ, ਹੁਣ ਤੱਕ ਪਹੁੰਚੀ ਸਭ ਤੋਂ ਉੱਚੀ ਲਹਿਰ, ਅਤੇ ਖਰੀਦੀ ਗਈ ਹਰ ਪੱਕੀ ਅੱਪਗ੍ਰੇਡ ਨੂੰ ਸੰਭਾਲ ਕੇ ਰੱਖਦੀ ਹੈ। ਭਾਵੇਂ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਕਿੰਨੀ ਵੀ ਵਾਰ ਰਿਫ੍ਰੈਸ਼ ਕੀਤਾ ਜਾਵੇ, ਇਹ ਘੜੀ ਚਲਦੀ ਰਹਿੰਦੀ ਹੈ।
ਇਨ੍ਹਾਂ ਦੋਵਾਂ ਨੂੰ ਮਿਲਾਉਣ ਨਾਲ ਅਜਿਹੇ ਬੱਗ (bugs) ਪੈਦਾ ਹੁੰਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ ਲੱਭਣਾ ਮੁਸ਼ਕਲ ਅਤੇ ਠੀਕ ਕਰਨਾ ਦੁਖਦਾਈ ਹੁੰਦਾ ਹੈ। ਮੈਂ ਦੇਖਿਆ ਹੈ ਕਿ ਡਿਵੈਲਪਰਾਂ ਨੇ ਰੁਟੀਨ ਸੀਨ ਰੀਸੈੱਟ ਦੌਰਾਨ ਗਲਤੀ ਨਾਲ ਖਿਡਾਰੀ ਦੀ ਪ੍ਰਗਤੀ (progress) ਮਿਟਾ ਦਿੱਤੀ ਕਿਉਂਕਿ ਇੱਕ ਕਲੀਨਅੱਪ ਫੰਕਸ਼ਨ ਨੇ ਗਲਤ ਡਾਟਾ ਸਟੋਰ ਨੂੰ ਛੂਹ ਲਿਆ ਸੀ। Meta Clock ਦਾ ਡਾਟਾ ਉੱਡ ਜਾਂਦਾ ਹੈ। ਖਿਡਾਰੀ ਜ਼ੀਰੋ ਸੋਨੇ ਅਤੇ ਜ਼ੀਰੋ ਅੱਪਗ੍ਰੇਡਾਂ 'ਤੇ ਵਾਪਸ ਆ ਜਾਂਦਾ ਹੈ। ਉਸ ਸਮੇਂ, ਤੁਹਾਡੇ ਅਤੇ ਤੁਹਾਡੇ ਖਿਡਾਰੀ ਵਿਚਕਾਰ ਰਿਸ਼ਤਾ ਟੁੱਟ ਜਾਂਦਾ ਹੈ। ਉਹ ਇੱਕ ਨਵੀਂ ਰਨ ਸ਼ੁਰੂ ਨਹੀਂ ਕਰ ਰਹੇ ਹੁੰਦੇ; ਉਹ ਇੱਕ ਨਵਾਂ ਗੁੱਸਾ (grudge) ਸ਼ੁਰੂ ਕਰ ਰਹੇ ਹੁੰਦੇ ਹਨ।
ਘੜੀਆਂ ਨੂੰ ਵੱਖ ਰੱਖਣਾ ਸਿਰਫ਼ ਇੱਕ ਸਟਾਈਲ ਦੀ ਚੋਣ ਨਹੀਂ ਹੈ। ਇਹ ਇੱਕ ਬਚਾਅ ਦੀ ਰਣਨੀਤੀ (survival strategy) ਹੈ।
Phaser v4 ਇਸ ਵੰਡ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਦਾ ਹੈ (How Phaser v4 Handles the Split)
ਮੈਂ Neon Survivor Phaser v4 ਵਿੱਚ ਬਣਾਇਆ ਹੈ, ਜੋ ਇਸ ਸਮੱਸਿਆ ਲਈ ਦੋ ਵਿਸ਼ੇਸ਼ ਟੂਲ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
Registry ਮੌਜੂਦਾ ਸੈਸ਼ਨ ਲਈ ਮੈਮੋਰੀ ਵਿੱਚ ਲਾਈਵ ਡਾਟਾ ਰੱਖਦੀ ਹੈ। ਇਹ ਤੇਜ਼ ਹੈ। ਇਹ ਸਧਾਰਨ ਹੈ। ਇਹ ਉਸੇ ਪਲ ਵੀ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ ਜਦੋਂ ਖਿਡਾਰੀ ਪੇਜ ਨੂੰ ਰਿਫ੍ਰੈਸ਼ ਕਰਦਾ ਹੈ।
LocalStorage ਡਾਟਾ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਹੀ ਸੇਵ ਕਰਦਾ ਹੈ। ਇਹ ਟੈਬ ਬੰਦ ਕਰਨ, ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਕਰਨ ਅਤੇ ਪਾਵਰ ਕੱਟਾਂ ਤੋਂ ਬਾਅਦ ਵੀ ਬਚਿਆ ਰਹਿੰਦਾ ਹੈ। ਇਹ ਥੋੜ੍ਹਾ ਹੌਲੀ ਅਤੇ ਘੱਟ ਭਰੋਸੇਯੋਗ ਵੀ ਹੈ। ਬ੍ਰਾਊਜ਼ਰ ਇਸਨੂੰ ਬਲਾਕ ਕਰ ਸਕਦੇ ਹਨ, ਇਸਦੀ ਰਫ਼ਤਾਰ ਘਟਾ ਸਕਦੇ ਹਨ, ਜਾਂ ਜੇਕਰ ਸਟੋਰੇਜ ਕੋਟਾ ਭਰ ਜਾਂਦਾ ਹੈ ਤਾਂ ਇਸਨੂੰ ਮਿਟਾ ਸਕਦੇ ਹਨ।
ਮੇਰੀ ਡਿਜ਼ਾਈਨ ਚੋਣ ਸਖ਼ਤ ਸੀ। ਗੇਮਪਲੇ ਦੌਰਾਨ Registry ਹੀ ਸੱਚ ਦਾ ਇਕਲੌਤਾ ਸਰੋਤ (source of truth) ਹੈ। ਗੇਮ ਇਸ ਤੋਂ ਪੜ੍ਹਦੀ ਹੈ, ਇਸ ਵਿੱਚ ਲਿਖਦੀ ਹੈ, ਅਤੇ ਇਸ 'ਤੇ ਪੂਰੀ ਤਰ੍ਹਾਂ ਭਰੋਸਾ ਕਰਦੀ ਹੈ। LocalStorage ਇੱਕ ਸਹਿ-ਲੇਖਕ (co-author) ਵਜੋਂ ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਇਹ ਇੱਕ ਸ਼ੀਸ਼ੇ (mirror) ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ।
ਇੱਥੇ ਫਲੋਅ (flow) ਇਸ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਗੇਮ Registry ਵਿੱਚ ਅੱਪਗ੍ਰੇਡ ਦੀ ਖਰੀਦ ਲਿਖਦੀ ਹੈ। ਇੱਕ ਸਿੰਗਲ ਮੈਨੇਜਰ ਕਲਾਸ Registry 'ਤੇ ਨਜ਼ਰ ਰੱਖਦੀ ਹੈ। ਉਚਿਤ ਸਮੇਂ 'ਤੇ, ਉਹ ਮੈਨੇਜਰ Registry ਦੇ ਡਾਟਾ ਨੂੰ LocalStorage ਵਿੱਚ ਮਿਰਰ (mirror) ਕਰਦਾ ਹੈ। ਜੇਕਰ ਬ੍ਰਾਊਜ਼ਰ ਲਿਖਣ ਨੂੰ ਬਲਾਕ ਕਰਦਾ ਹੈ, ਤਾਂ ਗੇਮ ਰੁਕਦੀ ਨਹੀਂ ਹੈ। ਜੇਕਰ ਸਟੋਰੇਜ ਫੇਲ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਮੌਜੂਦਾ ਸੈਸ਼ਨ ਫਿਰ ਵੀ ਵਧੀਆ ਤਰੀਕੇ ਨਾਲ ਚੱਲਦਾ ਹੈ। ਖਿਡਾਰੀ ਆਪਣੀ ਪ੍ਰਗਤੀ (progress) ਸਿਰਫ਼ ਉਦੋਂ ਹੀ ਗੁਆ ਸਕਦਾ ਹੈ ਜੇਕਰ ਉਹ ਬਿਲਕੁਲ ਉਸੇ ਸੈਕਿੰਡ ਵਿੱਚ ਟੈਬ ਬੰਦ ਕਰ ਦੇਵੇ, ਪਰ ਸੈਸ਼ਨ ਖੁਦ ਕਦੇ ਵੀ
ਇੱਕ ਵੱਖਰਾ ਲਿਸਨਰ (listener) ਰਿਕਾਰਡ ਰੱਖਣ ਦਾ ਕੰਮ ਸੰਭਾਲਦਾ ਹੈ। ਇਹ ਈਵੈਂਟ (event) ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, Meta Clock ਨੂੰ ਅਪਡੇਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਮੈਨੇਜਰ ਨੂੰ ਨਵੇਂ ਟੋਟਲਾਂ ਨੂੰ LocalStorage ਵਿੱਚ ਮਿਰਰ (mirror) ਕਰਨ ਲਈ ਕਹਿੰਦਾ ਹੈ।
ਇਹ ਵੱਖਰੇਵੇਂ ਦਾ ਫਾਇਦਾ ਤੁਰੰਤ ਮਿਲਦਾ ਹੈ। ਮੈਂ ਸੇਵ ਸਿਸਟਮ ਨੂੰ ਛੇੜੇ ਬਿਨਾਂ ਪੂਰੇ GameScene ਨੂੰ ਦੁਬਾਰਾ ਲਿਖ ਸਕਦਾ ਹਾਂ, ਖਿਡਾਰੀ ਦੇ ਕਿਰਦਾਰ ਨੂੰ ਬਦਲ ਸਕਦਾ ਹਾਂ, ਕੈਮਰੇ ਦਾ ਐਂਗਲ ਬਦਲ ਸਕਦਾ ਹਾਂ, ਜਾਂ ਜੈਨਰ ਨੂੰ survival ਤੋਂ bullet hell ਵਿੱਚ ਵੀ ਬਦਲ ਸਕਦਾ ਹਾਂ। ਸਿਸਟਮ ਸੁਤੰਤਰ ਹਨ। ਉਹ ਸਿੱਧੇ ਫੰਕਸ਼ਨ ਕਾਲ (function calls) ਰਾਹੀਂ ਨਹੀਂ, ਸਗੋਂ ਈਵੈਂਟਸ (events) ਰਾਹੀਂ ਗੱਲ ਕਰਦੇ ਹਨ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਘੱਟ ਮਰਜ ਕੰਫਲਿਕਟਸ (merge conflicts), ਘੱਟ ਬੱਗਸ (bugs), ਅਤੇ ਇੱਕ ਅਜਿਹਾ ਕੋਡਬੇਸ ਜੋ ਛੇ ਮਹੀਨਿਆਂ ਬਾਅਦ ਖਿਲਾਰਾ (spaghetti) ਨਹੀਂ ਬਣਦਾ।
ਅਪਗ੍ਰੇਡ ਜੋ ਖੇਡ ਨੂੰ ਬਦਲ ਦਿੰਦੇ ਹਨ
ਜੇਕਰ ਇਨਾਮ (rewards) ਕਿਸੇ ਸਪ੍ਰੈਡਸ਼ੀਟ ਵਾਂਗ ਮਹਿਸੂਸ ਹੁੰਦੇ ਹਨ, ਤਾਂ ਇੱਕ ਮਜ਼ਬੂਤ ਤਕਨੀਕੀ ਬੁਨਿਆਦ ਹੋਣਾ ਬੇਕਾਰ ਹੈ। ਮੈਂ ਇਸ ਗੱਲ 'ਤੇ ਬਹੁਤ ਸਮਾਂ ਬਿਤਾਇਆ ਹੈ ਕਿ ਅਪਗ੍ਰੇਡ ਖੇਡਣ ਵੇਲੇ ਅਸਲ ਵਿੱਚ ਕਿਹੋ ਜਿਹੇ ਮਹਿਸੂਸ ਹੁੰਦੇ ਹਨ।
ਕੁਝ ਅਪਗ੍ਰੇਡ ਸੁਰੱਖਿਅਤ ਹੁੰਦੇ ਹਨ। ਵਾਧੂ ਚੱਲਣ ਦੀ ਗਤੀ। ਬੋਨਸ ਸਿਹਤ। ਤੇਜ਼ ਰੀਲੋਡ। ਇਹ ਖਿਡਾਰੀ ਨੂੰ ਗਲਤੀ ਕਰਨ ਲਈ ਵਧੇਰੇ ਗੁੰਜਾਇਸ਼ ਦਿੰਦੇ ਹਨ। ਇਹ ਸਹਿਜ ਮਹਿਸੂਸ ਕਰਵਾਉਂਦੇ ਹਨ। ਉਹ ਖੇਡ ਦੇ ਨਿਯਮਾਂ ਨੂੰ ਬਦਲੇ ਬਿਨਾਂ ਖੇਡ ਨੂੰ ਸੌਖਾ ਬਣਾ ਦਿੰਦੇ ਹਨ।
ਹੋਰ ਅਪਗ੍ਰੇਡ ਨਿਯਮਾਂ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬਦਲ ਦਿੰਦੇ ਹਨ। Neon Survivor ਵਿੱਚ, ਮੈਂ "Piercing Rounds" ਜੋੜੇ। ਇਸ ਅਪਗ੍ਰੇਡ ਤੋਂ ਪਹਿਲਾਂ, ਇੱਕ ਗੋਲੀ ਪਹਿਲੇ ਦੁਸ਼ਮਣ 'ਤੇ ਲੱਗਦੇ ਹੀ ਰੁਕ ਜਾਂਦੀ ਸੀ। ਅਪਗ੍ਰੇਡ ਤੋਂ ਬਾਅਦ, ਇਹ ਦੁਸ਼ਮਣਾਂ ਦੇ ਪਾਰ ਨਿਕਲ ਜਾਂਦੀ ਹੈ, ਜੋ ਕਿ ਇੱਕੋ ਸ਼ਾਟ ਵਿੱਚ ਪੂਰੀਆਂ ਲਾਈਨਾਂ ਨੂੰ ਸਾਫ਼ ਕਰ ਸਕਦੀ ਹੈ।
ਇਹ ਅੰਤਰ ਬਹੁਤ ਵੱਡਾ ਹੈ। ਗਤੀ ਅਤੇ ਸਿਹਤ ਤੁਹਾਨੂੰ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਜਿਉਂਦੇ ਰਹਿਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ, ਪਰ Piercing Rounds ਤੁਹਾਡੀ ਖੇਡਣ ਦੀ ਤਕਨੀਕ (positioning) ਨੂੰ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਦੁਸ਼ਮਣਾਂ ਨੂੰ ਇੱਕ ਲਾਈਨ ਵਿੱਚ ਲਿਆਉਣਾ ਸ਼ੁਰੂ ਕਰ ਦਿੰਦੇ ਹੋ। ਤੁਸੀਂ ਕਿਨਾਰਿਆਂ ਤੋਂ ਘੁੰਮਣ ਦੀ ਬਜਾਏ ਸਿੱਧਾ ਵਿਚਕਾਰੋਂ ਰਸਤਾ ਬਣਾਉਣਾ ਸ਼ੁਰੂ ਕਰ ਦਿੰਦੇ ਹੋ। ਖੇਡ ਵਿੱਚ ਫੈਸਲੇ ਲੈਣ ਦੀ ਰੇਂਜ ਵਧ ਜਾਂਦੀ ਹੈ।
ਚੰਗੀ ਪ੍ਰੋਗਰੈਸ਼ਨ (progression) ਨੂੰ ਖਿਡਾਰੀ ਦੇ ਫੈਸਲਿਆਂ ਨੂੰ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ, ਨਾ ਕਿ ਸਿਰਫ਼ ਉਨ੍ਹਾਂ ਦੇ ਅੰਕਾਂ ਨੂੰ ਵਧਾਉਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇਕਰ ਹਰ ਅਪਗ੍ਰੇਡ ਸਿਰਫ਼ ਇੱਕ ਪ੍ਰਤੀਸ਼ਤ ਵਾਧਾ ਹੈ, ਤਾਂ ਖਿਡਾਰੀ ਵੇਰਵੇ ਪੜ੍ਹਨਾ ਬੰਦ ਕਰ ਦਿੰਦੇ ਹਨ। ਉਹ ਕਲਿੱਕ ਕਰਦੇ ਹਨ, ਅਪਗ੍ਰੇਡ ਕਰਦੇ ਹਨ, ਅਤੇ ਭੁੱਲ ਜਾਂਦੇ ਹਨ। ਜੇਕਰ ਕੋਈ ਅਪਗ੍ਰੇਡ ਉਨ੍ਹਾਂ ਨੂੰ ਆਪਣੀ ਰਣਨੀਤੀ ਬਾਰੇ ਮੁੜ ਵਿਚਾਰ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਦਾ ਹੈ, ਤਾਂ ਉਹ ਇਸਨੂੰ ਯਾਦ ਰੱਖਦੇ ਹਨ। ਉਹ ਇਸ ਬਾਰੇ ਗੱਲ ਕਰਦੇ ਹਨ। ਉਹ ਇਹ ਦੇਖਣ ਲਈ ਵਾਪਸ ਆਉਂਦੇ ਹਨ ਕਿ ਹੋਰ ਕੀ ਕੁਝ ਖੇਡ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਬਦਲ ਸਕਦਾ ਹੈ।
ਅਸਲ ਫਾਇਦਾ
"ਇੱਕ ਹੋਰ ਰਨ" (one more run) ਲੂਪ ਕੋਈ ਇੱਕ ਸਿੰਗਲ ਸਿਸਟਮ ਨਹੀਂ ਹੈ। ਇਹ ਨੁਕਸਾਨ ਅਤੇ ਲਾਭ ਵਿਚਕਾਰ ਇੱਕ ਸਬੰਧ ਹੈ, ਜੋ ਸਾਫ਼ ਆਰਕੀਟੈਕਚਰ ਅਤੇ ਅਰਥਪੂਰਨ ਇਨਾਮਾਂ 'ਤੇ ਬਣਿਆ ਹੈ।
ਦੋ ਵੱਖ-ਵੱਖ ਟਾਈਮਲਾਈਨਾਂ ਬਣਾਓ ਅਤੇ Meta Clock ਦੀ ਇਸ ਤਰ੍ਹਾਂ ਰੱਖਿਆ ਕਰੋ ਜਿਵੇਂ ਕਿ ਇਹ ਤੁਹਾਡੇ ਖਿਡਾਰੀਆਂ ਦਾ ਭਰੋਸਾ ਹੋਵੇ, ਕਿਉਂਕਿ ਇਹ ਅਸਲ ਵਿੱਚ ਹੈ। ਲਾਈਵ ਡੇਟਾ ਨੂੰ ਤੇਜ਼ ਅਤੇ ਪਰਸਿਸਟੈਂਟ ਡੇਟਾ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ ਆਪਣੇ ਇੰਜਣ ਦੇ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਆਪਣੇ ਸੀਨਾਂ (scenes) ਨੂੰ ਸਟੋਰੇਜ ਤੋਂ ਵੱਖ (decouple) ਕਰੋ ਤਾਂ ਜੋ ਤੁਸੀਂ ਬਿਨਾਂ ਕਿਸੇ ਡਰ ਦੇ ਵਾਰ-ਵਾਰ ਸੁਧਾਰ (iterate) ਕਰ ਸਕੋ। ਅਤੇ ਜਦੋਂ ਤੁਸੀਂ ਅਪਗ੍ਰੇਡ ਡਿਜ਼ਾਈਨ ਕਰਦੇ ਹੋ, ਤਾਂ ਆਪਣੇ ਆਪ ਨੂੰ ਪੁੱਛੋ ਕਿ ਕੀ ਉਹ ਖਿਡਾਰੀ ਨੂੰ ਵਧੇਰੇ ਸਮਾਂ ਦਿੰਦੇ ਹਨ, ਜਾਂ ਵਧੇਰੇ ਦਿਲਚਸਪ ਚੋਣਾਂ।
ਜੇਕਰ ਤੁਸੀਂ ਇਸਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਕਰ ਲੈਂਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਖਿਡਾਰੀ ਮੌਤ ਨੂੰ ਸਿਰਫ਼ ਸਹਿਣ ਹੀ ਨਹੀਂ ਕਰਨਗੇ। ਉਹ ਇਸ 'ਤੇ ਨਿਰਭਰ ਹੋ ਜਾਣਗੇ। ਹਰ ਰਨ ਅਗਲੇ ਰਨ ਲਈ ਇੱਕ ਅਗਾਊਂ ਭੁਗਤਾਨ (down payment) ਬਣ ਜਾਂਦਾ ਹੈ। ਖੇਡ ਰੀਸਟਾਰਟਾਂ ਦੀ ਇੱਕ ਲੜੀ ਨਹੀਂ ਰਹਿੰਦੀ, ਸਗੋਂ ਇੱਕ ਸਿੰਗਲ, ਲਗਾਤਾਰ ਚੜ੍ਹਾਈ ਬਣ ਜਾਂਦੀ ਹੈ।
