﻿1
00:00:04,460 --> 00:00:05,240
‫أهلا ومرحبا.

2
00:00:05,240 --> 00:00:10,250
‫في هذه المحاضرة ، سنقوم بإنشاء وضع ألعاب محمول قاتل ، والذي سيكون مجرد

3
00:00:10,250 --> 00:00:17,270
‫واحد من أوضاع اللعبة الممكنة التي يمكننا إنشاؤها بسبب وجود طريقة قتل افتراضية يمكن استدعاؤها على

4
00:00:17,270 --> 00:00:19,940
‫أي من أوضاع اللعبة التي نريدها.

5
00:00:19,970 --> 00:00:24,560
‫دعونا نتعمق ونرى كيف سنقوم بتنفيذ هذه الطريقة الافتراضية.

6
00:00:25,540 --> 00:00:28,640
‫لذلك نود أن تكون لعبتنا قادرة على إنهاء.

7
00:00:28,660 --> 00:00:29,760
‫ماذا يعني أن تنتهي اللعبة؟

8
00:00:29,770 --> 00:00:34,990
‫هذا يعني أننا نذهب إلى نوع من الحالة حيث نكون نحن أو خسرنا.

9
00:00:34,990 --> 00:00:37,240
‫نقوم بإبلاغ اللاعب باستخدام بعض واجهة المستخدم.

10
00:00:37,270 --> 00:00:40,810
‫نمنحهم خيار إعادة التشغيل وتشغيله مرة أخرى.

11
00:00:41,050 --> 00:00:43,020
‫شيء على هذا المنوال.

12
00:00:43,030 --> 00:00:46,900
‫عادةً ما تكون الفئات المعنية بهذا الوضع عبارة عن وضع لعب.

13
00:00:46,900 --> 00:00:52,420
‫وضع اللعبة مسؤول عن تحديد القواعد المتعلقة باللعبة ، مثل من ربح ومن خسر.

14
00:00:52,780 --> 00:00:56,470
‫ومن أجل ذلك ، سنحتاج إلى معرفة من يُقتل.

15
00:00:56,470 --> 00:01:02,500
‫لذلك سيكون لدينا هذه الطريقة الافتراضية هنا تسمى Pawn Killed ، والتي سيتم استدعاؤها من

16
00:01:02,500 --> 00:01:09,370
‫بيدق مطلق النار لدينا عندما يموت ، سواء كان ذلك هو الذكاء الاصطناعي أم لا أو اللاعب الذي يقوم بالموت.

17
00:01:10,360 --> 00:01:15,310
‫علاوة على ذلك ، أود إضافة القليل من التعقيد هنا ، وهو أنه سيكون لدينا أوضاع لعب

18
00:01:15,310 --> 00:01:18,550
‫مختلفة مشتقة من وضع لعبة إطلاق النار الرئيسي.

19
00:01:18,550 --> 00:01:20,320
‫سيقومون بتنفيذ وضع اللعبة هذا.

20
00:01:20,320 --> 00:01:21,580
‫هذا ما يعنيه السهم هنا.

21
00:01:21,580 --> 00:01:25,840
‫غالبًا ما تكون الطريقة التي يسير بها السهم غير منطقية بعض الشيء ، لكن اقتلهم جميعًا.

22
00:01:25,840 --> 00:01:33,310
‫يرث وضع اللعبة من وضع لعبة مطلق النار ويتجاوز البيدق المقتول من أجل العد العكسي واتخاذ قرار

23
00:01:33,310 --> 00:01:35,770
‫مختلف بشأن قواعد اللعبة.

24
00:01:35,770 --> 00:01:41,980
‫لهذا السبب أرغب في وضع طريقة قتل البيدق الافتراضية في وضع لعبة مطلق النار الأصل ثم

25
00:01:42,130 --> 00:01:48,130
‫تنفيذها أو تجاوزها مرة أخرى في وضع قتل جميع الألعاب ، والذي سيكون وضع اللعبة الذي

26
00:01:48,130 --> 00:01:49,570
‫نطبقه لأنفسنا.

27
00:01:49,570 --> 00:01:54,490
‫وقد تختار القيام بأوضاع لعب مختلفة حيث قد ترغب فقط في قتل عدد معين من الأعداء

28
00:01:54,490 --> 00:01:58,450
‫في المستوى بدلاً من قتلهم جميعًا أو شيء من هذا القبيل.

29
00:01:58,450 --> 00:02:00,670
‫ربما استولت على العلم ، شيء مختلف.

30
00:02:01,900 --> 00:02:08,560
‫لكن ما سيحدث بشكل أساسي هو أن مطلق النار - سيجد وضع اللعبة الذي يحتوي على وضع

31
00:02:08,560 --> 00:02:13,060
‫لعبة إطلاق النار من النوع وسيطلق عليه - تم قتله.

32
00:02:13,060 --> 00:02:19,060
‫وبعد ذلك ، اعتمادًا على أي تطبيق موجود بالفعل ، سيتم الانتقال إلى

33
00:02:19,060 --> 00:02:21,250
‫التنفيذ عبر التجاوز.

34
00:02:21,910 --> 00:02:28,390
‫الآن ، هناك تعقيد آخر هنا وهو أن منطق واجهة المستخدم الخاص بنا ومنطق إعادة التشغيل هو أمر يجب

35
00:02:28,390 --> 00:02:35,200
‫أن يحدث في واجهة مستخدم وحدة التحكم في المشغل عمومًا كونها من اختصاص اللاعب وليس شيئًا عالميًا مثل

36
00:02:35,200 --> 00:02:36,310
‫وضع اللعبة.

37
00:02:36,340 --> 00:02:42,850
‫هذا صحيح بشكل خاص في الألعاب متعددة اللاعبين لأن وضع اللعبة غير موجود بالفعل على جهاز اللاعب

38
00:02:42,850 --> 00:02:45,160
‫، إنه موجود فقط على الخادم.

39
00:02:45,160 --> 00:02:49,270
‫لذلك يجب أن تحدث أي عناصر من واجهة المستخدم في وحدة تحكم المشغل.

40
00:02:49,540 --> 00:02:52,690
‫هذا تعقيد لا داعي للقلق بشأنه لأن هذه ليست لعبة متعددة

41
00:02:52,690 --> 00:02:57,430
‫اللاعبين ، ولكن لا يزال من الجيد استخدام الفئات لما يُتوقع استخدامها في Unreal.

42
00:02:57,880 --> 00:03:04,750
‫لذا فإن وحدة تحكم اللاعب ، فئة وحدة التحكم في مشغل الجذر الفعلي لديها طريقة افتراضية تسمى اللعبة انتهت

43
00:03:04,750 --> 00:03:12,610
‫خصيصًا لهذا الغرض بحيث يمكن لوضع اللعبة استدعاء هذه الطريقة ويمكننا تنفيذها في وحدة تحكم لاعب مطلق النار الخاصة بنا

44
00:03:12,610 --> 00:03:17,770
‫للقيام بواجهة المستخدم ، إعادة التشغيل ، الكل هذا النوع من الأشياء.

45
00:03:17,830 --> 00:03:23,590
‫لكننا سنحتاج إلى الاتصال به من وضع لعبتنا عندما نقرر أن اللعبة قد انتهت.

46
00:03:23,590 --> 00:03:28,270
‫لذلك سنسمي اللعبة الافتراضية قد انتهت على وحدة تحكم مشغل الجذر.

47
00:03:28,390 --> 00:03:33,910
‫وبعد ذلك ، نظرًا لأن وحدة التحكم في مشغل الجذر هي في الواقع مطلق النار ، سينتهي الأمر بوحدة التحكم في المشغل

48
00:03:33,910 --> 00:03:35,290
‫بالعودة والاتصال.

49
00:03:35,290 --> 00:03:36,130
‫انتهت هذه اللعبة.

50
00:03:36,130 --> 00:03:42,040
‫لذلك يبدو أنه طريق دائري سنقوم بالاتصال به من بيدق مطلق النار الخاص بنا عبر وضع لعبة مطلق النار إلى وضع

51
00:03:42,040 --> 00:03:46,570
‫اللعبة الأكثر قاتلًا إلى وحدة تحكم اللاعب إلى وحدة تحكم لاعب مطلق النار.

52
00:03:46,570 --> 00:03:52,360
‫لكن هذا يتيح لنا قدرًا كبيرًا من المرونة من حيث القول ، حسنًا ، يمكننا المزج والتوفيق بين وحدات تحكم اللاعب المختلفة

53
00:03:52,360 --> 00:03:55,900
‫التي ستعرض واجهة المستخدم بطرق مختلفة ، بمستويات مختلفة.

54
00:03:55,900 --> 00:04:00,130
‫يمكننا المزج والتوفيق بين أوضاع اللعبة المختلفة التي ستعمل بطرق مختلفة

55
00:04:00,130 --> 00:04:02,260
‫، وهذا هو سبب تصميمها بهذه الطريقة.

56
00:04:02,260 --> 00:04:07,750
‫إنها مبالغة قليلاً بالنسبة لمشروعنا ، لكنه يوضح لك كيف يمكن أن يمتد ذلك إلى مشاريع أخرى باستخدام

57
00:04:07,750 --> 00:04:11,970
‫أوضاع لعبة Capture the Flag وأنواع مختلفة من وحدات تحكم اللاعب.

58
00:04:11,980 --> 00:04:14,500
‫لذلك دعونا نبدأ في تنفيذه.

59
00:04:14,530 --> 00:04:18,040
‫سنذهب أولاً وقبل كل شيء ، سنجد طريقة لعب الطريق.

60
00:04:18,040 --> 00:04:22,330
‫يوجد بالفعل واحد تم إنشاؤه لأنني بدأت من مشروع C ++.

61
00:04:22,330 --> 00:04:28,120
‫لدينا قاعدة وضع لعبة إطلاق النار البسيطة هذه وما أريد أن

62
00:04:28,120 --> 00:04:35,800
‫أفعله هنا هو إنشاء وظيفة عامة ستعود باطلاً وستكون - تُقتل ويجب أن نمر في -

63
00:04:35,830 --> 00:04:37,480
‫ذلك قُتل هنا.

64
00:04:37,480 --> 00:04:42,400
‫لذلك سيكون - يُدعى - يُقتل على هذا النحو.

65
00:04:42,400 --> 00:04:46,720
‫ثم في البداية ، سنجعل هذه طريقة افتراضية وسنمضي قدمًا

66
00:04:46,720 --> 00:04:50,770
‫وننشئ تطبيقًا أساسيًا لا يفعل شيئًا هنا.

67
00:04:50,770 --> 00:04:52,930
‫ثم سنقوم بإنشاء فئة فرعية.

68
00:04:52,930 --> 00:05:00,010
‫إذن ، فئة C ++ الجديدة ، ستعرض جميع الفئات وسنبحث عن مطلق النار ، وقاعدة وضع لعبة مطلق النار البسيطة

69
00:05:00,010 --> 00:05:02,230
‫كفئة أساسية لدينا.

70
00:05:02,230 --> 00:05:12,010
‫وسنطلق على هذا وضع لعبة Kill em all مثل ذلك ونمضي قدمًا وننشئ هذه الفئة.

71
00:05:12,010 --> 00:05:18,100
‫ثم عندما يتم تجميع ذلك ، أريد فقط التبديل لثانية والذهاب إلى شخصية مطلق النار الخاصة بنا.

72
00:05:18,130 --> 00:05:23,620
‫CP ويمكنك أن ترى هنا أن لدينا موتى في طريقة أخذ الضرر.

73
00:05:23,830 --> 00:05:30,490
‫الآن إذا مات هذا ، ما أريد أن أفعله هو الحصول على وضع لعبتنا واستدعاء

74
00:05:30,490 --> 00:05:31,180
‫- قتل.

75
00:05:31,210 --> 00:05:38,470
‫لذا فإن الطريقة التي نقوم بها هي أننا نبدأ بالاتصال للحصول على العالم من أجل الحصول على وضع اللعبة

76
00:05:38,470 --> 00:05:40,690
‫، ثم نحصل على وضع المصادقة.

77
00:05:40,690 --> 00:05:46,750
‫ثم ما نريد القيام به هو أن يكون وضع اللعبة هذا من النوع الصحيح ، وهو الوضع البسيط والجذر ، ووضع لعبة

78
00:05:46,750 --> 00:05:52,150
‫مطلق النار البسيط الذي يسمح لنا بعد ذلك بتبديل هذه الشخصية ، واستخدامها مع أوضاع لعب

79
00:05:52,150 --> 00:05:54,910
‫مختلفة مثل مثل التقاط أوضاع لعبة العلم.

80
00:05:55,060 --> 00:06:01,540
‫لذا ، بالطريقة التي يمكننا بها القيام بذلك ، يمكننا استخدام الأقواس الزاوية في وضع الحصول

81
00:06:01,540 --> 00:06:07,900
‫على كل لعبة هنا ، وسنقوم بوضع لعبة إطلاق نار بسيطة وسنحتاج إلى تضمين ذلك في الجزء العلوي.

82
00:06:08,320 --> 00:06:15,270
‫لذلك تتضمن التجزئة قاعدة وضع لعبة إطلاق النار البسيطة.

83
00:06:15,550 --> 00:06:18,070
‫إذن لم أحصل على اسم الفصل بالكامل بشكل صحيح؟

84
00:06:18,070 --> 00:06:18,700
‫أعتقد ذلك.

85
00:06:18,700 --> 00:06:22,180
‫ستكون قاعدة بسيطة لوضع لعبة إطلاق النار.

86
00:06:22,360 --> 00:06:23,710
‫هذا ما نحاول الحصول عليه.

87
00:06:24,130 --> 00:06:29,290
‫ويمكننا المضي قدمًا وتخزين ذلك في مؤشر متغير ، دعنا نسميه وضع اللعبة.

88
00:06:29,290 --> 00:06:35,860
‫ثم ما نريد فعله هو في هذا السطر الجديد ، ربما نريد التحقق من أننا حصلنا على هذا وأنه ليس مؤشرًا

89
00:06:35,860 --> 00:06:36,790
‫فارغًا.

90
00:06:36,790 --> 00:06:40,630
‫لذا فإن وضع اللعبة لا يساوي مؤشر فارغ.

91
00:06:40,630 --> 00:06:47,680
‫ثم إذا لم يكن مساويًا لمؤشر فارغ ، فهذا هو المكان الذي نريد أن نطلق عليه اسم لعبة وضع السهم قتل البيدق

92
00:06:47,680 --> 00:06:50,590
‫وقتل البيدق ، فهل هذا هو الحال؟

93
00:06:50,590 --> 00:06:55,150
‫حتى الآن أصبح وضع اللعبة على دراية بقتل بيدق.

94
00:06:55,170 --> 00:07:00,460
‫تحدي صغير لك لتجاوز وضع قتلهم جميعًا حتى تتمكن من ذلك.

95
00:07:00,580 --> 00:07:06,880
‫قم بتسجيل الخروج عندما يتم قتل - وضبط ذلك على أنه وضع اللعبة الافتراضي في خريطتك.

96
00:07:07,210 --> 00:07:09,680
‫لذا آمل أن تكون قد خضت هذا التحدي الصغير.

97
00:07:09,700 --> 00:07:11,800
‫سنمضي قدمًا وننفذ.

98
00:07:11,800 --> 00:07:17,740
‫لذلك سأفعل ذلك عن طريق نسخ القسم العام من قاعدة وضع لعبة التصويب البسيطة ، ومن الصعب

99
00:07:17,740 --> 00:07:19,540
‫تتبع كل هذه الأشياء.

100
00:07:19,540 --> 00:07:24,070
‫ثم سننتقل إلى قاعدة وضع اللعب لدينا ، والتي ترث منها.

101
00:07:24,310 --> 00:07:31,360
‫وسنقوم باللصق في الطريقة الافتراضية وسنضيف الكلمة الأساسية للتجاوز للتأكد من أننا نتجاوز

102
00:07:31,360 --> 00:07:33,850
‫هذه الطريقة بشكل صحيح.

103
00:07:34,730 --> 00:07:39,620
‫ثم سأقوم بإنشاء تطبيق في C ++ لقاعدة وضع لعبة KML الخاصة بنا.

104
00:07:40,100 --> 00:07:42,980
‫هذا هو المكان الذي يجب أن نحصل فيه على رسالة السجل هذه.

105
00:07:42,980 --> 00:07:48,430
‫ولكي نكون حذرين للغاية ، نعلم أنه لا يوجد شيء في التنفيذ ، لكنك لا تعرف أبدًا.

106
00:07:48,440 --> 00:07:52,130
‫قد تتغير الأمور لاحقًا وقد نتعرض للعض في القنبلة.

107
00:07:52,140 --> 00:07:55,250
‫لذلك نريد قتل بيدق.

108
00:07:56,310 --> 00:07:59,160
‫سوبر - قتل مع - قتل.

109
00:07:59,190 --> 00:08:00,060
‫من المنطقي.

110
00:08:00,330 --> 00:08:09,630
‫وبعد ذلك نريد أن نقوم بتسجيل الدخول هنا بشكل أساسي بالقول إن - قُتل ويمكننا معرفة ما إذا كان ذلك يعمل

111
00:08:09,630 --> 00:08:17,940
‫بالانتقال إلى Unreal والتجميع ، ثم الانتقال إلى عنصر المخططات في شريط الأدوات وتحديد ذلك

112
00:08:17,940 --> 00:08:23,250
‫في إعدادات المشروع وضع لعبتنا الافتراضي الذي نريده.

113
00:08:23,250 --> 00:08:29,040
‫إذا حددنا وضع اللعبة ، والفئة الأساسية ، فنحن نريدها أن تكون هي وضع اللعبة المستند إلى KML.

114
00:08:29,040 --> 00:08:31,770
‫في الأساس ، انطلق وافعل ذلك.

115
00:08:31,770 --> 00:08:35,640
‫في الواقع ، هذا ليس تمامًا ما نريد أن نفعله إذا ذهبنا واخترنا.

116
00:08:35,640 --> 00:08:44,160
‫أردنا في الواقع أن نكون مخططًا ثانويًا لذلك ولدينا بالفعل مخطط طفل لديه الكثير من الأشياء التي تم

117
00:08:44,160 --> 00:08:45,060
‫إعدادها.

118
00:08:45,060 --> 00:08:47,820
‫لذلك دعونا نقوم بعمل إعادة الأبوة والأمومة هناك.

119
00:08:48,390 --> 00:08:54,090
‫سنذهب إلى الجذور ، وسنجد وضع لعبة إطلاق النار BP ، الذي لدينا هنا.

120
00:08:54,240 --> 00:09:02,790
‫سنقوم بإعادة تسمية BP هذا ، ونقتل كل وضع اللعبة ، وبعد ذلك يمكننا فتح ذلك ، وإرساء النافذة ، وفتح

121
00:09:02,790 --> 00:09:10,500
‫محرر المخطط الكامل ، والانتقال إلى إعدادات الفصل وتغيير الوالد إلى وضع لعبة KML ، C ++

122
00:09:10,500 --> 00:09:11,940
‫بشكل أساسي .

123
00:09:12,030 --> 00:09:18,030
‫وبهذه الطريقة يجب أن نقوم بتشغيل الكود الصحيح إذا انتقلنا إلى رسالتنا إلى سجل الإخراج

124
00:09:18,030 --> 00:09:25,740
‫الخاص بنا وقمنا بالضغط على زر التشغيل ثم قتلنا شخصية ما ، لا يبدو أن لدينا مشكلة في الإعداد الصحيح.

125
00:09:25,740 --> 00:09:35,010
‫لذلك إذا عدنا إلى الإعدادات الافتراضية للفئة وقمنا بتغيير الفئة الافتراضية - إلى كونها شخصية تصويب BP ، فيجب

126
00:09:35,010 --> 00:09:36,900
‫أن يكون ذلك صحيحًا.

127
00:09:36,900 --> 00:09:39,330
‫حفظ وجمع فقط في حالة حدوث ذلك بشكل خاطئ.

128
00:09:39,330 --> 00:09:42,000
‫ثم تحقق من المخططات المنسدلة هنا.

129
00:09:42,000 --> 00:09:44,700
‫تم تحديد وضع لعبة KML ، وهو وضع C ++.

130
00:09:44,700 --> 00:09:49,530
‫لذلك نريد بالفعل اختيار المخطط هنا والمضي قدمًا والضغط على التشغيل.

131
00:09:49,530 --> 00:09:50,850
‫الآن لدينا بيدقنا.

132
00:09:50,850 --> 00:09:57,330
‫يمكننا المضي قدمًا وقتل هذا الرجل ويمكنك أن ترى أنه تم طباعة بيدق برسالة سجل.

133
00:09:57,330 --> 00:10:00,090
‫لذلك هذا يعمل بشكل خيالي.

134
00:10:00,240 --> 00:10:05,580
‫الآن في المحاضرة التالية ، سننظر في الجزء الثاني من هذا ، وهو أن اللعبة

135
00:10:05,580 --> 00:10:12,870
‫قد انتهت عندما نريد بالفعل إنهاء اللعبة وأن نكون قادرين على إعادة التشغيل من هناك.

136
00:10:12,960 --> 00:10:15,930
‫لذلك سوف أراك في تلك المحاضرة.

